我一直在寻找一种定期从 Cacti Weathermap 插件自动下载天气图图像的方法。似乎没有一种简单的方法可以仅使用 Windows 在互联网上的任何地方列出此操作,所以我想我会 a) 在这里问,b) 发布我到目前为止所管理的内容。
PS我已经在下面的答案之一中发布了我所达到的位置。
我一直在寻找一种定期从 Cacti Weathermap 插件自动下载天气图图像的方法。似乎没有一种简单的方法可以仅使用 Windows 在互联网上的任何地方列出此操作,所以我想我会 a) 在这里问,b) 发布我到目前为止所管理的内容。
PS我已经在下面的答案之一中发布了我所达到的位置。
http://<mydomain>/plugins/weathermap/weathermap-cacti-plugin.php?action=viewimage&id=df9c40dcab42d1fd6867&time=1448863933
我在powershell中做了一个快速检查,看看这是否可以下载(它是):
$client = new-object System.Net.WebClient
$client.DownloadFile("http://<mydomain>/plugins/weathermap/weathermap-cacti-plugin.php?action=viewimage&id=df9c40dcab42d1fd6867&time=1448864049", "C:\data\test.png")
凭直觉,我刷新了页面并复制了几个 URL:
<mydomain>/plugins/weathermap/weathermap-cacti-plugin.php?action=viewimage&id=df9c40dcab42d1fd6867&time=1448863989
<mydomain>/plugins/weathermap/weathermap-cacti-plugin.php?action=viewimage&id=df9c40dcab42d1fd6867&time=1448864049
正如我所怀疑的那样,time=
每次刷新页面时都会发生变化。
根据另一个预感,我检查了1448863989
epochconverter.com 上不断变化的数字(等),并得到了一个与我自己匹配的有效系统时间。
我找到了一个 powershell 命令(Keith Hill 对这个问题的回答)来获取当前的 Unix 时间
[int64](([datetime]::UtcNow)-(get-date "1/1/1970")).TotalSeconds
并将其添加到 powershell 下载脚本中
$client = new-object System.Net.WebClient
$time=[int64](([datetime]::UtcNow)-(get-date "1/1/1970")).TotalSeconds
$client.DownloadFile("http://<mydomain>/plugins/weathermap/weathermap-cacti-plugin.php?action=viewimage&id=df9c40dcab42d1fd6867&time=$time", "C:\data\test.png")
这似乎有效 - 每次我运行代码时都会更新文件 test.png 修改的时间戳,并且它打开时显示天气图的有效图片。现在所需要做的就是把它放在一个适当的脚本中,并安排它每 X 分钟运行一次并保存到一个文件夹中。我确信在 Task Scheduler 中调度 powershell 脚本在其他地方都有介绍,所以我不会在这里重复。
如果有人知道更简单的方法,请告诉我。否则,请投票支持我的答案 - 我进行了很多搜索,但在网上找不到任何其他结果可以让您仅使用 Windows 执行此操作。Cacti 论坛有几个解决方案,但它们要求你在 Linux 服务器上做一些事情,这对于像我这样的 Linux 菜鸟来说很难。