背景
我的网络上有一个 QNAP NAS 盒子,我想定期运行一个 cron 作业来调用一个网页,然后用我的路由器的公共 IP 地址更新动态 DNS 服务。我希望能够从这个 PHP 文件中取出并附加到一个日志文件中。
为了测试,我创建了一个 test.php 文件,它只是回显了一些文本。
以下是相关的点点滴滴:
https://www.example.com/test.php
<?php
echo "Hello world!\n";
?>
更新的dns.sh
# updateddns.sh
########## Edit the following lines ##########
Logfile="/share/Public/ddns.log"
URL="https://www.example.com/test.php"
Token="lPpbyP22M1ePvthsJ0uO"
##############################################
date >> $Logfile
wget -4q -O - --post-data="auth=$Token" $URL >> $Logfile
echo "Complete" >> $Logfile
crontab(摘录)
*/5 * * * * /bin/sh /share/Public/updateddns.sh
DVNK5C~Q(摘录)
Fri Jan 19 10:00:00 GMT 2018
Complete
Fri Jan 19 10:05:00 GMT 2018
Complete
Fri Jan 19 10:10:00 GMT 2018
Complete
Fri Jan 19 10:15:00 GMT 2018
Complete
Fri Jan 19 10:20:00 GMT 2018
Complete
Fri Jan 19 10:25:00 GMT 2018
Complete
Fri Jan 19 10:30:00 GMT 2018
Complete
如您所见,cron 作业正在运行记录日期和“完成”文本,但 wget 命令没有任何内容。这里要注意的另一件事是,输出不是记录到 ddns.log,而是记录到一个名为 DVNK5C~Q 的文件(在 Windows 中查看时),看起来它叫做 ddns.log?在 shell 命令窗口中查看时。
如果我直接从 shell 提示符运行 wget 命令,它可以工作,我得到“Hello world!” 写出正确的 ddns.log 文件。
有人在这里指出我正确的方向吗?
谢谢,斯图尔特。