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.
