我已经阅读了几个线程(这很有帮助),但在尝试 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
spawn
Expect 脚本中的第二个应该是send
,您应该引用您发送到生成进程的内容,并且您已经省略了 CR(回车符,又名 Enter):
send "put $FILE\r"
另外,您可能不需要该interact
命令。这可能更有意义:
expect "sftp>"
send "exit\r"
答案2
密码或身份验证发生在哪里,确保您必须首先进行身份验证,然后您不应该收到该错误。