Поставить SU пароль в скрипте bash, внутри скрипта?
Цель состоит в том, чтобы перезагрузить компьютер, если он не получает команду прерывания от пользователя. Проблема в том, что при настройке терминалов пользователь должен предоставить пароль SU для shutdown
, init
, reboot
и т.д. команды. Нам интересно, можно ли ввести пароль в самом bash-скрипте, возможно, используя stdin. то есть:
#!/bin/bash
# (script)
echo "Terminal will restart in 60s, Ctrl+C to cancel."
sleep 60
su - root -c "init 6" < "password"
Мы попытаемся поместить пароль в файл и ввести его.
Редактировать: sudo
а также expect
Мы предлагаем решения, так как их установка будет невозможна из-за огромного количества документов для получения разрешения и ограниченного периода времени. Также мы хотели бы использовать init 6
или же shutdown -r
скорее, чем reboot
,
3 ответа
Вы можете настроить sudo
разрешить любому пользователю запускать определенные команды, указанные вами как root, без необходимости вводить пароль. См. Эту статью о сбое сервера для описания того, как настроить sudo
,
Затем в вашем скрипте используйте sudo вместо su:
перезагрузка sudo
AFAIK, вы не можете делать то, что вы просите. Когда вы используете stdin
с <
пароль будет введен через stdin задолго до того, как оболочка действительно запросит пароль. Вы должны попробовать и использовать sudo. Если нет, то лучше всего chmod reboot
и дайте себе исполнять привилегии.
Вы можете сделать это с помощью 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)