Syslog-ng mail: различия между версиями
Материал из noname.com.ua
Перейти к навигацииПерейти к поискуSirmax (обсуждение | вклад) (Новая: =syslog-ng: отправка сообщений на почту при наступлении события= Задача: при наступлении определенного со...) |
Sirmax (обсуждение | вклад) |
||
| Строка 20: | Строка 20: | ||
==mailscript== |
==mailscript== |
||
| + | <PRE> |
||
| + | #!/usr/bin/perl |
||
| + | # file: syslog-mail |
||
| + | # spec: reads a line of input and mails it, designed to be a destination for syslog-ng |
||
| + | |||
| + | use strict; |
||
| + | |||
| + | $0='syslog-mail'; |
||
| + | $|=1; |
||
| + | |||
| + | while (my $msg = <STDIN>) |
||
| + | { |
||
| + | my ($pri,$date,$host,$esrc,$evid,$emsg) = $msg =~ m/<(\d{3})>(\w{3} \d{1,2} \d{2}:\d{2}:\d{2}) ([\w\.\-]+) ([\w ]+)\[(\d+)\] (.+)/o; |
||
| + | open MAILER,'|/usr/sbin/sendmail support@airbites.kh.ua'; |
||
| + | print MAILER "Subject: syslog: Alert: loop detected!!! \nInfo:\n$msg"; |
||
| + | # print MAILER "Subject: syslog: $host $esrc $evid\n\n$emsg\n----\n$msg"; |
||
| + | close MAILER; |
||
| + | } |
||
| + | </PRE> |
||
Версия 12:26, 23 марта 2009
syslog-ng: отправка сообщений на почту при наступлении события
Задача: при наступлении определенного события отправить на почту администратору уведомление. В моем случае я хотел оповещять начальника ремонтной бригады о появлении петли в неуправляемом сегменте сети. Коммутаторы (DES-35xx) настроены на отправку сообщений в сислог.
syslog-ng.conf
Фильтр для выделения нужных событий
filter f_loop_detected { match("LBD loop occurred. Port blocked"); };
Получатель для локального сохранения (кроме как в отдельный файл длдя каждого свитча, все такие события запишуться еще и в отдельный файл)
destination d_loop_detected { file("/var/log/loop_detected.log"); };
Получатель "почтовый скрипт"
destination d_mailto_support { program("/bin/syslog-mail"); };
mailscript
#!/usr/bin/perl
# file: syslog-mail
# spec: reads a line of input and mails it, designed to be a destination for syslog-ng
use strict;
$0='syslog-mail';
$|=1;
while (my $msg = <STDIN>)
{
my ($pri,$date,$host,$esrc,$evid,$emsg) = $msg =~ m/<(\d{3})>(\w{3} \d{1,2} \d{2}:\d{2}:\d{2}) ([\w\.\-]+) ([\w ]+)\[(\d+)\] (.+)/o;
open MAILER,'|/usr/sbin/sendmail support@airbites.kh.ua';
print MAILER "Subject: syslog: Alert: loop detected!!! \nInfo:\n$msg";
# print MAILER "Subject: syslog: $host $esrc $evid\n\n$emsg\n----\n$msg";
close MAILER;
}