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