Freesco, NND, CDN, EOS http://forum.freesco.pl/ |
|
Skrypt - statystyki Exima http://forum.freesco.pl/viewtopic.php?f=24&t=18269 |
Strona 1 z 1 |
Autor: | Bercik [ piątek, 30 kwietnia 2010, 14:16 ] |
Tytuł: | Skrypt - statystyki Exima |
witam, Macku czy mozesz pokazac jak wyglada skrypt o ktorym mowa w tym artykule http://nnd-linux.pl/modules.php?name=Ne ... cle&sid=58 (chodzi o ten ktory zlicza ilosc dostarczonej poczty ) |
Autor: | Maciek [ piątek, 30 kwietnia 2010, 14:29 ] |
Tytuł: | |
Ja to zrobiłem tak: 1. Skrypt wywoływany z crona #!/bin/bash # informacje o dzialaniu exima /bin/awk -f /root/skrypty/analiza-reject /var/log/exim/rejectlog > /tmp/analiza.txt /bin/awk -f /root/skrypty/analiza-main /var/log/exim/mainlog >> /tmp/analiza.txt /usr/bin/mailx -s "Analiza pracy SMTP" maciek(at)emti.one.pl </tmp/analiza.txt 2. Skrypty awk # analiza mainlog exima # napisal MKK, modyfikacja WT /^.*Completed.*$/ { Completed++ } END { printf("Dostarczone: %d\n", Completed); } # analiza rejectlog exima # napisal MKK, modyfikacja WT /^.*Dropped.*$/ { Dropped++ } /^.*Unknown.*$/ { Unknown++ } /^.*listed.*$/ { listed++ } /^.*temporarily.*$/ { temporarily++ pos = match($0, "H=") if (pos > 0) { str = substr($0, pos, length($0)) printf("Greylistowany: %s\n", substr(str, 4, match(str, "F=") - 4)); } } END { printf("Greylistowane: %d\n", temporarily); printf("Odrzucone (RCPT): %d\n", Unknown); printf("W tym na (RBL): %d\n", listed); printf("Odrzucone (EHLO): %d\n", Dropped); } |
Autor: | Bercik [ piątek, 30 kwietnia 2010, 14:40 ] |
Tytuł: | |
Podziękował |
Autor: | viater [ sobota, 1 maja 2010, 18:12 ] |
Tytuł: | |
Czy mi się zdaje, czy w powyższym skrypcie listed (powinno zliczać tylko odrzucone z powodu znalezienia na RBL) będzie zliczać również Greylisted ? O tak sobie zrobiłem: #!/bin/bash #exim-analiza [ -z $1 ] || log=".$1" awk '/Completed/ { Completed++ } END { printf("Dostarczone: %3d\n", Completed); }' \ /var/log/exim/mainlog$log echo awk '(/rejected/ || /: 535 /) && !/[G|g]reylisted/ { Rejected++ } /listed in/ { rbl++ } /locally/ { lbl++ } /Relay/ { relay++ } /zaloguj/ { nologin++ } /: 535 / { badlogin++ } /Unknown user/ { unknown++ } /Dropped/ { helo++ } /Greylisted/ { temporarily++ pos = match($0, "H=") if (pos > 0) { str = substr($0, pos, length($0)) printf("Greylistowany host: %s\n", substr(str, 3, match(str, "F=") - 4)); } } END { if ( temporarily>0 ) { printf("-------------------\n"); printf("Greylistowane: %3d\n\n", temporarily); } printf("Odrzucone: %3d\n", Rejected); printf(" w tym RELAY %3d\n", relay); printf(" w tym na RBL %3d\n", rbl); printf(" w tym na LBL %3d\n", lbl); printf(" w tym nologin %3d\n", nologin); printf(" w tym badlogin %3d\n", badlogin); printf(" w tym unknown %3d\n", unknown); printf(" w tym HELO %3d\n", helo); }' \ /var/log/exim/rejectlog$log Wywołując z parametrem od 1-7 można analizować archiwalne logi. |
Autor: | Maciek [ sobota, 1 maja 2010, 18:33 ] |
Tytuł: | |
Nie istnieje nic tak dobrego, żeby nie mogło być jeszcze lepsze Fajny skrypt. |
Autor: | viater [ poniedziałek, 3 maja 2010, 01:08 ] |
Tytuł: | |
Maciek pisze: Nie istnieje nic tak dobrego, żeby nie mogło być jeszcze lepsze Dzięki ale to Twój skrypt
Fajny skrypt. Widzisz, jednym z moich największych problemów jest analityczny umysł, czyli jak mam coś zrobić od podstaw, to jest dla mnie droga przez mękę, bo za cholerę nie wiem jak to ma wyglądać i od czego zacząć, natomiast jak mi dasz coś już w miarę przygotowane, to zrobię z tym cuda niewidy Kolejna modyfikacja : #!/bin/bash #exim-analiza [ -z $1 ] || log=".$1" date -d "yesterday" +%F echo '----------' echo awk '/Completed/ { Completed++ } END { printf("Dostarczone: %3d\n", Completed); } ' /var/log/exim/mainlog$log echo awk '(/rejected/ || /: 535 /) && !/Greylisted/ { Rejected++ } /listed in/ { rbl++; wtym++ } /locally/ { lbl++; wtym++ } /Relay/ { relay++; wtym++ } /zaloguj/ { nologin++; wtym++ } /: 535 / { badlogin++; wtym++ } /Unknown user/ { unknown++; wtym++ } /Dropped/ { helo++; wtym++ } /Greylisted/ { temporarily++ pos = match($0, "H=") if (pos > 0) { str = substr($0, pos, length($0)) printf("Greylistowany host: %s\n", substr(str, 3, match(str, "F=") - 4)); } } END { if ( temporarily>0 ) { printf("-------------------\n"); printf("Greylistowane: %3d\n\n", temporarily); } inne = Rejected - wtym; printf("Odrzucone: %3d\n", Rejected); if ( Rejected > 0 ) printf("w tym:\n"); if ( relay > 0 ) printf(" - RELAY %3d\n", relay); if ( rbl > 0 ) printf(" - na RBL %3d\n", rbl); if ( lbl > 0 ) printf(" - na LBL %3d\n", lbl); if ( nologin > 0 ) printf(" - nologin %3d\n", nologin); if ( badlogin > 0 ) printf(" - badlogin %3d\n", badlogin); if ( unknown > 0 ) printf(" - unknown %3d\n", unknown); if ( helo > 0 ) printf(" - HELO %3d\n", helo); if ( inne > 0 ) printf(" - pozostałe%3d\n", inne); }' \ /var/log/exim/rejectlog$log echo echo "====================================================" echo W takim układzie, jak jest, trzeba odpalać skrypt z crona po rotacji logów, z parametrem 1, czyli np.: 04 00 * * * /usr/local/sbin/exim-analiza 1 >> /var/log/exim/analiza 2>/dev/null |
Strona 1 z 1 | Strefa czasowa UTC+2godz. |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |