0

背景

我的网络上有一个 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 文件。

有人在这里指出我正确的方向吗?

谢谢,斯图尔特。

4

0 回答 0