Feliz año nuevo a todos!!!!
Volvemos a la carga esta vez con un script de powershell para que nos avise en caso de que la web interna este caída, como por ejemplo, una de sharepoint, y además nos va a a indicar que servidor tiene problema, en caso que tengamos varios. Lo hice hace tiempo, pero creo que os puede ayudar bastante.
##===============================================================## ## Titulo : Estado de web ## ## Descripcion : valida el estado de la web interna ## ## Autor : Daniel Fuentes ## ## Fecha : 01/08/2017 ## ## ===============================================================## $log_file="C:\TEMP\xxxxx.log" $nombre = hostname $time = Get-Date | Out-String $listado=@() $URI=("http://www.xxxxxx.xx") $URI | foreach{ $hostRemoto=$_ try{ $site=invoke-webRequest -URI $hostRemoto write-host "${hostRemoto} está online" $listado+=New-Object PSObject -prop @{Host = $hostRemoto;Estado = "Online";} }catch{ $ex=$_ switch($ex.exception.response.statusCode.value__){ (404) { write-host "${hostRemoto} no encontrado ($ex.errorDetails.message)" $listado+=New-Object PSObject -prop @{Host = $hostRemoto;Estado = "Error";} continue } (401) { write-host "${hostRemoto} pide credenciales" $listado+=New-Object PSObject -prop @{Host = $hostRemoto;Estado = "Error";} continue } (500) { write-host "${hostRemoto} tiene errores ($ex.errorDetails.message)" $listado+=New-Object PSObject -prop @{Host = $hostRemoto;Estado = "Error";} continue } default { write-host "${hostRemoto} no existe (${ex})" $listado+=New-Object PSObject -prop @{Host = $hostRemoto;Estado = "Offline";} continue } } } } $listado | Out-File $log_file -width 240 if ($listado.Estado -ne "Online" ) { $smtp = "xxxx.xxxx.xxx" $to = "xxxxxx@xxxxx.xxx", "xxxxxx@xxxx.xx", "xxxxxxx@xxxxx.xxx" $from = "xxxxx@xxxx.xxx" $subject = "Aviso: estado de la web --> " + $nombre $body = Get-Content $log_file | Out-String $body = $time $body += "El servidor " + $nombre + " tiene un problema `n" foreach ($recipient in $to) { Send-MailMessage -smtpServer $smtp -from $from -to $recipient -subject $subject -body $body } } else { Remove-Item C:\TEMP\xxxxxx.log }
Además como nos va a mandar un mail que nos avisara del problema. Así que, podemos meterlo en el task manager (programador de tareas) y que se ejecute cada cierto tiempo.
Como siempre espero que os sirva.