Как автоматически перезагрузиться после выполнения команды

Я устанавливаю обновления на связке машин, и я просто хочу запустить:

sudo apt-get update
sudo apt-get upgrade
sudo reboot

все сразу на всех машинах (после нескольких часов, конечно) и позволить им работать, не требуя моего ввод для паролей. Однако приведенные выше команды не работают, потому что все они требуют разрешения root, и поэтому каждый раз требуется мой пароль. Запуск их всех под одним sudo, посланным &&, похоже, не работает. Кроме того, если в обновлении есть заметки о выпуске, он отобразит все заметки о выпуске и остановится до тех пор, пока я не выйду из less.

Как это сделать?

1
задан 8 January 2015 в 02:37

2 ответа

Итак, вы не хотите, чтобы ваш пользователь вводил пароль для использования sudo? Вы можете добавить строку, подобную этой, в /etc/sudoers или файл в /etc/sudoers.d/

username  ALL=(ALL) NOPASSWD: ALL
Или просто разрешить несколько таких программ, как reboot и apt-get:
username ALL=(ALL) NOPASSWD: /sbin/reboot, /usr/bin/apt-get
Возможно, вы захотите изучить некоторые опции apt-get тоже:
   -q, --quiet
       Quiet; produces output suitable for logging, omitting progress
       indicators. More q's will produce more quiet up to a maximum of 2.
       You can also use -q=# to set the quiet level, overriding the
       configuration file. Note that quiet level 2 implies -y; you should
       never use -qq without a no-action modifier such as -d, --print-uris
       or -s as APT may decide to do something you did not expect.
       Configuration Item: quiet.

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

   --force-yes
       Force yes; this is a dangerous option that will cause apt to
       continue without prompting if it is doing something potentially
       harmful. It should not be used except in very special situations.
       Using force-yes can potentially destroy your system! Configuration
       Item: APT::Get::force-yes.

Или вы можете слепо проложить несколько строк новой строки или «q» в apt-get, я использовал один пакет, который игнорировал бы опции apt, такие как -y и дождитесь нажатия клавиши (возможно, в сценарии preinst или postinst). Можно попробовать что-то вроде:

username  ALL=(ALL) NOPASSWD: ALL
Или просто разрешить несколько таких программ, как reboot и apt-get:
username ALL=(ALL) NOPASSWD: /sbin/reboot, /usr/bin/apt-get

И если вы устанавливаете одни и те же пакеты на каждом компьютере, вам не нужно update и upgrade каждый в Интернете, вы можете загрузить все необходимые файлы .deb один раз с помощью:

[!d2 ]

sudo apt-get install --download-only [packages]
или
sudo apt-get upgrade --download-only

Или просто разрешить несколько таких программ, как reboot и apt-get:

, затем установить их все из локальной / общей папки с помощью
   -q, --quiet
       Quiet; produces output suitable for logging, omitting progress
       indicators. More q's will produce more quiet up to a maximum of 2.
       You can also use -q=# to set the quiet level, overriding the
       configuration file. Note that quiet level 2 implies -y; you should
       never use -qq without a no-action modifier such as -d, --print-uris
       or -s as APT may decide to do something you did not expect.
       Configuration Item: quiet.

   -y, --yes, --assume-yes
       Automatic yes to prompts; assume "yes" as answer to all prompts and
       run non-interactively. If an undesirable situation, such as
       changing a held package, trying to install a unauthenticated
       package or removing an essential package occurs then apt-get will
       abort. Configuration Item: APT::Get::Assume-Yes.

   --force-yes
       Force yes; this is a dangerous option that will cause apt to
       continue without prompting if it is doing something potentially
       harmful. It should not be used except in very special situations.
       Using force-yes can potentially destroy your system! Configuration
       Item: APT::Get::force-yes.

3
ответ дан 24 May 2018 в 00:21
  • 1
    Я не думаю, что строка, которую вы предлагаете добавить в файл sudoers, должна использоваться. Пользователь может легко сломать свою систему, поскольку ввод пароля заставляет задуматься о том, хорошо ли запустить эту команду. Тем не менее, я использую эту строку, чтобы удалить ввод пароля из выключения, отключения питания и перезагрузки: username ALL=(ALL) NOPASSWD: /sbin/poweroff, /sbin/reboot, /sbin/shutdown, поскольку я часто запускаю эти команды, и здесь пароль меня раздражает. – s3lph 8 January 2015 в 03:48
  • 2
    @the_Seppi. Это хорошая идея, все зависит от того, является ли пользователь обычным пользователем или «только настройка». пользователь-администратор, который никогда не захочет получать пароль sudo. Я добавлю в строку только те & amp; apt-get тоже, спасибо – Xen2050 8 January 2015 в 03:54

Самое простое решение, если вы «root»:

apt-get -y update && apt-get -y upgrade && reboot

И если вы пользователь в системе, сначала убедитесь, что пользователь включен в sudoers, а затем введите: [ ! d1]

sudo apt-get -y update && apt-get -y upgrade && reboot
0
ответ дан 24 May 2018 в 00:21

Другие вопросы по тегам:

Похожие вопросы: