这是脚本sample.expect:
#!/usr/bin/expect
spawn ssh -t USER@HOST "sudo su "
expect "USER@HOST's password:"
send "password\r"
expect "$ "
expect "[sudo] password for USER:"
send "password\r"
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用户身份登录主机。 USER获取问题[sudo]密码:无效命令名称“sudo”执行“sudo”时从“expect”[sudo]密码中调用USER:“”(文件“sample.expect”第6行)。
expect "[sudo] password for USER:"
它使用方括号,这是Tcl的命令替换机制。您必须转义前导括号,或使用Tcl的非插值引号:其中一个
expect "\[sudo] password for USER:"
# or
expect {[sudo] password for USER:}