Есть скрипт, который заходит на коммутатор и смотрит, на каких портах есть VLAN 2, но ответ от коммутатора приходит ввиде HEX значения (маски портов):
snmpwalk -v2c -O vq -c private 10.0.0.2 SNMPv2-SMI::mib-2.17.7.1.4.3.1.2.2
"20 80 00 00 00 00 00 00 "
То есть VLAN есть на 3 и 9 портах.
snmpwalk -v2c -O vq -c private 10.0.0.3 SNMPv2-SMI::mib-2.17.7.1.4.3.1.2.2
"00 00 01 00 "
То есть VLAN есть на 24порту.
Как осуществить этот перевод на баше я не могу придумать. Проблема осложняется тем что длинна может быть разной: либо 32 либо 64 (зависит от коммутатора). Но тут можно откинуть половину у длинной строки тк. портов точно не больше 32. А вот дальше, при попытке перевести:
echo "ibase=16; obase=2; 2080000000000000" | bc
10000010000000000000000000000000000000000000000000000000000000
#Не хватает нулей.
printf %032d `echo "ibase=16; obase=2; 20800000" | bc`
printf: warning: 100000100000000000000000000000: Numerical result out of range
members1=`echo $members | awk '{ print $1 $2 }' | sed -s 's/\"//'`
memvers1bin=`echo "ibase=16; obase=2; $members1" | bc`
members2=`echo $members | awk '{ print $3 $4 }' | sed -s 's/\"//'`
members2bin=`echo "ibase=16; obase=2; $members2" | bc`
members=`printf %016d $members1bin $members2bin`
И второй вопрос: если ли более локаничный способ обойти переволнение в принтф?