我正在写一个关于我正在写的期望脚本的一个奇怪的问题。基本上,我有服务器A和服务器B.服务器B只能通过服务器A的telnet访问(不要问......)。
这意味着,我通过SSH连接到服务器A,telnet到服务器B,然后运行该命令以获取指定用户的大量信息。现在,当我在最后放置'interact'时脚本工作正常,但当我删除它时,脚本不再给我输出。这是粗略的脚本,它现在只是一个概念验证,所以忽略了没有错误/条件等的事实:
#!/usr/bin/expect -f
log_file "/tmp/temporarylog.log"
set timeout 30
set user [lindex $argv 0]
# connect to server A
send_user "Connecting to server A...\n";
spawn ssh user@servera.com
expect "assword: "
send "password123\n"
expect "# "
send "telnet serverb.com 6002\n"
expect "> "
send "login passwordabc\n"
send "user info $user\n"
# removing this line results in no output
interact
运行上面的脚本可以获得所有用户信息。删除'interact'脚本似乎telnet到serverb.com但不使用'login'或'user info'。
交互是脚本的最后一部分,所以它让我感到困惑的是它为什么会破坏它之前的东西 - 这是我的第一个期望的脚本。
任何帮助表示感谢。
答案 0 :(得分:1)
使用以下命令结束脚本:
expect "> "
send "exit\r"
expect "# "
send "exit\r"
expect eof
使用send
或\r
终止您的\n
字符串 - \ r是回车符,这是按Enter键发送的内容。