On Friday 18 May 2007 12:32, -Pisa wrote: > El jue, 17-05-2007 a las 17:44 -0300, redondos escribió: > > On Thu 17.May.07 17:36, Cristian GIMENEZ wrote: > Por si les sirve les paso un pequeño script que hicimos en su momento > para que avise por mail cuando queda poco espacio, en nuestro caso nos > avisa cuando queda menos de 2GB. si les sirve aca va. (seguramente hay > que cambiar alguna que otra variable)
gracias, toque un poquito el script: -eliminé la necesidad de un tmpfile, si el disco se llena de golpe el script no podrá crear un tmpfile y por ende no enviará tampoco el warning de que el disco esta lleno -para que sea seteable el limite a partir del cual envía la alamra -posibilidad de setear el comando a usar para enviar el mail para que se pueda cambiar de MTA (o usar sendmail genericamente) -para que no fallara en algunos casos en mostrar el device de la particion agregué (-P a du) -comente la opcion de que muestre la ip por no haber un metodo general para que funcione facil en todas las distros y grepear ifconfig me parece demasiado, además si hay muchas ifaces hay que mostrar todas o elegir. No se si lo van a poner en mother, pero me pareció piola para un par de servers que tengo por ahí. Mando el diff y el nuevo diskfree.sh completo. Copio a lug-list por si alguie le sirve. Slds ! -- Luciano
diskfree.sh
Description: application/shellscript
--- diskfree-orig.sh 2007-05-20 14:42:29.000000000 -0300
+++ diskfree.sh 2007-05-20 14:40:56.000000000 -0300
@@ -1,51 +1,43 @@
#!/bin/bash
-
-# Configurado para avisar cuando hay < 2G libres
+# Si la particion tiene menos de 'limit' Megas manda el warning
+limit=2000
disk_report () {
- df -TB 1M | awk \
- 'BEGIN {
- printf("%-15s%9s%9s\n", "Particion", "Tamaño", "Libre");
- send=0;
- }
- {
- if($5<2000 && FNR>1 && $2 != "tmpfs" ){
- send=1
- printf("%-15s%8sM%8sM\n", $7, $3, $5)
- }
- }'
+ df -PTB 1M | awk \
+ 'BEGIN {
+ printf("%-15s%9s%9s\n", "Particion", "Tamaño", "Libre");
+ send=0;
+ }
+ {
+ if($5<'$limit' && FNR>1 && $2 != "tmpfs" ){
+ send=1
+ printf("%-15s%8sM%8sM\n", $7, $3, $5)
+ }
+ }'
}
if [ $(disk_report | wc -l) -gt 1 ]; then
-
- TMPMAIL=/tmp/disk-space-report.mail
SERVER="$(hostname)"
DATE="$(date)"
- IPADDR="$(awk -F '=' '/IP_EXT/ {print $2}' /etc/default/firewall)"
-
+ #IPADDR="$(awk -F '=' '/IP_EXT/ {print $2}' /etc/default/firewall)"
#manteniserver
- MAIL_TO="[EMAIL PROTECTED]"
+ MAIL_TO="[EMAIL PROTECTED]"
MAIL_FROM="root"
MAIL_SUBJ="[DISK SPACE WARNING $SERVER] $DATE"
-
- exec 4>&1 # Link fd4 to fd1
- exec 1>${TMPMAIL}
-
- echo "To: ${MAIL_TO}"
- echo "From: ${MAIL_FROM}"
- echo "Subject: ${MAIL_SUBJ}"
- echo
- echo
- echo "Informe de espacio en disco: Alerta poco espacio"
- echo "================================================"
- echo "hostname: $SERVER"
- echo "IP address: $IPADDR"
- echo
- disk_report
-
- exec 1>&4 4>&- # Restore stdout & close fd4
-
- /var/qmail/bin/qmail-inject < ${TMPMAIL}
- rm -f ${TMPMAIL}
+ #SENDMAIL="/var/qmail/bin/qmail-inject"
+ #usar sendmail es mas generico AFAIK todos los MTA lo implementan
+ SENDMAIL="$(which sendmail) $MAIL_TO"
+
+ cat <<EOF | $SENDMAIL
+To: ${MAIL_TO}
+From: ${MAIL_FROM}
+Subject: ${MAIL_SUBJ}
+
+
+Informe de espacio en disco: Alerta poco espacio"
+================================================"
+hostname: $SERVER
+IP address: $IPADDR
+$(disk_report)
+EOF
fi
-
