проблема при входе в систему как пользователь sudo

#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:}