我已经创建了一个脚本文件transfer.sh
,该脚本文件ftp
是一个test.txt
文件到服务器,现在我已经在crontab
中输入了脚本文件,如果我使用ftp
来传输文件,则可以正常工作在crontab中,当我使用sftp
而不是ftp时,它在cron选项卡中不起作用,但是当我手动运行transfer.sh脚本时,它可以正常工作,并使用sftp
将文件传输到服务器。我在日志中没有看到任何错误。
我的脚本transfer.sh
脚本是
sftp user/[email protected] <<END_SCRIPT
cd /mydir
put test.txt
bye
END_SCRIPT
crontab在UNIX服务器上找不到sftp
实用程序,有两种方法可以解决此问题。
将PATH
环境变量附加到sftp
路径
在脚本中使用带有绝对路径的sftp命令
示例。
/ usr / localcw / opt / ssh / bin / sftp用户/[email protected]
如何找到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
这里再次是到../opt/ssh/bin/sftp
的软链接,现在是cd
到../opt/sh/bin
/usr/localcw/bin $ cd ../opt/ssh/bin
现在密码是您的sftp
绝对路径
/usr/localcw/opt/ssh/bin $ pwd
/usr/localcw/opt/ssh/bin
将此路径与sftp命令一起使用