Shellscript для мониторинга файла журнала, если ключевое слово срабатывает, а затем выполните команду snmptrap - PullRequest
0 голосов
/ 02 ноября 2018

Есть ли способ контролировать файл журнала, используя shell script как tail -f /var/log/errorlog.txt затем, если появится что-то вроде down, генерируйте SNMPTRAP до snmp manager и продолжайте мониторинг

У меня есть сценарий SNMP для генерации SNMPTrap, и он выглядит как

snmptrap -v v2c -c community host "Error message"

Позволяет сказать, что имя сценария snmp.sh

У меня вопрос, как выполнить следующую операцию

  1. Хвост бревна
  2. если ключевое слово [down] соответствует, используйте скрипт snmp.sh для отправки оповещения
  3. еще оставить

Согласно предложению я попробовал это

tail -F  /data/log/test.log |

egrep -io 'got signal 15 | now exiting' | 

while read -r line ;
do

    case "$line" in
       "got signal 15")
        echo "hi"
            ;;
        "now exiting")
        echo "hi2"
             ;;
        *)


    esac
done

но проблема в том, что tail не работает здесь с оператором case, всякий раз, когда добавляются новые данные журнала, он не идет в оператор case и выводит вывод

Я мог бы получить вывод, если я использую cat / less / more

Не могли бы вы кто-нибудь сказать, пожалуйста, какую ошибку я здесь совершил?

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

1001 * попробовать *

tail -f /var/log/errorlog.txt | grep "down" | while read line; do snmp.sh; done
0 голосов
/ 02 ноября 2018

Звучит так, как вы хотите, это:

tail -f /var/log/errorlog.txt | grep -e down -e unmounted | while read -r line
do
    case "$line" in
        down)
            ./snmp.sh …
            ;;
        unmounted)
            ./snmp.sh …
            ;;
        *)
            echo "Unhandled keyword ${line}" >&2
            exit 1
    esac
done
...