viernes, 25 de septiembre de 2009

Alertas con PowerShell

Si administras servidores con Windows, existen soluciones como MOM o Vbscript para que, si ocurre un evento que consideres importante, salte una alerta que te informe por email. Un ejemplo muy común es que salte la alerta cuando quede poco espacio libre en alguna unidad de un servidor de archivos.

Vamos a ver como se hace con PowerShell.

El requisito es, que en el servidor en cuestión debemos tener instalado PowerShell (Windows 2008 ya lo incorpora).

Abrimos un editor de texto (recomiendo PowerGUI) y empezamos asignando un par de variables: la letra de unidad en cuestión y el tamaño en bytes de espacio libre que, cuando se alcance, queramos que salte la alerta.

$ud = "C:"
$gb1 = 1048576000

En este caso queremos la alerta sobre la unidad C: y el tamaño de espacio libre de alerta es 1 GB.

Ahora hacemos la consulta utilizando WMI (una línea):

$i = get-wmiobject -query "select DeviceID, FreeSpace from win32_logicaldisk" | where-object { $_.DeviceID -eq $ud }

En $i queda el objeto que contiene la letra de unidad (DeviceID) y el espacio libre (FreeSpace) de la unidad C: ($ud).

Ahora queda comprobar si la unidad C: tiene menos de 1GB y enviar el email de alerta si así es:

if ( $i.FreeSpace -lt $gb1 )
{
  $emailFrom = "admin@dominio.dom"
  $emailTo = "destino@dominio.dom"
  $subject = "Menos de 1GB en C: en el servidor x"
  $body = ""
  $smtpServer = "smtp.dominio.dom"
  $smtp = new-object Net.Mail.SmtpClient($smtpServer)
  $smtp.Send($emailFrom, $emailTo, $subject, $body)
}


En $emailTo podemos indicar más de un destinatario separados por comas. En este caso el cuerpo del mensaje $body no tiene nada y $smtpServer es la dirección del servidor smtp de destino donde está el buzón de correo del destinatario.

Ahora sólo queda guardar el script, por ejemplo, como pocoespacio_c.ps1, en alguna carpeta y ejecutarlo de forma programada con las Tareas Programadas de Windows. Una buena programación en este caso sería que este script se ejecute de lunes a viernes, durante la jornada laboral y a cada hora.

Detalle importante: a la hora de definir el comando a ejecutar en Tareas Programadas es necesario indicar toda la ruta del ejecutable powershell.exe, un espacio en blanco y después entre comillas dobles indicar toda la ruta del script, por ejemplo:

C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe "C:\scripts\pocoespacio_c.ps1"

Y a esperar a quedarnos con menos de 1GB en C:

domingo, 6 de septiembre de 2009

Conoce la web y defiéndete con ella

Para navegar por la web de forma segura hay, entre otros, conceptos básicos como:
  • Saber en qué URL estamos y como se construyen
  • Diferenciar webs falsas de las verdaderas
  • Diferenciar un enlace javascript de otro convencional
  • Rellenar formularios de forma segura
  • Identificar y gestionar los complementos web del navegador
Explicados junto con más cosas en esta presentación.

Felíz rumbo.