LINUX.ORG.RU

Обработка SNMP запроса

 ,


0

1

Доброго времени суток. есть запись snmp: SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.70.0.34.33.29.3.255 = INTEGER: 28

Задача:
SNMPv2-SMI::mib-2.17.7.1.2.2.1.2. - отрезать 70 - выделить в отдельный столбец
0.34.33.29.3.255 - это мак адрес в десятеричной системе нуже преобразовать в 16 и выделить в отдельный столбец
= INTEGER: 28 - убрать все кроме 28 и тоже поместить в отдельный столбец

в итоге получилось:

#!/bin/bash x=`echo "SNMPv2-SMI::mib-2.17.7.1.2.2.1.2.70.0.34.33.29.3.255 = INTEGER: 28" | sed -e 's|SNMPv2- SMI\:\:mib\-2\.17\.7\.1\.2\.2\.1\.2\.||g'| sed -e 's%\ \=\ INTEGER\:\ %|%g' |sed 's%\ %\n%g'` echo -ne ${x%%'.'*}"\\t" qwe=`echo ${x#*'.'}|sed -e "s|\.| |g"` qwe=`echo ${qwe%'|'*}` printf "%x\n" $qwe | tr -s '\n' ' ' echo -e "\\t ${x##*'|'}"

с выходныи данными:

70 0 22 21 1d 3 ff 28

очень интересует возможность вот такого преобразования: 0 22 21 1d 3 ff > 00 22 21 1d 03 ff

и может есть способ сделать все это по проще ? Заранее благодарю.



Последнее исправление: midius (всего исправлений: 3)

Особо не вникал, но может %02x в параметрах printf поможет.

P.S. Желательно отформатировать код нормально.

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

Спасибо, помогло после изменения:
printf "%02x\n" $qwe | tr -s '\n' ' '
в результате получил:
70 00 22 21 1d 03 ff 28

midius
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.