Potrebna skripta ili apps

E ovako raja…

Interesuje me da li moguće da se napiše/napravi skripta koja bi mogla da
šalje mail ( svakog sata ) administratoru ( na drugi PC ) o aktivnostima na
ftp ili apache serveru. Recimo da čita xferlog ili access.log i da informacije iz njega ( ili
kompletan log ) šalje email-om na određenu email adresu. Tražio sam o
tim stvarima na google-u ali bez uspjeha.

Unaprijed hvala

Mozes koristiti crontab:

Kad se otvori editor (vjerovatno vi), dodaj slijedecu liniju, snimi promjene i izadji iz editora:

Nakon toga, svakih sat vremena dobices mail sa sadrzajem datoteke /etc/logfajl na adresu sahbaz@neki.pc (polazim od pretpostavke da je na masini sa koje zelis citati logove pokrenut crond).

Svakako procitaj:

$ man 1 crontab $ man 5 crontab

Nadam se da ovo pomaze :wink:

Hvala KK …fercera kako treba :wink:

Ima li kakvih varijacija na temu kao:

1.umjesto čitavog loga da prebaci samo access od
juče

2.umjesto svakog sata da šalje svakih 5 sati

[quote]Ima li kakvih varijacija na temu kao:

  1. umjesto čitavog loga da prebaci samo access od juče
  2. umjesto svakog sata da šalje svakih 5 sati[/quote]

Sto se tice tacke 1., moguce je napraviti filtere razlicitog tipa, koji ce vjerovatno zavisiti od sadrzaja datog log fajla. Ne bi bilo lose da posaljes nekoliko linija svojih logova, da vidimo kako izgledaju i sta sve sadrze.

Osim toga, mozes koristiti razne zvrcke sa cron-om da isfiltriras logove za odredjeni vremenski period. Npr. stavis liniju u crontab, koja ce kopirati log fajl na tacno odredjenu lokaciju tacno u 00:00 sati. Stavis drugu liniju, koja ce u 23:59 izvrsiti diff da uporedi trenutni log sa onim koji si sacuvao u 00:00. Razlika ova dva fajla je log za protekli dan :wink:

Za tacku 2., najbolje je da procitas manual page za crontab(5). Relativno je kratak i vrlo dobro opisuje mogucnosti crontab-a.

:slight_smile:

Evo par linija iz xferlog-a:

[quote]
Sat May 17 01:48:16 2003 0 118.80-202-199.nextgentel.com 50595 /share2/anonim/linux_slike/gamingtux.jpg b _ o a IEUser@ ftp 0 * c
Sat May 17 05:16:55 2003 1 gso163-5-002.triad.rr.com 50595 /share2/anonim/linux_slike/gamingtux.jpg b _ o a wsftp70@ ftp 0 * c
Sat May 17 13:32:50 2003 1 118.80-202-199.nextgentel.com 50595 /share2/anonim/linux_slike/gamingtux.jpg b _ o a anonymous@ ftp 0 * c
Sat May 17 13:33:21 2003 1 118.80-202-199.nextgentel.com 50595 /share2/anonim/linux_slike/gamingtux.jpg b _ o a anonymous@ ftp 0 * c
Sat May 17 22:50:44 2003 8 80.65.73.215 50595 /share2/anonim/linux_slike/gamingtux.jpg b _ o a mozilla@example.com ftp 0 * c
Sat May 17 22:51:50 2003 6 80.65.73.215 24576 /share2/anonim/linux_slike/gamingtux.jpg b _ o a mozilla@example.com ftp 0 * i
Sat May 17 22:52:06 2003 8 80.65.73.215 50595 /share2/anonim/linux_slike/gamingtux.jpg b _ o a mozilla@example.com ftp 0 * c[/quote]

Ja bih u ovom slucaju koristio awk. Mozes jednostavno filtrirati logove prema raznim kriterijima na osnovu rednog broja kolone u kojoj se nalaze kljucni podaci. Tako npr., ako zelis dobiti sve poruke poslane 16. maja 2003. godine, mozes u crontab staviti:

Ovdje $2 znaci druga kolona, sto je u slucaju xferlog-a mjesec, $3 je treca kolona (dan), a $5 je peta kolona :slight_smile:

Ovo je vrlo jednostavan nacin da dobijes logove za odredjeni dan, ali sam po sebi nije praktican, jer moras hard-kodirati datum u crontab. Bilo bi dobro kada bi jos mogao pomenuti nekoliko vrsta upita koji te zanimaju, pa da pokusamo pronaci odgovarajuca rjesenja za njih…

Ja sam slicnu stvar rijesio sa (n)(g)awk skriptom koja se starta iz
crontaba. Umjesto da saljes citav log mozes u toj skripti filtrirati
ono sto ti je interesantno, napraviti novu datoteku i poslati mail.
gawk i nawk su super za ovakve svrhe.
Mozes npr. startati skriptu iz crontaba svaki sat, ona onda pregleda
log, nade gdje je bio kraj prethodnog sata i nastavi s tog mjesta.

hmm…
mozeli jednostavnije:

< 'grep -i “Sat May 30” /etc/logfile’
pa ovo u crontab.
Samo idejica :-k

[quote]hmm…
mozeli jednostavnije:

< ‘grep -i “Sat May 30” /etc/logfile’
pa ovo u crontab.[/quote]

I ja sam razmisljao o grep-u, ali ako nisi siguran da li su kolone odvojene space-om ili tab-om, onda je awk lakse i preglednije rjesenje.

Osim toga, ako bi zelio filtrirati logove prema, recimo, velicini fajla, onda bi rjesenje sa awk-om ostalo podjednako pregledno, dok bi se regularni izraz u grep-u blago zakomplikovao.

U svakom slucaju, ako zelis filtrirati po datumu i znas da su polja odvojena space-om, to rjesenje sa grep-om je jednostavnije.

Hm, najjednostavnije moguce rješenje (koje sam obično viđao)
mail -s “log” ime@adresa.ba < /var/log/neki.log
rm /var/log/neki.log

:smiley: