sftp 在 cron 或 crontab 中不工作,但 ftp 工作正常

sftp is not working in cron or crontab but ftp works fine

我已经创建了一个脚本文件 transfer.sh,其中 ftp 一个 test.txt 文件到服务器,现在我已经在 crontab 中输入了脚本文件,如果我使用 ftp 传输文件它在 crontab 中工作正常,当我使用 sftp 而不是 ftp 它在 cron 选项卡中不起作用,但是当我手动 运行 transfer.sh 脚本它工作正常并使用 sftp 将文件传输到服务器。我在日志中没有看到任何错误。

我的脚本 transfer.sh 脚本是

sftp user/pass@host.com <<END_SCRIPT
cd /mydir
put test.txt
bye
END_SCRIPT

crontab 无法在 unix 服务器上找到 sftp 实用程序,有两种方法可以解决该问题。

  1. 将您的 PATH 环境变量附加到 sftp 路径

  2. 在脚本中使用带绝对路径的 sftp 命令

    示例。

    /usr/localcw/opt/ssh/bin/sftp user/pass@host.com

如何找到sftp绝对路径,下面是例子

$which sftp
/usr/localcw/bin/sftp

前往/usr/localcw/bin位置

$cd /usr/localcw/bin

命中ls -lrt sftp

/usr/localcw/bin $ls -lsrt sftp
0 lrwxrwxrwx   1 root     root          19 Apr 11  2012 sftp -> ../opt/ssh/bin/sftp

这里又是一个软 link 到 ../opt/ssh/bin/sftp,现在 cd../opt/sh/bin

/usr/localcw/bin $ cd ../opt/ssh/bin

现在 pwd 是你的 sftp 绝对路径

/usr/localcw/opt/ssh/bin $ pwd
/usr/localcw/opt/ssh/bin

将此路径与 sftp 命令一起使用