我需要安排几个不同站点上的几个不同页面在特定时间运行,通常是每晚一次。有没有软件可以做到这一点?如果它调用页面然后记录响应以及调用的页面是否成功运行,那就太好了。我在不同的机器上使用 Helm,它有一个不错的 Web Scheduler 模块,但 Helm 不是这台机器的选项。这是一个 Window Server 2008 盒子。
8 回答
我们使用调用 VBS 文件的 bat 文件的标准计划任务。我知道这不是有史以来最优雅的解决方案,但它始终有效。
蝙蝠:
webrun.vbs http://website.com/page.aspx
VBS:
dim URL, oArgs
Set oArgs = WScript.Arguments
if oArgs.Count = 0 then
msgbox("Error: Must supply URL")
wscript.quit 1
end if
URL = oArgs(0)
on error resume next
Set objXML = CreateObject("MSXML2.ServerXMLHTTP")
if err then
msgbox("Error: " & err.description)
wscript.quit 1
end if
' Call the remote machine the request
objXML.open "GET", URL, False
objXML.send()
' return the response
'msgbox objXML.responSetext
' clean up
Set objXML = Nothing
VBS 文件中的代码几乎可以肯定是过度杀伤和覆盖,但功能仍然没有问题。
wget.exe和任务调度程序怎么样?
上例中给出的代码在加载网站期间任务处于活动状态时存在一些问题。该网站正在加载 2 分钟,但任务已在 1 秒内完成,当您每 5 分钟执行一次时会出现问题。如果网站加载 10 分钟并且任务已经在 1 秒内完成,它将再次执行,而我希望它等待网站的加载时间。
所以我所做的是以下(只要网站正在加载,这个脚本就会让任务保持忙碌):
dim URL, oArgs, objXML
Set oArgs = WScript.Arguments
URL = oArgs(0)
on error resume next
Set objXML = CreateObject("Microsoft.XMLDOM")
objXML.async = "false"
objXML.load(URL)
Set objXML = Nothing
如果不需要从同一个框中安排它们,请查看Zoho 的 site24x7。
它最初旨在监控网站,但它可以选择记录预期答案并进行比较,以便您可以将其用于您的目的,并增加外部网站的安全性。它不是免费的,但是除了几个网址。
他们是其他类似的提供商,但上次我在网上搜索这个主题时,他们看起来还不错。
我最终使用了这个脚本和任务计划程序,简单而且效果很好:
Call LogEntry()
Sub LogEntry()
'Force the script to finish on an error.
On Error Resume Next
'Declare variables
Dim objRequest
Dim URLs
URLs = Wscript.Arguments(0)
Set objRequest = CreateObject("Microsoft.XMLHTTP")
'Open the HTTP request and pass the URL to the objRequest object
objRequest.open "POST", URLs, false
'Send the HTML Request
objRequest.Send
Set objRequest = Nothing
WScript.Quit
End Sub
然后我只是用我想作为参数运行的 URL 来调用它:
类似的(虽然可能更强大)是netcat和它的windows 端口
fyi - wget 是 GNU 标准许可证,所以我不确定它是否可用于大多数商业/专有系统。
我使用http://scheduler.codeeffects.com。非常有效和可靠,没有抱怨。