Я использовал expect
, чтобы выполнить некоторую команду с sudo на удаленном хосте через ssh.Сценарий заключается в следующем:
spawn ssh -q ${user}@${host}
expect "*?assword:"
send "${pass}\r"
expect "${user}@"
send "sudo ls\r"
expect "*?assword:"
send "${pass}\r"
expect "${user}@"
send "exit\r"
interac
Он отлично запускается в первый раз, но при последовательном его выполнении произошла какая-то ошибка.Это потому, что sudo
не истечет сразу, поэтому, если какая-то команда sudo дважды за короткое время, вторая может не нуждаться в пароле, таким образом, вторая send "${pass}\r"
в приведенном выше скрипте не удалась!
Так как мы можем обнаружитьчто и избежать отправки пароля, когда срок действия sudo не истекает?спасибо!