gpt4 book ai didi

linux - 通过 cronjob 中的 bash 脚本进行 sftp : 'get' and 'rm' commands not found?

转载 作者:太空宇宙 更新时间:2023-11-04 04:42:55 25 4
gpt4 key购买 nike

我正在尝试做一些真正非常简单的事情:在设定的时间从 sftp 站点下载文件。但是,我收到诸如“命令:rm 不存在”或“命令 get 不存在”之类的错误,这些错误是垃圾,因为这些命令显然存在。

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

spawn sftp user@ftpsite.com
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 user@sftpsite.com
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"

什么给了?为什么我不能得到真正的错误消息 - 我确信 get 和 rm 是一个完美的命令,我可以通过直接从命令行运行它们来验证这一点,它们工作得很好。

最佳答案

您正在 Expect 脚本中编写 TCL 代码。您不是在 shell 脚本中编写 Bash。

您必须将要写入的命令发送到 sftp 工具:

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

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

exec rm -f /home/user/downloads/data/newdata.zip

关于linux - 通过 cronjob 中的 bash 脚本进行 sftp : 'get' and 'rm' commands not found?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55750355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com