samba full_audit log szétszedése

Fórumok

Hi!

Lészen wheezy-n egy samba, a megosztások hozzáférései full_audit-al logolva imigyen:

full_audit:prefix = %S|%u|%I|%m
full_audit:success = chdir mkdir open opendir pread pwrite read rename rmdir write link unlink
full_audit:failure = chdir mkdir open opendir pread pwrite read rename rmdir write link unlink
full_audit:facility = LOCAL7
full_audit:priority = NOTICE

rsyslog.conf-ban pedig eme sorok találhatóak:


# Samba
if $syslogfacility-text == 'local7' and $programname == 'smbd' then /var/log/samba/audit/log.audit
& ~

Szépen képződnek a következőhöz hasonló sorok:

Feb 18 00:05:14 as-samba smbd[12547]: informatika|szistvan|192.168.1.155|x2|chdir|ok|chdir|/data/samba/informatika
Feb 18 00:05:14 as-samba smbd[12547]: informatika|szistvan|192.168.1.155|x2|opendir|ok|./
Feb 18 00:25:40 as-samba smbd[12547]: informatika|szistvan|192.168.1.155|x2|chdir|ok|chdir|/
Feb 18 00:25:50 as-samba smbd[12679]: informatika|szistvan|192.168.1.155|x2|chdir|ok|chdir|/data/samba/informatika
Feb 18 00:25:51 as-samba smbd[12679]: informatika|szistvan|192.168.1.155|x2|opendir|ok|./
Feb 18 00:26:50 as-samba smbd[12679]: informatika|szistvan|192.168.1.155|x2|chdir|ok|chdir|/
Feb 18 00:45:44 as-samba smbd[12547]: kepek|szistvan|192.168.1.155|x2|chdir|ok|chdir|/data/samba/kepek
Feb 18 00:45:44 as-samba smbd[12547]: kepek|szistvan|192.168.1.155|x2|opendir|ok|./

Így most egyetlen logfileba (/var/log/samba/audit/log.audit) gyűri az összes sort, szeretném megosztásonként különszedni pl. kepek.log.audit, informatika.log.audit.

Tehát a kérdés: az rsyslog-al tudom -e külön filek-ba küldeni a log sorait attól függően, hogy az adott sor tartalmaz -e egy adott karaktersorozatot?

Tudna esetleg valaki ebben segíteni, merre nézelődjek?

Előre is köszönöm a segítséget!!

Hozzászólások

Köszönöm!

Nem "szép", de működik:

if $syslogfacility-text == 'local7' and $programname == 'smbd' and $msg contains 'informatika' then /var/log/samba/audit/informatika.audit.log
if $syslogfacility-text == 'local7' and $programname == 'smbd' and $msg contains 'kepek' then /var/log/samba/audit/kepek.audit.log
if $syslogfacility-text == 'local7' and $programname == 'smbd' then ~

Valahogy a case típusú vizsgálatot nem találtam.

case nincs kimondottan, RuleSet-tel lehetne setleg játszani;
de ha úgyis fel kell venni a share neveket, amikor változás történik, akkor én megelégednék ezzel a redundás if-ezéssel.
$msg contains helyett viszont $msg startswith -et javaslok!

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE

Jó ötlet, este megnézem.
Köszönöm!

Viszont elgondolkodtam, hogy meg lehetne -e azt csinálni, hogy a logsor elején a megosztás neve szerepel és ezt kiszedni a log sorból, majd ezt felhasználni a logfile nevénél.

Pl.:
Feb 18 00:45:44 as-samba smbd[12547]: kepek|szistvan|192.168.1.155|x2|opendir|ok|./

Megoldható lenne, hogy a sor így kezdődjön: |kepek| ebből kivágni a két | jel közül a szöveget és ezt a szöveget felhasználni a logfile szeparálásához.

Esetleg valaki tudna egy regexp-el segíteni, hogy a || között lévő szöveget hogyan tudnám "kiszedni"?

Előre is köszönök minden további segytséget!


$template SambaShare,"/var/log/samba/audit/%msg:R,ERE,0,DFLT:[^|]+--end%.log"
if $syslogfacility-text == 'local7' and $programname == 'smbd' ?SambaShare

és az audit prefix a share nevével kezdõdjön: "%S|%U|..."

[^|]+

ez az elsõ pipe jelig fogja illeszteni

hmm, ezt lehet hogy magamnál is implementálom...

~~~~~~~~
http://www.youtube.com/watch?v=VbUVqODL1nE

Remek!!! Köszönöm!!

A második sor végefelé kimaradt a "then" szócska:

if $syslogfacility-text == 'local7' and $programname == 'smbd' then ?SambaShare

Egy "aprócska" javításra lenne még szükségem, ugyanis a logfile neve szóközzel kezdődik pl.: " Kepek.log". Ezt a bevezető szóközt hogyan lehetne leszedni?

A doksit megtaláltam, de nem egy egyszerű olvasmány nekem ;-)

Előre is köszönöm!

Meglepetten tapasztalom, hogy a syslog-ba a következő sor(ok) jelennek meg:

Feb 19 11:15:25 as-samba smbd_audit[8718]: Kepek|mbeata|192.168.1.18|iroda8|open|ok|r|Magosne/ALAPTABLA.jpg
Feb 19 11:15:25 as-samba smbd_audit[8718]: Kepek|mbeata|192.168.1.18|iroda8|pread|ok|Magosne/ALAPTABLA.jpg

Ezek szerint erre nem illeszkedik a "$programname == 'smbd'". :-(
Most akkor a "$programname == 'smbd_audit'"-ot kellene írni?