Поставить 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)
Другие вопросы по тегам