#linux #expect #sudo
#linux #ожидать #sudo
Вопрос:
вот пример сценария.ожидать :
#!/usr/bin/expect
spawn ssh -t USER@HOST "sudo su "
expect "USER@HOST's password:"
send "passwordr"
expect "$ "
expect "[sudo] password for USER:"
send "passwordr"
expect "$ "
puts "USER [exec whoami]"
interact
-bash-4.1$ expect sample.expect`enter code here`
spawn ssh -t USER@HOST sudo su root
FIPS integrity verification test failed.
USER@HOST's password:
[sudo] password for USER: invalid command name "sudo"
while executing
"sudo"
invoked from within
"expect "[sudo] password for USER:""
(file "sample.expect" line 6)
-bash-4.1$
ожидаю войти на хост как пользователь sudo.
но возникает проблема
[sudo] пароль для ПОЛЬЗОВАТЕЛЯ: неверное имя команды «sudo»
при выполнении
«sudo»
вызывается изнутри
«ожидайте» пароль [sudo] для ПОЛЬЗОВАТЕЛЯ:»»
(файл «sample.expect», строка 6).
Ответ №1:
expect "[sudo] password for USER:"
В нем используются квадратные скобки, которые являются механизмом Tcl для подстановки команд. Вам нужно либо экранировать начальную скобку, либо использовать неинтерполирующие кавычки Tcl: один из
expect "[sudo] password for USER:"
# or
expect {[sudo] password for USER:}