Cercando nella Command-Line Administration Scripts di IIS 6 ho scoperto che con il comando iisweb posso riavviare un website di IIS 6 direttamente dalla shell:
Quindi ho aggiunto questo codice alla procedura in ColdFusion che controlla il corretto funzionamento di un sito:
Questo è il codice completo:
In pratica con un cfhttp leggo un file del sito che devo controllare, se mi ritorna un 404 oppure un testo che non è quello aspettato, provo a far partire il sito web e invio una email di segnalazione.
iisweb /stop emanuelecellini.com
iisweb /start emanuelecellini.com
iisweb /start emanuelecellini.com
Quindi ho aggiunto questo codice alla procedura in ColdFusion che controlla il corretto funzionamento di un sito:
<cfset Parametri = 'c:\windows\system32\iisweb.vbs /start emanuelecellini.com'>
<cfexecute name="C:\WINDOWS\system32\cscript.exe" arguments="#Parametri#" outputfile="c:\vbscript\output.txt" timeout="60"/>
<cfexecute name="C:\WINDOWS\system32\cscript.exe" arguments="#Parametri#" outputfile="c:\vbscript\output.txt" timeout="60"/>
Questo è il codice completo:
<cfset MessaggioErrore = "">
<cfset RispostaCorretta = "OK">
<cftry>
<!--- Leggo la pagina di controllo --->
<cfhttp url="http://www.emanuelecellini.com/monitor.cfm" resolveurl="no" charset="iso-8859-1"/>
<!--- se lo stato della pagina è diverso da 200 ok è tornato un errore --->
<cfif cfhttp.statusCode neq "200 OK">
<cfset MessaggioErrore = "WebServer:" & cfhttp.statusCode>
<!--- se il contenuto del url non è ok invio l'sms --->
<cfelseif Trim(cfhttp.FileContent) neq RispostaCorretta>
<cfset MessaggioErrore = "WebServer:Risposta diversa da " & RispostaCorretta>
</cfif>
<cfcatch type="any">
<!--- c'è stato un errore nell'esecuzione di cfhttp --->
<cfset MessaggioErrore = "WebServer:" & cfcatch.Message>
</cfcatch>
</cftry>
<!--- Se la variabile MessaggioErrore non è vuota devo inviare l'sms --->
<cfif Len(Trim(MessaggioErrore)) neq 0>
<!--- Provo a riavviare il sito WEB --->
<cftry>
<cfset Parametri = 'c:\windows\system32\iisweb.vbs /start emanuelecellini.com'>
<cfexecute name="C:\WINDOWS\system32\cscript.exe" arguments="#Parametri#" outputfile="c:\vbscript\output.txt" timeout="60"/>
<cfcatch type="any">
</cfcatch>
</cftry>
<cfmail from="xxx@emanuelecellini.com" to="xxx@emanuelecellini.com" subject="Errore Monitor" type="html">Errore Monitor Sito</cfmail>
</cfif>
<cfset RispostaCorretta = "OK">
<cftry>
<!--- Leggo la pagina di controllo --->
<cfhttp url="http://www.emanuelecellini.com/monitor.cfm" resolveurl="no" charset="iso-8859-1"/>
<!--- se lo stato della pagina è diverso da 200 ok è tornato un errore --->
<cfif cfhttp.statusCode neq "200 OK">
<cfset MessaggioErrore = "WebServer:" & cfhttp.statusCode>
<!--- se il contenuto del url non è ok invio l'sms --->
<cfelseif Trim(cfhttp.FileContent) neq RispostaCorretta>
<cfset MessaggioErrore = "WebServer:Risposta diversa da " & RispostaCorretta>
</cfif>
<cfcatch type="any">
<!--- c'è stato un errore nell'esecuzione di cfhttp --->
<cfset MessaggioErrore = "WebServer:" & cfcatch.Message>
</cfcatch>
</cftry>
<!--- Se la variabile MessaggioErrore non è vuota devo inviare l'sms --->
<cfif Len(Trim(MessaggioErrore)) neq 0>
<!--- Provo a riavviare il sito WEB --->
<cftry>
<cfset Parametri = 'c:\windows\system32\iisweb.vbs /start emanuelecellini.com'>
<cfexecute name="C:\WINDOWS\system32\cscript.exe" arguments="#Parametri#" outputfile="c:\vbscript\output.txt" timeout="60"/>
<cfcatch type="any">
</cfcatch>
</cftry>
<cfmail from="xxx@emanuelecellini.com" to="xxx@emanuelecellini.com" subject="Errore Monitor" type="html">Errore Monitor Sito</cfmail>
</cfif>
In pratica con un cfhttp leggo un file del sito che devo controllare, se mi ritorna un 404 oppure un testo che non è quello aspettato, provo a far partire il sito web e invio una email di segnalazione.
Categorie:
Windows
,
ColdFusion
17:46:34 | Emanuele Cellini