如何在 EXPECT 中使用 SFTP BatchMode

如何在 EXPECT 中使用 SFTP BatchMode

我有一系列需要在期望中运行的 SFTP 命令。

但是当我运行下面的脚本时,由于某些原因,没有得到任何输出。如果脚本中任何地方有错,请纠正我。

expect << EOF
spawn sftp -oPort=23 -oBatchMode=no -b cmds.txt [email protected]
sleep 3
expect "[email protected]'s password:"
send "hello123\r"
EOF

但是当我在 CLI 界面中运行以下命令时,它运行得非常好:

# spawn sftp -oPort=23 -oBatchMode=no -b cmds.txt [email protected]

出于安全原因,我不能使用 SCP、SSHPASS、KeyChain 等,

答案1

一旦你告诉 expect 发送密码,它就无事可做了,所以它会停止并终止 sftp。从生成的命令中添加等待文件结束:

expect eof

您可以通过使用 启动 Expect 来获得更多调试信息expect -d

相关内容