Сегрегировать данные в лог-файлах

Простой путь вперед - поместить выходные данные каждого вызова snmpwalk в переменную, а затем объединить их с небольшим awk фильтрация, что-то вроде:

#!/bin/sh
DBFILE=$(cat /tmp/routers.all | awk -F: '{print $1}'| grep access)

for OUTPUT in $DBFILE do
    FIRST_HALF=`/usr/bin/snmpwalk -Os -c pass -v 2c $OUTPUT iso.0.8802.1.1.2.1.4.1.1.8.0 | tr -d "\"" | sed -r 's/ /./g' |awk  -F. '{print "'"$OUTPUT"'"","$13","$22","}'`
    SECOND_HALF=`/usr/bin/snmpwalk -Os -c pass -v 2c $OUTPUT iso.0.8802.1.1.2.1.4.1.1.9.0 | tr -d "\"" | sed -r 's/ /./g' |awk  -F. '{print "'"$OUTPUT"'"","$13","$17","}' |awk 'BEGIN{FS=","}{print($3)}'`
    echo ${FIRST_HALF}${SECOND_HALF}
done

что, я думаю, приводит к

access1a,1,server6,eth0
access1a,2,server4,eth0
access1a,3,server1,eth0

Помогает ли это?

Раскрытие: я не знаком с snmpwalk, поэтому может быть лучший вариант.

0
16.08.2018, 12:34
2 ответа

Не уверен, что полностью понимаю проблему. Что мешает вам использовать, например. grep? Попробуйте

grep "An HTTP error occurred." path/to/logfile

и перенаправить результат в соответствующий файл.

0
28.01.2020, 04:13

Если вы знаете, что хотите видеть только эти три строки, запросите grepих:

grep -E ": An HTTP error occurred\.\$|: Socket Timed out'\.\$|: Invalid Parameters'\.\$" input

Я немного закрепил тексты, заставив каждый из них начинаться с двоеточия -пробела (:), а также заставив их быть в конце строки $. Точка и $экранированы, потому что я использовал двойные -кавычки вокруг параметра grep из-за одинарных -кавычек, появляющихся в тексте поиска.

0
28.01.2020, 04:13

Теги

Похожие вопросы