Hallo, Am Tue, 20 Dec 2005, Steffen Dettmer schrieb:
* Heinz W. Pahlke wrote on Tue, Dec 20, 2005 at 09:17 +0100: [..]
Mir ist das mit einem cron-Job allerdings zu aufwendig. In der Zeit, in der ich das geschrieben habe, kann ich schaetzungsweise 5000 Mal df aufrufen. Pro Tag einmal aufgerufen, reicht die eingesparte Programmierzeit fuer gut 13 Jahren ;-))
df | perl -ane ' if ($F[3] < 100 * 1024) { print "$F[0]: disk low ($F[3]/$F[4]) on \n" }'
df | gawk '$4 < 102400 { print $1": disk low ("$4"/"$5")";}'
Bei cron auf Pfade achten. Testen. Keine Gewährleistung irgendeiner Art. hostname sollte über den Cron-Mail-Absender erkennbar sein.
Oder 'hostname' ;) df | gawk ' BEGIN { H="'`hostname`'"; ## kurz mal entquoten zur shell *eg* } $4 < 102400 { print $1": disk low ("$4"/"$5") on "H; } ' Praktisch wuerde ich das aber samt dem 'df' in ein gawk-script verpacken: ==== ACHTUNG: ungetestet! ==== #!/usr/bin/gawk -f BEGIN { hncmd="hostname"; hncmd | getline HOSTNAME; close(hncmd); WARNBELOW=100*1024; DF="df" while( DF | getline ) { if ( $4 < WARNBELOW ) { print $1": disk low ("$4"/"$5") on "HOSTNAME; } } close(DF); } ==== Hm. Lt. den -W Optionen von gawk ist das auch recht portabel: $ gawk -W lint-old -f ~/bin/warndiskfull.awk >/dev/null gawk: /home/dh/bin/warndiskfull.awk:4: warning: getline is not supported in old awk gawk: /home/dh/bin/warndiskfull.awk:5: warning: close is not supported in old awk gawk: /home/dh/bin/warndiskfull.awk:8: warning: getline is not supported in old awk $ gawk -W posix -f ~/bin/warndiskfull.awk >/dev/null $ gawk -W compat -f ~/bin/warndiskfull.awk >/dev/null $ AWK Versionen, die kein getline/close koennen duerften also eher selten sein, aber man weiss ja nie, vor allem bei den doch teilweise sehr seltsamen Implementationen auf kommerziellen Unices... Kurz: das ganze sollte auch als #!/usr/bin/awk -f oder so funktionieren.
Bugs: Überlange mountpunkte: /disk3/xfer/tocopy/suse-10.0-x86_32/iso/SUSE-10.0-CD-OSS-i386-GM-CD1.iso 615136 615136 0 100% /home/public/mnt
mit Zeilenumbruch werden nicht korrekt verarbeitet, soll man also nicht machen. Kann man natürlich einbauen.
Habe ich jetzt auch nicht getestet, sollte aber auch mit gawk gehen. Falls df das ueberhaupt zweizeilig ausgibt und es nicht nur einfach das Terminal umbricht.
(So Heinz, Dich darf ich jetzt 13 Jahre lang jeden Tag anrufen? ^^)
Ich auch!!1elf!! -dnh -- In an organization, each person rises to the level of his own incompetency -- The Peter Principle [from the BSD fortune file]