Shell Expect脚本无法处理多个密码请求
我试图执行一个perl脚本来连接linux主机,生成一个快照,然后我需要将这个快照SCP到本地服务器。因此,我必须输入密码2次,1次登录服务器,2次登录之前生成的文件。 问题是,我的expect脚本只适用于第一个密码,有人知道吗Shell Expect脚本无法处理多个密码请求,shell,perl,expect,Shell,Perl,Expect,我试图执行一个perl脚本来连接linux主机,生成一个快照,然后我需要将这个快照SCP到本地服务器。因此,我必须输入密码2次,1次登录服务器,2次登录之前生成的文件。 问题是,我的expect脚本只适用于第一个密码,有人知道吗 [linuxserver dimm]$ ./mul.sh spawn perl perlscript.pl Cleaning up /tmp/logs Getting logs from server 9.x.x.x using snap Password: <
[linuxserver dimm]$ ./mul.sh
spawn perl perlscript.pl
Cleaning up /tmp/logs
Getting logs from server 9.x.x.x using snap
Password: <------ THIS ITERATION WORKS FINE WITH EXPECT
Password: <------ THE 2nd ITERATION DOES NOT WORK AND I HAVE TO ADD THE PASSWORD MANUALLY
[linuxserver dimm]$
首先,在bash脚本中放入expect脚本时,使用引用的herdoc,这样可以显著减少引用 您似乎需要输入密码,然后等待perl程序结束:
eof
模式期望生成的程序结束/usr/bin/expect您的缩进没有反映该缩进中单个expect
语句的组织。请密切注意花括号和双引号。看看我的,你可以用它只写外壳代码的Expect脚本。完美的Glenn!!非常感谢你的帮助!!
export PASSWORD='mypassword'
/usr/bin/expect -c '
spawn perl perlscript.pl
expect {
-nocase "*assword*" {
send "$env(PASSWORD)\r"
exp_continue
}
expect -c "
expect "*assword*"
send \$env(PASSWORD)\r
interact"
}
interact
'