Я могу выполнить несколько строк sudo команды?

Этот вопрос касается другого вопроса. Если бы я вставляю предложенный код @kyodake, внезапно в терминале он работал бы?

Или я должен пойти линию за линией?

7
задан 13 April 2017 в 05:24

2 ответа

Существует несколько подходов к разрешению нескольким командам, выполненным с sudo.

Первый удовлетворяет Вашему примеру использования лучше всего. Другие добавляются ради исследования альтернатив; они не могут удовлетворить Вашей конкретной потребности, но могут пригодиться Вам в будущем или других пользователях.

Подход № 1: Самый Чистый и самый простой

Поместите все в сценарий, например myscript.sh, сделайте исполняемый файл файла с chmod 755 myscript.sh, и запущенный тот скрипт с sudo myscript.sh

Подход № 2: длинная строка команд

Вам нужно что-то с полномочиями суперпользователя выполнить несколько команд. Это было бы оболочкой, (любая оболочка в этом отношении, bash или sh ). Оболочки имеют a -c флаг, который говорит им выполнять команду или ряд команд, разделенных точкой с запятой ;. Простой пример: sudo bash -c 'apt-get update; apt-get upgrade'. В частности, ответ kyodake может быть восстановлен как так:

sudo bash -c 'apt-get update;apt-get install --reinstall aptitude deborphan mate-desktop; aptitude remove '?and(?reverse-depends(unity),?not(?reverse-depends(?exact-name(mate-desktop))))';aptitude remove '?and(?reverse-depends(ubuntu),?not(?reverse-depends(?exact-name(mate-desktop))))';aptitude remove '?and(?reverse-depends(gnome),?not(?reverse-depends(?exact-name(mate-desktop))))';apt-get install --reinstall mate-desktop;deborphan;apt-get --purge remove $(deborphan);deborphan --libdevel;apt-get --purge remove $(deborphan --libdevel);deborphan --find-config;dpkg --purge $(deborphan --find-config);apt-get autoremove;apt-get clean;reboot'

Длинный? Да. Этот подход работает лучше, когда необходимо выполнить всего несколько команд с sudo.

Подход № 3: проигрывание с sudo тайм-аутом

По умолчанию, sudo полномочие испытывает таймаут после 15 минут. Таким образом, если Вы уверены, что все те команды не займут у этого много времени, Вы могли бы выполнить первую команду с sudo и будет запрошен пароль; для всех последующих команд Вам не предложат, но все еще необходимо ввести sudo.

Подход № 4: использование корневой оболочки

Поскольку kyodake предложил себя в ответе, входе в систему корневой оболочки с sudo -i использовать полномочие пользователя root до Вас exit. Обратите внимание на то, что это не рекомендуется из соображений безопасности. Если Вы не будете на 100% уверены, что не забудете выходить из системы, после того как Вы сделаны, работая, и никто не войдет в Вашу корневую оболочку, затем... использовать этот подход по Вашему усмотрению.

10
ответ дан 23 November 2019 в 06:23

вставка Копии сценарий будет работать , и команды будут выполняться один за другим;

Однако проблема здесь $ / # символы в начале каждой строки, которая повредила бы каждую команду; удаление их обязательно прежде, чем запустить скрипт всегда .

я думаю самое быстрое / самый прямой способ сделать, это должно было бы обработать его и выполнять его одновременно использование следующего метода:

  • Выбор сценария, пропуск первой строки, как это (т.е. включая эти # символы в запуске)
  • Копирование сценария с помощью Ctrl + C
  • , Совершающий нападки Ctrl + Высокий звук + T
  • , Вводящий sed 's/^.//' <<EOF | sudo bash
  • , Удар Вводит
  • , Вставляющий сценарий с помощью Ctrl + Сдвиг + , V
  • , Совершающих нападки , Вводят
  • , Вводящий EOF
  • , Удар Входит снова

Преимущества против создания сценария нарочно и выполнения его:

  1. Это более быстро
  2. нет никакой потребности создать любой файл
  3. нет никакой потребности обработать сценарий для удаления $ / #, символы

Вот являются примером с помощью этого сценария:

# whoami
# echo command1
# echo command2
# echo command3
ubuntu@ubuntu ~ % sed 's/^.//' <<EOF | sudo bash
ubuntu@ubuntu ~ pipe heredoc> # whoami
ubuntu@ubuntu ~ pipe heredoc> # echo command1
ubuntu@ubuntu ~ pipe heredoc> # echo command2
ubuntu@ubuntu ~ pipe heredoc> # echo command3
ubuntu@ubuntu ~ pipe heredoc> EOF
root
command1
command2
command3
1
ответ дан 23 November 2019 в 06:23

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

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