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

Проверьте, соответствуют ли какие-либо параметры скрипта bash строке
Как Grep до определенного символа или строки
Запуск devcon.exe правильно (включение / выключение устройства из командной строки в Windows 10)
WSL / Bash в Windows 10: не удалось создать пользователя UNIX, возвращен код ошибки 10
Удалить пустые колонки из CSV файл с bash-скрипт
Как сменить оболочку по умолчанию в Cygwin?
Архивирование файлов размером более 2 ГБ в оболочке bash
Как передать параметр в команду linux в конце строки
Windows Bash не откроется в 10-летнем обновлении
Ошибки синтаксического анализа из-за специальных символов в записях DNS txt
частичное завершение пути к каталогу в стиле emacs в bash
команда cat выводит весь каталог при использовании в скрипте bash
Как удалить файл с именем, начинающимся с "- r", используя cli [дубликат]
Как заставить Network Manager повторно сканировать соединения?
Удалить все файлы, кроме некоторых в bash, без CD в каталог?

Укажите пароль SU в скрипте bash, внутри скрипта?

цель состоит в том, чтобы перезагрузить машину, если она не получает команду abort от пользователя. Проблема в том, что при настройке терминалов пользователь должен указать пароль SU для shutdown,init,reboot, etc. команды. Нам интересно, можно ли предоставить пароль в самом сценарии bash, возможно, используя stdin.
то есть:

#!/bin/bash
# (script)
echo "Terminal will restart in 60s, Ctrl+C to cancel."
sleep 60
su - root -c "init 6" < "password"

мы попробуем поместить пароль в файл и stdin, что.

Edit:sudo и expect вне как разрешения как их установка будет невозможна из-за огромного количества документов для получения разрешения и ограниченного периода времени. Также мы хотели бы использовать init 6 или shutdown -r, а не reboot.

5
задан Kendall
источник

3 ответов

Вы можете настроить sudo, чтобы позволить любому пользователю запускать определенные команды, указанные вами, как root, без необходимости вводить пароль. См.это ошибка сервера статья описание того, как настроить sudo.

затем в скрипте используйте sudo, а не su:

sudo перезагрузка

2
отвечен Mox 2017-04-13 12:14:40
источник

AFAIK вы не можете делать то, что вы просите. При использовании stdin с <, пароль будет введен через stdin намного раньше, чем оболочка действительно запросит пароль. Вы должны попробовать использовать sudo. Если нет, то лучше всего chmod reboot и дайте себе права на выполнение.

1
отвечен darnir 2012-08-08 13:57:22
источник

вы можете сделать это с помощью socat:

user@host$ (sleep 1; echo SuperSecr3t) | socat - EXEC:'su -c id',pty
Password: ### No input here, just wait 1sec
uid=0(root) gid=0(root) groups=0(root)
0
отвечен jrm 2015-03-10 03:46:09
источник

Другие вопросы bash stdin su