使用 shell 脚本 sftp 文件

使用 shell 脚本 sftp 文件

我已经阅读了几个线程(这很有帮助),但在尝试 sftp 文件时仍然遇到错误(客户端希望对其进行 sftp 编辑)

这是脚本:

#!/bin/bash 
HOST=XX.XX.XX.XX
PORT=XXXX
USER=root
FILE=/tmp/RANDY

/usr/bin/expect<<EOD

spawn sftp -o Port=$PORT $USER@$HOST
expect "sftp>"
spawn put $FILE
interact
EOD

我收到的错误是:

spawn sftp -oPort=XXXX [email protected]
Connecting to XX.XX.XX.XX...
sftp> spawn put /tmp/RANDY
couldn't execute "put": no such file or directory
    while executing
"spawn put /tmp/RANDY"

该文件存在并且位于正确的目录中。

答案1

spawnExpect 脚本中的第二个应该是send,您应该引用您发送到生成进程的内容,并且您已经省略了 CR(回车符,又名 Enter):

send "put $FILE\r"

另外,您可能不需要该interact命令。这可能更有意义:

expect "sftp>"
send "exit\r"

答案2

密码或身份验证发生在哪里,确保您必须首先进行身份验证,然后您不应该收到该错误。

相关内容