如何使用solaris下的spawn和sftp捕获期望输出

时间:2012-08-31 18:02:37

标签: shell unix solaris expect

我正在使用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”“命令的结果。

1 个答案:

答案 0 :(得分:0)

在你send "ls\r"之后你应该expect。在expect语句之后,变量$expect_out(0,string)将包含您想要的输出。您必须解析实际的命令字符串和后续提示..您将能够在http://docs.activestate.com/activetcl/8.5/expect4win/找到一些示例