Я хочу написать оболочку script для автоматизации ряда команд. Проблема в том, что некоторые команды ДОЛЖНЫ запускаться как суперпользователь, а некоторые команды НЕ ДОЛЖНЫ запускаться как суперпользователь. То, что я сделал до сих пор, выглядит примерно так:
#!/bin/bash
command1
sudo command2
command3
sudo command4
Проблема в том, что это означает, что кто-то должен дождаться завершения команды 1, прежде чем им будет предложено ввести пароль, тогда, если команда 3 займет достаточно много времени, им придется ждать завершения команды3. Было бы хорошо, если бы человек мог встать и уйти, а потом вернуться через час и сделать это. Например, следующая проблема script:
#!/bin/bash
sleep 310
sudo echo "Hi, I'm root"
sleep 310
sudo echo "I'm still root?"
Как я могу сделать это так, чтобы пользователь мог просто ввести пароль один раз, в самом начале, а затем уйти?
Update:
Спасибо за ответы. Я бегу на Mac OS X Lion и побежал Stephen P script и получил разные результаты: (Я также добавил $HOME)
[email protected] scratch$ ./test2.sh
uid is 501
user is pair
username is
home directory is /Users/pair
[email protected] scratch$ sudo ./test2.sh
Password:
uid is 0
user is root
username is root
home directory is /Users/pair