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

Attachment: 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
-

Responder a