From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on sa.local.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM autolearn=ham autolearn_force=no version=3.4.1 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=subject:to:references:from:cc:message-id:date:user-agent :mime-version:in-reply-to:content-language; bh=d4Mb/P+LihFPm9geyXveoTfbmpos4ol9dQHdHeliyCU=; b=qds0Y7ogX4ZxPzR64UTAQMJWteNRKkwslVyXj901AhxGt5zW9rzmw1+hPx47eFfRNd 2zA4V09CT4UcvEFyjtXzE3p1Hn7+qhpjpyePxoivIr2PI+HUqZIiKh9tUOG0CvQkBugf TpCWZOI2dBar0evSjcqDR7Efn6SaF9ST+/fcZJ5546TSRVhyfjqCrwYw/pl2MWFI9Ta1 +qznmqT2f5aCuuLjrVkamliYidtPA2Lq7JDRKwgPCF2FZzMWR48Ygi6VolkZjPLY6LFq QgxifvoVum8EkGxwaHawrNGh7rawNJrdbe4WLQhQ0IYorSlaZ6YKu6scnN2YtJSHHdL8 51Mg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:subject:to:references:from:cc:message-id:date :user-agent:mime-version:in-reply-to:content-language; bh=d4Mb/P+LihFPm9geyXveoTfbmpos4ol9dQHdHeliyCU=; b=Jw62t5geRZBTskafN/nS5qpEcuhWpds7beLcO5NWRZySJCSq4GPYYFj7Jf6OhkO/Tf srDTxqUn+tuLxDrjSzNsGXwFD6msbRo78HlN/Q5kKZ30bqGwmFtqonVOjUeg70Z2tWC0 7HF49MxYBpLPaGKT/vU16ft/Wq8iNSokYAC1yjLyTh++eXD8OqW+nOgGi/e0DcvJaOHd 4OuGeSlvWrSbF+B723R9Ivv+YgZMCrgerNe1mcCEhD6EcAxQWCRJxYLWpmKkrx8kiJBF g6Es8mlxuN67Tz1m+0ZhCJ97jdekrutIwsYRM7x6poioD13ZrKmVp3F3KWBi59mt39tn 8tWw== X-Gm-Message-State: AHQUAuZsj7XHYgv5OYJ8TDQ/ZcmhBqsM8FlrsTlQrvDP1IYZUYNCGfGv d2PxLCOGeBUBganGPxAfb4I= X-Google-Smtp-Source: AHgI3IZoJE7u1nlbWV0a0skSQE28nLE2uTmgj2rxBYQ8/gaPqS/RyvUauJYJKACB4pz0FQcO5yTrEw== X-Received: by 2002:a2e:98d4:: with SMTP id s20-v6mr9907552ljj.172.1549659232370; Fri, 08 Feb 2019 12:53:52 -0800 (PST) To: sisyphus@lists.altlinux.org References: <201902051613.44754.a_s_y@sama.ru> <201902071615.29495.a_s_y@sama.ru> <201902081137.13612.a_s_y@sama.ru> From: Leonid Krivoshein Message-ID: Date: Fri, 8 Feb 2019 23:52:37 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <201902081137.13612.a_s_y@sama.ru> Content-Type: multipart/mixed; boundary="------------67BCAF08AF03EEB4672B5DE8" Content-Language: ru Cc: Nikolai Kostrigin Subject: Re: [sisyphus] =?utf-8?q?grub-reboot_=D0=B8_grub-set-default=3A_--lis?= =?utf-8?b?dCDQuCDQv9GA0L7QstC10YDQutCwINCy0LLQvtC00LA=?= X-BeenThere: sisyphus@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Sisyphus discussions List-Id: ALT Linux Sisyphus discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 08 Feb 2019 20:53:55 -0000 Archived-At: List-Archive: List-Post: This is a multi-part message in MIME format. --------------67BCAF08AF03EEB4672B5DE8 Content-Type: text/plain; charset=koi8-r; format=flowed Content-Transfer-Encoding: 8bit 08.02.2019 10:37, Sergey пишет: > On Thursday 07 February 2019, Yuri Khachaturyan wrote: > >> P.S. 1>0 Advanced options for ALT Linux 1.9.3 Server Light beta>ALT Linux 1.9.3 Server Light beta, vmlinuz >> >> После перезагрузки все отрабатывает, но как понять что нет ошибки? > > Всё ещё никак, grub-entries только показывает список. И, по > идее, ничего больше делать и не должен. Проверка должна быть > в grub-reboot и grub-set-default, но её там (пока?) нет. Проверка по идее должна быть. Но её там не будет. Апстрим не примет проверку без ID, а почему не видится возможным проверять ID, я мотивировал в баге. Исходя из этого новый код может использовать следующие конструкции: grub-entries -c "$item" && grub-reboot "$item" grub-entries -c "$item" && grub-set-default "$item" При этом $item может быть либо всеми числами, либо всеми именами, как в примере документации на сайте gnu.org. P.S.: Финальный вариант скрипта вместе с man страницей прилагаю! -- Best regards, Leonid Krivoshein. --------------67BCAF08AF03EEB4672B5DE8 Content-Type: text/plain; charset=UTF-8; name="grub-entries" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="grub-entries" #!/bin/sh -efu ### This file is covered by the GNU General Public License ### version 2 or later. ### ### Copyright (C) 2019 ALT Linux Team ### Author: Leonid Krivoshein numbers_only=0 titles_only=0 search_item= progname="${0##*/}" grubmenu="/boot/grub/grub.cfg" show_help() { cat <<-EOF $progname - Show default or specified grub menu. Usage: $progname [options] Options: -f, --config= Specify path to the grub config. -n, --numbers Show only menu item sequence numbers. -t, --titles Show only menu item names. -c, --check= Specify menu item to validate. -V, --version Show script version and exit. -h, --help Show this help message and exit. EOF exit 0 } show_version() { cat <<-EOF $progname version 1.0 Copyright (C) 2019, ALT Linux Team EOF exit 0 } show_usage() { [ -z "$*" ] || echo "$*" >&2 echo "Try '$progname --help' for more information." >&2 exit 1 } parse_args() { local opts="+f:,n,t,c:,V,h" local longopts="config:,numbers,titles,check:,version,help" opts=$(getopt -n "$progname" -o "$opts" -l "$longopts" -- "$@") || show_usage "Invalid command-line arguments." eval set -- "$opts" while [ $# -gt 0 ]; do case "$1" in -f|--config) shift; grubmenu="$1";; -n|--numbers) numbers_only=1; titles_only=0;; -t|--titles) numbers_only=0; titles_only=1;; -c|--check) shift; search_item="$1";; -V|--version) show_version;; -h|--help) show_help;; --) shift; break;; -*) show_usage "Unrecognized option: '$1'";; *) break;; esac shift done [ $# -eq 0 ] || show_usage "Unrecognized arguments: '$*'" } show_menu() { local mode title number prefix entry=0 itemno=0 cat "$grubmenu" | sed \ -re '/^\s*(menuentry\s+|submenu\s+|})/!d' \ -re "s/^\s*menuentry\s+'([^']+)'.*\$/M\t\1/g" \ -re 's/^\s*menuentry\s+"([^"]+)".*$/M\t\1/g' \ -re "s/^\s*submenu\s+'([^']+)'.*\$/S\t\1/g" \ -re 's/^\s*submenu\s+"([^"]+)".*$/S\t\1/g' \ -re "s/^\s*}\s*\$/E\t-/g" | while read mode title; do case "$mode" in M) if [ $numbers_only -ne 0 ]; then echo -e "${number}${itemno}" elif [ $titles_only -ne 0 ]; then echo -e "${prefix}${title}" else echo -e "${number}${itemno}\t${prefix}${title}" fi itemno=$(($itemno + 1)) entry=1 ;; S) number="${number}${itemno}>" prefix="${prefix}${title}>" itemno=0 ;; *) if [ $entry -ne 0 ]; then entry=0 elif [ -n "$number" ]; then number="${number%>}" prefix="${prefix%>}" case "$number" in *">"*) itemno="${number##*>}" number="${number%>*}>" prefix="${prefix%>*}>" itemno=$(($itemno + 1)) ;; *) itemno=$number itemno=$(($itemno + 1)) prefix= number= ;; esac fi ;; esac done } check_item() { local cnt numbers_only=1; titles_only=0 cnt=$(show_menu | grep -swc "$search_item" ||:) [ "$cnt" != "1" ] || exit 0 numbers_only=0; titles_only=1 cnt=$(show_menu | grep -swc "$search_item" ||:) [ "$cnt" != "1" ] || exit 0 [ -z "$cnt" -o "$cnt" = "0" ] && echo "$search_item: menu item not found." >&2 || echo "$search_item: duplicate items found." >&2 exit 1 } parse_args "$@" [ -r "$grubmenu" ] || show_usage "$grubmenu: config file not found." [ -z "$search_item" ] || check_item show_menu --------------67BCAF08AF03EEB4672B5DE8 Content-Type: text/plain; charset=UTF-8; name="grub-entries.8" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="grub-entries.8" .\" Copyright 2019 ALT Linux Team .\" Lincensed under GPLv2+ .TH GRUB-ENTRIES 8 "Febrary 2019" "grub-entries (ALT Linux Team)" .SH NAME grub-entries \- simple script for show grub menu and check menu items .SH SYNOPSIS .B grub-entries [\fIoptions\fP] .SH DESCRIPTION .B grub-entries parse specified or default grub config file, list all grub menu items in the one of the three forms. Also can search specified item in menu and returns 0, if this item exists, otherwise returns non-zero value. By default, \fI/boot/grub/grub.cfg\fP config file used. .SH OPTIONS .TP 5 .BI \-f "\fR, \fP" \-\-config " filename" Specify path to the grub config. .TP 5 .BI \-n "\fR, \fP" \-\-numbers Show only menu item sequence numbers. .TP 5 .BI \-t "\fR, \fP" \-\-titles Show only menu item names. .TP 5 .BI \-c "\fR, \fP" \-\-check " menuitem" Specify menu item to validate. .TP 5 .BI \-V "\fR, \fP" \-\-version Show script version and exit. .TP 5 .BI \-h "\fR, \fP" \-\-help Show help message and exit. .SH FILES .PD 0 .B /boot/grub/grub.cfg .PD .SH AUTHORS Leonid Krivoshein .SH "SEE ALSO" .BR grub-reboot (8), .BR grub-set-default (8) --------------67BCAF08AF03EEB4672B5DE8--