Tcl expect中只执行一个命令
我试图远程登录到一个系统中,并在该系统上执行许多命令。所以我尝试了这个expect脚本:Tcl expect中只执行一个命令,tcl,expect,Tcl,Expect,我试图远程登录到一个系统中,并在该系统上执行许多命令。所以我尝试了这个expect脚本: #!/usr/bin/expect spawn telnet localhost 42000 expect "login:"
#!/usr/bin/expect
spawn telnet localhost 42000
expect "login:"
send "root\r"
expect -re "-sh-4.1#"
send "echo HELLO\r"
expect -re "-sh-4.1#"
send "echo WORLD\r"
事实证明,只执行第一个echo命令,然后telnet会话终止。我看到了一些expect示例,在登录到telnet或ssh会话后可以执行多个命令
那么我正在做的脚本中有什么错误呢?您必须给出下一个
expect
语句,然后只有expect
会等待它
您只需再添加一行,如下所示
#!/usr/bin/expect
spawn telnet localhost 42000
expect "login:"
send "root\r"
expect -re "-sh-4.1#"
send "echo HELLO\r"
expect -re "-sh-4.1#"
send "echo WORLD\r"
expect -re "-sh-4.1#"
这是因为如果不这样做,我们将错过正在发生的事情。生成的telnet会话将假定您只需要发送一个字符串值,而不需要会话中的任何其他内容,并且没有更多的代码,这就是脚本被终止的原因,从而终止telnet会话