page web de l'horaire
-
05-07-2019 - |
Question
Je dois programmer plusieurs pages différentes sur plusieurs sites différents à des heures précises, généralement une fois par nuit. Existe-t-il un logiciel pour le faire? ce serait bien si elle appelait la page puis enregistrait la réponse et si la page appelée était exécutée avec succès ou non. J'utilisais Helm sur un autre boîtier et il contenait un module Web Scheduler intéressant, mais Helm n'est pas une option pour cette machine. Ceci est une boîte de Windows Server 2008.
La solution
Nous utilisons des tâches planifiées standard qui appellent un fichier bat qui appelle un fichier VBS. Je sais que ce n’est pas la solution la plus élégante de tous les temps, mais cela fonctionne toujours.
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
Le code dans le fichier VBS est presque assurément à la fois excessif et souscrit, mais fonctionnel néanmoins.
Autres conseils
Que diriez-vous de wget.exe et le planificateur de tâches?
Le code donné dans l'exemple ci-dessus présente des problèmes car la tâche est active pendant le chargement du site Web. Le site Web se charge en 2 minutes mais la tâche est déjà terminée en 1 seconde, ce qui pose un problème lorsque vous l'exécutez toutes les 5 minutes. Si le site Web charge 10 minutes et que la tâche est déjà terminée en 1 seconde, il exécutera à nouveau que, bien que je veuille attendre le temps de chargement du site Web.
Donc, voici ce que j'ai fait (ce script gardera la tâche occupée tant que le site Web sera chargé):
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
S'il n'est pas nécessaire de les programmer depuis la même boîte, consultez le site 24x7 de Zoho .
Initialement conçu pour surveiller les sites Web, il dispose d’une option permettant d’enregistrer les réponses attendues et de les comparer afin que vous puissiez les utiliser à votre guise avec la sécurité supplémentaire d’un site externe. Ce n'est pas gratuit, sauf pour quelques URL.
Ce sont d'autres fournisseurs similaires, mais ils étaient plutôt beaux la dernière fois que j'ai effectué une recherche sur le Web à ce sujet.
J'ai fini par utiliser ce script et ce planificateur de tâches, simple et qui fonctionne très bien:
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
Ensuite, je l'appelle simplement avec l'URL que je veux exécuter en tant qu'argument:
Un élément similaire (bien que probablement plus puissant) est netcat et son port Windows
fyi - wget est une licence standard GNU, je ne suis donc pas sûr que ce soit utilisable pour la plupart des systèmes commerciaux / propriétaires.
J'utilise http://scheduler.codeeffects.com . Très efficace et fiable, pas de problème.