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

1586
Codrguy

У меня есть основной сценарий оболочки, который запрашивает у пользователя пароль. Затем я хотел бы вызвать сценарий ожидания, передавая ему пароль. Этот ожидаемый скрипт будет запускать 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 
0

1 ответ на вопрос

0
Codrguy

I ended up using the -k flag of sudo to invalidate the time stamp. so i just added that flag to every sudo call and let expect pass in the password.

Похожие вопросы