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
实用程序,有两种方法可以解决该问题。
将您的 PATH
环境变量附加到 sftp
路径
在脚本中使用带绝对路径的 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 命令一起使用
我已经创建了一个脚本文件 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
实用程序,有两种方法可以解决该问题。
将您的
PATH
环境变量附加到sftp
路径在脚本中使用带绝对路径的 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 命令一起使用