0

脚本 1

#!/usr/local/bin/expect
spawn sftp user@10.xx.xxx.xx
expect \"password\"
send \"pass\r\"
interact
send \"lls\r\"

脚本 2

#!/bin/bash

expect -c "
spawn sftp user@10.xx.xxx.xx
expect \"password\"
send \"pass\r\"
interact
send \"lls\r\"
"

我已经安装了 TCL/TK,期待。script1 在密码提示本身处停止。script2 在成功登录后停止,如

spawn sftp user@10.xx.xxx.xx
user@10.xx.xxx.xx's password:
Connected to 10.xx.xxx.xx.
sftp>

我下一个传输文件的命令(比如我有lcd /home/usr/tmp ,mget *.*)没有作为其中的一部分执行。

4

1 回答 1

1

调用后interact,控制权从脚本返回给用户,以便您可以手动键入命令。因此,不会自动调用任何其他命令。

相反interact,您应该添加另一个expect等待 sftp 提示符 ( sftp>) 的语句,然后再发出您想要的命令。

于 2013-01-26T15:46:10.397 回答