sftp通过cronjob中的bash脚本:找不到'get'和'rm'命令?

问题描述 投票:-1回答:1

我正在尝试做一些真实,简单的事情:在设定的时间从sftp网站下载文件。但是,我遇到的错误就像'命令:rm不存在'或'命令获取不存在'这是垃圾,因为这些命令显然存在。

#!/usr/bin/expect
#remove current version of file
rm -f /home/user/downloads/data/newdata.zip

spawn sftp [email protected]
expect "password:"
send "PaSsWoRd\n"
expect "sftp>"
get /mycompany/myproject/data/newdata.zip /home/user/downloads/data
expect "sftp>"
send "exit\n"
interact

(base) root@ubuntu:~# ./shellscript.sh
invalid command name "rm"
    while executing
"rm -f /home/user/downloads/data/newdata.zip"

或者没有删除

(base) root@ubuntu:~# sudo ./shellscript.sh
spawn sftp [email protected]
EFT Server Login - %DATE% %TIME% - Please enter valid credentials to continueEnter password: 
Connected to ftpsite.com
sftp> invalid command name "get"
    while executing
"get /mycompany/myproject/data/newdata.zip /home/user/downloads/data"

是什么赋予了?为什么我不能得到真正的错误消息 - 我确定得到一个完美的命令,我可以直接从命令行运行它们来验证这一点,它们工作正常。

linux bash shell sftp expect
1个回答
2
投票

您正在使用Expect脚本编写TCL代码。您没有在shell脚本中编写Bash。

你必须send你想写入sftp工具的命令:

send "get /mycompany/myproject/data/newdata.zip /home/user/downloads/data\n"

并且exec您想要以非交互方式运行的任何命令:

exec rm -f /home/user/downloads/data/newdata.zip
© www.soinside.com 2019 - 2024. All rights reserved.