Comprueba y registra el estado de puertos en un host remoto. Útil para detectar cortes si tenemos ofuscadas partes de la red.
#region intro
# nombre : Comprobar-Puertos.ps1
# descripción: comprueba que un host responde a varios puertos
# fecha creac: 11/07/2011
# versión : 0.2(15/07/2013)
# autor : Jorge Mestre
# Changelog : 11/07/2011 - creado
# Changelog : 15/07/2013 - Agregado param $infinito
#keywords : puertos,comprobar,telnet
#endregion intro
param($puertos,$dst,[switch]$infinito,$tamLog)
if (
((-not $puertos) -or (-not $dst)) -or `
(($infinito) -and (-not $tamLog)))
{
Write-Host "faltan argumentos`nEj: .\comprobar-puertos.ps1 -dst `"server`" `
-puertos 80,81,9000 [-infinito -tamLog MB]" -ForegroundColor Yellow
exit
}
#region MODIFICAR
$ArchLog = ".\LogPuertos.log"
$LimTamArchLog = $tamLog # MBs
$intervalo = 5 # segundos
#EndRegion MODIFICAR
#Region Funciones
function RevisarTamLog($ArchLog)
{
$tamArch = ((Get-Item $ArchLog).length)/1mb | Out-Null
if ($TamArch -gt $LimTamArchLog)
{
rm $ArchLog
}
}
function eLog($texto)
{
$fecha = get-date -F "dd/MM/yyyy - hh:mm:ss"
$txt = "$fecha`: puerto $puerto en $dst $texto"
Write-Host $txt
$txt | Out-File -Encoding utf8 -delimiter ';' -Append $ArchLog
}
function comprobarPuertos
{
RevisarTamLog $ArchLog
foreach ($puerto in $puertos)
{
try
{
$socket = new-object Net.Sockets.TcpClient
$socket.Connect($dst, $puerto)
$socket.Close()
eLog "abierto"
}
catch
{
eLog "cerrado"
}
$socket = $null
}
}
#EndRegion Funciones
#Region principal
if (-not $infinito)
{
comprobarPuertos
}
else
{
while (1 -eq 1)
{
comprobarPuertos
sleep $intervalo
}
}
#EndRegion principal
No hay comentarios.:
Publicar un comentario