我制作了一个使用ftp协议获取远程文件的shell脚本,如果文件下载得很好,它会在php中使用curl启动另一个脚本。它现在有点工作但我还有一些问题需要改进:
这是shell脚本:
echo start of the script | mail -s "beginning of the script" krifur@krifur.com
cd /my_rep
HOST='domaine.com'
PORT='21'
USER='admin'
PASSWD='pass'
jour=$(date "+%Y%m%d")
FILE="file_"$jour".txt";
ftp -i -n $HOST $PORT <<EOF
quote USER $USER
quote PASS $PASSWD
cd firstlevel
cd end
get $FILE
quit
EOF
if test -f $FILE
then
CurlRes="$(curl "http://doma.com/myfile.php")"
echo debug CURL : $CurlRes | mail -s "debug" krifur@krifur.com
else
echo no file : $FILE | mail -s "no file" krifur@krifur.com
fi
echo this is the end of the script download | mail -s "end of script download" krifur@krifur.com
答案 0 :(得分:0)
脚本是否正在等待结束 下载执行其余的 脚本?或者在期间 下载脚本执行以下操作 说明?
如果您的意思是“FTP命令会阻止直到完成吗?”答案是肯定的。
我收到了第一封邮件 指导,但从来没有最后的 (获得结果的人 卷曲,和最后的那个 脚本)怎么来的?
看看你的代码:
then
CurlRes="$(curl "http://doma.com/myfile.php")"
echo debug CURL : $CurlRes | mail -s "debug" krifur@krifur.com
else
echo no file : $FILE | mail -s "no file" krifur@krifur.com
fi
$ CurlRes和$ FILE的内容分别是什么?试试$ {CurlRes}和$ {FILE}。我还建议在使用echo
时引用字符串。
垃圾邮件过滤器很可能不喜欢这条消息,你有没有检查过它?
我想找个好方法 禁止脚本运行更多 而不是一次(如果存档已经存在 即使是每次发布都会下载) 用crontab小时?
这可以通过多种方式完成。也许,成功将文件名回显到success_downloaded.txt之类的底部,然后使用grep查看文件名是否在列表中。根据用途,该文件可能会变得相当大..所以我也实现了一些旋转它的方法。
来自男人(3)ftp
:
bye Terminate the FTP session with the remote server and exit ftp.
An end of file will also terminate the session and exit.
quit A synonym for bye.
据我所知, by
也是bye
的同义词。
答案 1 :(得分:0)