0

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

4

1 回答 1

0

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

于 2012-08-31T21:14:36.683 回答