我正在使用expect来生成一个sftp会话,如下所示:
(为了清晰起见,许多代码被剪断了,是的,我了解风险......)
#!/opt/csw/bin/expect -f
<snip>
spawn sftp $user@$host
set rez [connect $passw]
if { $rez == 0 } {
send "cd $location\r"
set timeout -1
send "ls -l\r"
send "quit\r"
expect eof
exit 0
}
puts "\nError connecting to server: $host, user: $user and password: $passw!\n"
exit 1
这很好用。
我的具体问题是如何在文件中捕获发送“ls -l \ r”“命令的结果。
答案 0 :(得分:0)
在你send "ls\r"
之后你应该expect
。在expect
语句之后,变量$expect_out(0,string)
将包含您想要的输出。您必须解析实际的命令字符串和后续提示..您将能够在http://docs.activestate.com/activetcl/8.5/expect4win/找到一些示例