我必须使用 sftp 从另一台服务器获取文件。
我创建了一个脚本,它将 cd 到我的目录并执行 sftp 命令。由于不允许我将 rsa 密钥添加到外部服务器,因此我使用 sshpass 来处理这种情况。如果我在会话中运行该脚本,它会正常工作(但会在屏幕上打印每个 sftp 命令的内容)。如果我尝试执行 va crontab ,则不会执行 sftp 命令,但会执行脚本中的所有其他内容。
set -o nounset # Treat unset variables as an error
umask 000
cd /path/to/dir
export SSHPASS='securepass'
sshpass -e sftp -oBatchMode=no -b - -P9999 [email protected]: << !
cd REMOTEDIR
get *
rm *
bye
!
# processing the files part
答案1
我猜测您使用与在 shell 中使用的帐户不同的帐户来运行 cron 作业。
这可能sftp
由于多种原因而失败。其中之一是运行 cron 作业的帐户在 中没有主机密钥known_hosts
。