Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2017-09-14 20:33:26

  moro - Użytkownik

moro
Użytkownik
Zarejestrowany: 2016-04-27

wysłanie maila z linią loga jako temat

Witam

Chciałbym wysyłać maile z sysloga po znalezieniu w nim konkretnej frazy ale w ten sposób, żeby linia z loga z frazą była tematem maila.
Obecnie używam swatch ale on jako temat przypisuje albo swój temat, albo z góry przeze mnie nadany w configu. Czy jest możliwość za jego pomocą lub jakiegoś innego narzędzia wysłać maila o temacie - linijka z loga a treść może być pusta.

Offline

 

#2  2017-09-14 20:47:18

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: wysłanie maila z linią loga jako temat

Po co maila?

Puszczasz logi w syslogu na kolejkę  fifo stworzoną poleceniem np:

Kod:

mkfifo /dev/syslog

Apotem możesz sobie do dowolnego skrypta z czytywać tą kolejkę, przykład w Perlu:

Kod:

#!/usr/bin/perl

use strict;

  open(FIFO, "< /dev/syslog") or die ": unable to open /dev/syslog: $!\n";
  
  while (<FIFO>) {

 print $_;

}

Następnie dodajesz dowolne regexy
np tak:
https://forum.dug.net.pl/viewtopic.php?id=22977

A potem moduł NET::SMTP albo lepiej jakiś moduł do XMPP - np AnyEvent:XMPP wysyła wyjście regexa przez maila lub jabbera.
Jakmają tego iść wieksze ilości, to lepiej mieć własny serwer maila i jabbera, bo na innych mogą się ważne rzeczy na limitach zatrzymać.

Po drugiej stronie podobny robot może wiadomości XMPP odbierać i wykonywać z nimi dowolne akcje, jakie Ci do głowy przyjdą.

PS
Tak się przypadkowo składa, że wszystkie znane mi implementacje sysloga w Linuxie potrafią wysyłać logi przez sieć przeważnie używając szyfrowania TLS:
np:
http://www.rsyslog.com/doc/v8-stable/tutorials/tls_cert_summary.html
To chyba najciekawsze wyjście, a np rsyslog też obrabia regexy w pliku konfiguracyjnym.
To może być ciekawsze i prostsze  wyjście.
http://www.rsyslog.com/doc/v8-stable/configuration/filters.html
http://www.rsyslog.com/regex/

Pozdro

Ostatnio edytowany przez Jacekalex (2017-09-14 20:58:43)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#3  2017-09-14 20:57:40

  moro - Użytkownik

moro
Użytkownik
Zarejestrowany: 2016-04-27

Re: wysłanie maila z linią loga jako temat

nic prościej nie da rady ogarnąć? :)

Offline

 

#4  2017-09-14 21:00:54

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: wysłanie maila z linią loga jako temat

Co to znaczy prościej?

Prościej, to masz swatcha właśnie.

Pokaż przykład takiego loga,co potrzebujesz wysłać, może się coś innego da wykombinować.

Przy okazji napisz, co dokładnie ma tego maila odbierać, że log musi być w temacie
a nie w treści wiadomości.

Z resztą syslogi też potrafią skrypty odpalać:
https://unix.stackexchange.com/questions/87223/rsyslog-execute-script-on-matching-log-event

Ostatnio edytowany przez Jacekalex (2017-09-14 21:05:07)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#5  2017-09-14 21:07:49

  moro - Użytkownik

moro
Użytkownik
Zarejestrowany: 2016-04-27

Re: wysłanie maila z linią loga jako temat

mam syslog do którego trafiają różne info np. ze snorta, arpwatcha itd... i jak wpada tam jakaś konkretna fraza to chcę otrzymać na maila powiadomienie... np. nowe urządzenie loguje się do sieci - do laga trafia mi info że jest nowy mac, IP jakie dostał itd... teraz dostaję maila z tematem jaki napisałem a w treści jest IP i mac tego urządzenia, podobnie z logami ze snorta.
Czasami przychodzi 1 mail na dzień, czasami kilka - dużo wygodniej przegląda się takie wiadomości jeżeli te info miałbym w temacie a nie musiał wchodzić do każdej wiadomości osobno.
Mam np. Bacule i z niej logi przychodzą w formie czytelnego tematu i z niego wiem czy coś się zrobiło na danym hoście czy nie i jeżeli chcę szczegóły to dopiero wtedy otwieram danego maila.

Czy do tematu w configu swatch można zastosować jakaś zmienną typu $0 albo $1, która odzwierciedlałaby konkretne fragmenty linii loga?


przykładowa linia:
Aug 2 11:02:35 smoothsec64 arpalert:  seq=322184, mac=33:33:33:33:33:33, ip=192.168.100.100, type=new, dev=eth0, vendor="(null)"


W temacie wystarczyłoby: new IP mac=33:33:33:33:33:33 ip=192.168.100.100

Czy właśnie tutaj mógłbym zastosować w jakiś sposób Subject: new IP $7 $8    ??

Ostatnio edytowany przez moro (2017-09-14 21:15:30)

Offline

 

#6  2017-09-14 21:52:32

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: wysłanie maila z linią loga jako temat

Trzeba było od razu pisać, ze chodzi o nowych pacjentów w sieci.

Do takiej zabawy masz gotowe narzędzie, [b]arpwatch[/b], który zawiadamia na maila
o nowych urządzeniach.

Ale arpwatch wysyła takiego maila:
temat:

Kod:

new station (router) net

treść:

Kod:

            hostname: router
          ip address: 192.168.0.1
           interface: net
    ethernet address: c0:c6:87:5e:d2:3e
     ethernet vendor: <unknown>
           timestamp: Thursday, September 14, 2017 21:53:17 +0200

Ostatnio edytowany przez Jacekalex (2017-09-14 21:54:48)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#7  2017-09-14 22:04:39

  moro - Użytkownik

moro
Użytkownik
Zarejestrowany: 2016-04-27

Re: wysłanie maila z linią loga jako temat

[quote=Jacekalex]Trzeba było od razu pisać, ze chodzi o nowych pacjentów w sieci.

Do takiej zabawy masz gotowe narzędzie, [b]arpwatch[/b], który zawiadamia na maila
o nowych urządzeniach.

Ale arpwatch wysyła takiego maila:
temat:

Kod:

new station (router) net

treść:

Kod:

            hostname: router
          ip address: 192.168.0.1
           interface: net
    ethernet address: c0:c6:87:5e:d2:3e
     ethernet vendor: <unknown>
           timestamp: Thursday, September 14, 2017 21:53:17 +0200

[/quote]
Tak tak wiem że jest arpwatch - ale on również nie wysyła maila o takim temacie jak bym chciał .

Dlatego próbuję wyjąć treść z sysloga.

Offline

 

#8  2017-09-14 22:10:33

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/urandom
Zarejestrowany: 2008-01-07

Re: wysłanie maila z linią loga jako temat

Dlaczego log musi być w temacie? jakiś program odbierający maila potrzebuje takiego rozwiązania, czy co?

Maila z arpwatcha nietrudno przetworzyć wyciągając IP i MAC z poziomu np Procmaila.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#9  2017-09-14 22:22:44

  moro - Użytkownik

moro
Użytkownik
Zarejestrowany: 2016-04-27

Re: wysłanie maila z linią loga jako temat

[quote=Jacekalex]Dlaczego log musi być w temacie? jakiś program odbierający maila potrzebuje takiego rozwiązania, czy co?[/quote]
Tak jak pisałem ... jak przychodzi mail to łatwiej mi szybko sprawdzić co w nim jest przeglądając temat... dostaję różne raporty na maila z sieci i to jest szybsza forma wyciągania ważnych informacji.

ok poradziłem sobie

Kod:

#!/bin/bash

EMAILADDRESS="moj@mail.pl"
EMAILSUBJECT="$(cut -f 7,8,9 -d" " /home/alert.txt)"
MESSAGEBODY="/home/alert.txt"
SEARCHSTRING='type=new_mac'
SYSLOG=/var/log/syslog

tail -f /var/log/syslog | while read LINE
do
 if [ `echo $LINE | grep -c "type=new_mac"` -gt 0 ]
 then
        echo $LINE > $MESSAGEBODY
        echo "Nowy MAC ADDRESS w sieci" >> $MESSAGEBODY
        mail -s "$EMAILSUBJECT" "$EMAILADDRESS" < $MESSAGEBODY
 fi
done

Ostatnio edytowany przez moro (2017-09-15 13:01:32)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Możesz wyłączyć AdBlock — tu nie ma reklam ;-)

[ Generated in 0.009 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00012 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00122 SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.144.40.216' WHERE u.id=1
0.00069 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.144.40.216', 1732405807)
0.00049 SELECT * FROM punbb_online WHERE logged<1732405507
0.00089 SELECT topic_id FROM punbb_posts WHERE id=314235
0.00005 SELECT id FROM punbb_posts WHERE topic_id=29905 ORDER BY posted
0.00078 SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=29905 AND t.moved_to IS NULL
0.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00126 SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=29905 ORDER BY p.id LIMIT 0,25
0.00078 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=29905
Total query time: 0.00638 s