我想在Linux服务器上运行FTP脚本。
这是我的名为transfer.sh
的bash文件:
#!/bin/bash
HOST='172.16.0.15'
USER='user'
PASSWD='abc123'
ftp -n -v $HOST << EOF
ascii
user $USER $PASSWD
prompt
cd /home/user/ftp
mget *
bye
EOF
mv /home/user/*.txt /home/user/ftp/
这是我的crontab:
* * * * * /home/user/transfer.sh
我的问题是FTP没有在crontab中运行,但是当我使用终端执行bash文件时它工作正常。
答案 0 :(得分:0)
如果问题出在shell脚本或FTP脚本上,您必须先了解。
将crontab中的条目替换为:
* * * * * /home/user/transfer.sh >>/tmp/transfer.log 2>&1
并检查/tmp/transfer.log
日志文件是否有任何错误。
即使是正常操作,您实际上也需要启用日志记录(至少是stderr),而不仅仅是调试当前的问题。
虽然有一个明显的问题,但是你没有在脚本中指定目标本地目录。
如果您手动运行脚本,该文件将下载到您当前的工作目录。
但是如果你在cron中运行脚本,当前的工作目录可能是用户的主目录,所以脚本会在那里下载文件。
您最好明确指定工作目录:
在运行cd
之前使用ftp
命令:
cd /local/target/path
ftp -n -v $HOST << EOF
...
或在lcd
脚本中使用ftp
命令:
lcd /local/target/path
mget *