25 mayo 2008

Chequear espacio de disco y aviso a celular

Mas de uno debe haber tenido el problema de quedarse sin espacio alguna vez y x eso despues q regreso, tuvo q empezar a matar ficheros o solucionar el problema de q algun q otro programa se clavo o algo parecido x falta de espacio, bueno aca escribi un sencillo programita en bash para evitar ese molesto problema, el programita se ejecuta via cron, y envia un mensaje a un mail y a un celular indicandonos el espacio en el disco y la hora en q se genero la advertencia (x estos pagos, no es raro q envies un sms y t llegue a las 4 horas recien), de esta manera podes ir a solucionar personalmente el problema, o desde algun lado conectarte y habilitar la transferencia de archivos a algun netbackup, tbn, estoy viendo de habilitar una transferencia de emergencia a un hd usb de alivio de manera automatica, para ello se basaria en transferir los archivos fijandose en la antiguedad/ultimo acceso, cosa de transferir los q ultimamente nose accedieron, bueno el codigo seria el sgte:

#!/bin/bash
#uso: espacio.sh dispositivo (ej: espacio sda1)
#programa para monitorear espacio en disco, cuando supera cierto porcentaje de uso (150MB),
#envia un mail de advertencia y detiene algunos procesos relacionados con las descargas 
#como pueden ser los torrents (reinicia apache simplemente)

#particion a comprobar espacio
disp=$1
#campos
#     1                 2     3      4    5       6
# S.ficheros          Tamaño Usado  Disp Uso% Montado en
#deja el porcentaje de uso para comparar
salida=$(df -h | grep $disp)
space=$( echo $salida | fmt -u | cut  -f 2 -d ' ')   # tamano particion
used=$( echo $salida  | fmt -u | cut  -f 3 -d ' ' )    # espacio usado
left=$( echo $salida  | fmt -u | cut  -f 4 -d ' ' )    #espacio libre
left1=$( echo $left | sed -e 's/G/000000/g' | sed -e 's/M/000/g' )
porcentage=$( echo $salida  | fmt -u | cut  -f 5 -d ' ' | tr -d "%")  #porcentual usado
montado=$( echo $salida  | fmt -u | cut  -f 6 -d ' ' )  #montado en...
dispositivo=$( echo $salida  | fmt -u | cut  -f 1 -d ' ' ) #particion
mensaje=""

if (( $left1>= 150000)); then

#aun queda espacio
mensaje="aun queda espacio en "$disp

else

#si no queda espacio
mensaje="actualmente usado en "$disp":"$porcentage"% de "$space" o sea poco espacio ("$(date)")"
/dirbin/sendEmail -t destino@gmail.com -u "animetower espacio insuficiente en disco" -m $mensaje -f from@host.no-ip.org   -s smtp.gmail.com:587 -xu 'user@gmail.com' -xp pass    -v -o tls=yes
/dirbin/sendEmail -t destino@sms.ctimovil.com.ar -u "animetower espacio insuficiente en disco" -m $mensaje -f from@host.no-ip.org   -s smtp.gmail.com:587 -xu 'user@gmail.com' -xp pass    -v -o tls=yes

fi

echo $mensaje
echo $left1

Leer mas