定期自动下载Cacti Weathermap

时间:2015-11-30 06:42:31

标签: windows powershell automation cacti

我一直在寻找一种定期从Cacti Weathermap插件自动下载气象图图像的方法。似乎没有一种简单的方法可以使用Windows在互联网上的任何地方列出这一点,所以我想a)在这里问一下b)发布到目前为止我所管理的内容。

P.S。我在下面的一个答案中发布了我所处的位置。

1 个答案:

答案 0 :(得分:3)

  1. 您可以在气象图页面上轻松右键单击 - 另存为。这会生成一个名为weathermap-cacti-plugin.png。
  2. 的文件
  3. 但是,网页上没有此类文件。右键单击 - 查看URL给了我这个: http://<mydomain>/plugins/weathermap/weathermap-cacti-plugin.php?action=viewimage&id=df9c40dcab42d1fd6867&time=1448863933
  4. 我快速检查了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")
    
  5. 预感到,我刷新了页面并复制了几个网址:

    <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=都会发生变化。

  6. 在另一次预感之后,我检查了epochconverter.com上的更改数字(1448863989等),并获得了与我自己匹配的有效系统时间。

  7. 我找到了一个powershell命令(Keith Hill对this question的回答)来获取当前的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")
    
  8. 这似乎有效 - 每次运行代码时都会更新文件test.png修改后的时间戳,并打开它显示天气图的有效图片。 现在所需要的只是将其放入正确的脚本中并安排它每隔X分钟运行一次并保存到文件夹中。我确信任务计划程序中的powershell脚本调度在其他地方都有所涉及,所以我在此不再重复。

    如果有人知道更简单的方法,请告诉我。否则,投票给我的答案 - 我已经搜索了很多,并且在网上找不到任何其他结果,只允许你使用Windows。 Cacti论坛有几个解决方案,但它们要求你在Linux服务器上做一些对我这样的Linux noob很难的东西。