Если вы просто хотите запросить пароль для повышения привилегий, добавьте
sudo -v
в строке перед этим. Сценарий остановится, запросит пароль и продолжит работу после ввода приемлемого пароля или завершит работу, если проверка пароля не удалась.
Эффективно:
#!/bin/bash
# Initiate sudo session
sudo -v
# Execute command; sudo session for tee is already active.
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo
Если это долго работающий скрипт, подумайте о том, чтобы сделать его функцией, которая запускается раньше:
sudo -v
while true;
do
sudo -n true
sleep 60
kill -0 "$$" || exit
done 2>/dev/null &
Тогда ваш скрипт будет выглядеть примерно так:
#!/bin/bash
sudoChk () {
sudo -v
while true;
do
sudo -n true
sleep 60
kill -0 "$$" || exit
done 2>/dev/null &
}
sudoChk
#...long running commands...
echo 'foobar ALL=(ALL:ALL) ALL' | sudo EDITOR='tee -a' visudo
exit 0
Возможно, вы также ищете:
sudo sh -c
вместо
sudo su -c