Мониторинг нескольких строк в системном журнале для выполнения сценарияLinux

Ответить
Anonymous
 Мониторинг нескольких строк в системном журнале для выполнения сценария

Сообщение Anonymous »

Я пытаюсь «исправить» недостающие функции в коммутаторах unifi, отключив порт (выключение) на 5 минут при его отключении.
Я отслеживаю файл системного журнала, который получает события системного журнала от коммутаторов unifi. На данный момент я отслеживаю только один порт в целях тестирования. Можно ли расширить эту команду для мониторинга нескольких портов?

Код: Выделить всё

#!/bin/bash
logfile="/home/user/scripts/mona43.$(date +%Y-%m-%d_%H%M).log"
exec 1>> >(ts '[%Y-%m-%d %H:%M:%S]' > "$logfile") 2>&1

echo "Starting monitoring Port 43"
tail -fn0 /var/log/syslog | \
while read line ; do
echo "$line" | grep "USW-Pro-48-PoE-7.1.26+15869: switch: TRAPMGR: Link Down: 0/43"
if [ $? = 0 ]
then
echo "Oh shit Port 43 is disconnected, disable port"
/home/user/scripts/adminp43.sh
echo "5 minutes timer starts, re-enabling Port 43 after that"
sleep 5m
/home/user/scripts/adminp43on.sh
fi
done
adminp43.sh и adminp43on.sh — это просто быстрые и грязные команды Telnet для выключения через ssh без порта выключения. Код работает нормально для одного порта.
Я новичок в написании сценариев Bash, поэтому не уверен, можно ли добавить несколько строк для поиска в хвосте, например echo "$line2 " | grep «Другой порт», а затем добавив его к другому, если $line2 = 0, запустите другой скрипт. При этом и не линейный. Это означает, что $line2 не выполняется, если сначала не найдена $line, а затем выполняется.

Подробнее здесь: https://stackoverflow.com/questions/793 ... ute-script
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»