Приветствую. Собсно со скриптами на bash и Perl только начинаю разбираться, а сделать бы очень желательно побыстрее. Поэтому пока рою доки и параллельно прошу помощи.
Предпосылки: из-за давно известной ошибки в драйвере freebsd выпадает интерфейс bce. В лог это заносится как
Feb 22 09:18:01 ibm kernel: bce1: ../../../dev/bce/if_bce.c(5002): Watchdog timeout occurred, resetting!
Задача: с помощью средств Perl или Bash выцеплять подобные строчки и подсовывать сообщение в скрипт отправки СМС. Второе пока не столь важно (можно реализовать через проверку наличия файла типа /tmp/watchdog и потом если он есть - отправить смс и грохнуть его).
Вопрос собственно 1: как сделать так, чтобы скрипт искал все совпадения ПОСЛЕ указанного времени (и даты) в файле. А если вдруг ее на обнаружилось - искать с начала файла.
Заранее спасибо за подсказки.
Need help по скрипту (Как выдернуть строчку из логов, если она там не в 1 экземпляре)
Модератор: Модераторы разделов
-
Thug
- Сообщения: 200
Re: Need help по скрипту
Решено вот такой конструкцией:
if ($str =~ /(\w+\s\d{2}\s\d{2}\:\d{2}\:\d{2})\s.+bce(\d).+link state changed to DOWN/) {
my ($date,$bce_num) = ($1,$2);
open (FIL, "./test.txt");
my @fil = <FIL>;
close FIL;
if ($fil[0] ne "$date") {
&s_sms($date,$bce_num);
open (FIL, ">./test.txt");
print FIL $date;
close FIL;
}
if ($str =~ /(\w+\s\d{2}\s\d{2}\:\d{2}\:\d{2})\s.+bce(\d).+link state changed to DOWN/) {
my ($date,$bce_num) = ($1,$2);
open (FIL, "./test.txt");
my @fil = <FIL>;
close FIL;
if ($fil[0] ne "$date") {
&s_sms($date,$bce_num);
open (FIL, ">./test.txt");
print FIL $date;
close FIL;
}
Страйкбол - игра админов :)