Ожидайте и sudo тайм-аут


1

У меня есть основной сценарий оболочки, который запрашивает у пользователя пароль. Затем я хотел бы вызвать сценарий ожидания, передавая ему пароль. Этот ожидаемый скрипт будет запускать 3 команды sudo.

Я знаю, что для блоков linux, на которых будет запускаться мой сценарий, timestamp_timeout установлено какое-то значение в их sudoers. Моя проблема в том, что у меня есть общее представление о том, как написать это ожидание, но я не знаю, как обрабатывать следующие случаи:

1) Я могу отправить пароль на первую команду sudo нормально. Это sudo удалит большой каталог, удаление которого может занять несколько минут, которое может быть больше или не превышать установленное значение timestamp_timeout. Итак, как я могу сделать необязательным ожидание запроса пароля для моей второй и третьей команд sudo.

2) Скажем, по какой-то странной причине сценарий умирает или пользователь прерывает его. Когда он пытается запустить его снова, мы все еще находимся во времени timestamp_timeout. Это требует, чтобы ожидаемый пароль для первой команды также был необязательным.

Вот что у меня есть:

 #!/usr/bin/expect

set password [lindex $argv 0]
spawn sudo rm -rvf /mnt/repo
expect "*?assword:*"
send "$password\r"
send "sudo mkdir -v /mnt/hwrrepo"
expect "*?assword:*"
send "$password\r";
send "sudo chmod -R 777 /mnt/hwrrepo"
expect "*?assword:*"
send "$password\r";
interact

Ответы:


1

Я использовал флаг -k sudo для аннулирования отметки времени. поэтому я просто добавил этот флаг к каждому вызову sudo и позволил ожидать ввода пароля.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.