在无人参与的批量控制

时间:2017-06-12 20:46:59

标签: batch-file https automation dialog unattended-processing

我的问题是,当UPS告诉我的家庭服务器断电时,我需要向我的NAS发送关机命令。我想通过使用(Windows 10 Home)PC服务器的关闭通知来执行此操作,该通知可以触发批处理文件作为关闭事件的一部分,而不是使用额外的硬件。我已经确定打开特定的URL会导致NAS正常关闭。

  

https://192.168.1.10/get_handler?PAGE=System&OUTER_TAB=tab_shutdown&INNER_TAB=NONE&shutdown_option1=1&command=poweroff&OPERATION=set

问题似乎与试图绕过导致浏览器的对话有关。首先它要求凭证。我可以通过将它们包含在URL调用中来绕过这个,如下所示:

  

开始"" " C:\ Program Files \ Mozilla Firefox \ firefox.exe"   " https://username:password@192.168.1.10/get_handler?PAGE=System&OUTER_TAB=tab_shutdown&INNER_TAB=NONE&shutdown_option1=1&command=poweroff&OPERATION=set"

现在它会弹出一个对话框,要求我确认我要登录为"用户名",再次击败我无人看管的尝试(我可能在停电时的任何地方)。有没有解决的办法?仅供参考,我放弃了尝试与Microsoft Edge合作,因为它通过在任何地方插入空格来不断将URL参数切割成碎片。每次我尝试时,它都会手动抱怨安全证书。我想我也会遇到与该浏览器相同的确认请求问题。所以我需要一种方法来压制所有这些对话并只是进行URL调用。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这个问题在24小时后发布后没有任何答案告诉我这是一个棘手的问题。让我继续努力。在我尝试了所有我能想到的东西后,用Window自己的工具集来解决它并找不到任何工作我意识到我需要一些额外的东西来解决问题。最后我放弃并安装了免费Autohotkey并编写了一个脚本来完成整个工作,包括处理对话框。一旦它全部工作,我为了方便从脚本中创建了一个可执行文件,所以我可以从关闭批处理(.bat)文件中轻松调用它。此解决方案有效。以下是需要解决类似问题的任何人的脚本:

> runWait, C:\Program Files\Mozilla Firefox\firefox.exe
> https://admin:password@192.168.1.10/get_handler?PAGE=System&OUTER_TAB=tab_shutdown&INNER_TAB=NONE&shutdown_option1=1&command=poweroff&OPERATION=set
> 
> #Persistent SetTimer, MsgBoxCheck, 3000 return
> 
> MsgBoxCheck: If WinExist("ahk_class MozillaDialogClass") {   
> SetControlDelay -1    ControlClick, , Confirm,    SetTimer,
> MsgBoxCheck, off    exitApp } else {    SetTimer, MsgBoxCheck, off   
> MsgBox, 4, , Debug - No Confirm Window Found.    exitApp } return

请注意,要使用非Mozilla程序,您需要更改ahk_class参数。我建议您使用Windows Spy来确定要关闭的窗口类。您还需要更改'确认'无论你的窗口标题是什么。