Предоставить пароль SU в сценарии bash, в скрипте?

Цель состоит в том, чтобы перезагрузить компьютер, если он не получил команду abort от пользователя. Проблема заключается в том, что как настроить терминалы, пользователь должен предоставить пароль 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" 

Мы собираемся попробовать поместить пароль в файл и stdin.

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

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

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

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

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

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

 [email protected]$ (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) 
Давайте будем гением компьютера.