Доброго времени суток всем. Пишу скрипт для опроса коммутаторов на предмет прошивки, и последующего их обновления. Структура скрипта: скрипт А:
#!/bin/bash
. ./snmpFunctions
while read LINE
do
snmpCheckFirmwareActuality $LINE $1 $2
done < ./networks_for_scan/list_networks
echo -e "\n\n\n"
echo -e "Итого:"
echo -e "Нуждаются в обновлении: $oldFirmwareCount\n"
echo -e "Имеют актуальное ПО: $actualFirmwareCount\n"
Где $1 - модель коммутатора, $2 - актуальная прошивка, list_networks - текстовый файл с именами файлов с IP адресами(да-да, но подругому никак,нужно было разграничить сеть по районам)
Скрипт В:
#!/bin/bash
cP=public # communityPhrase
counter=0
actualFirmwareCount=0
oldFirmwareCount=0
snmpGetSysModel()
{
model=$(snmpget -v 2c -c $cP -m ALL $1 1.3.6.1.2.1.1.1.0)
modelConverted=$(awk -F ": " 'NR=1{print $2}' <<< $model | awk '{if ($1=="D-Link") print $2; else print $1}')
}
snmpCheckFirmwareActuality().
{
2>>err
while read LINE
do
snmpGetSysModel $LINE
if [[ $modelConverted == $2 ]]; then
switchFirmware=$(snmpget -v 2c -c $cP -m ALL $LINE 1.3.6.1.4.1.171.12.1.2.7.1.2.1 2>>err)
fi
done < $1
}
Я хочу чтобы список всех устройств которые не опросились складывался в файл err.
Но скрипт не отрабатывает так я хочу, ошибки выводятся на экран.
Если я комментирую условие и оставляю только
switchFirmware=$(snmpget -v 2c -c $cP -m ALL $LINE 1.3.6.1.4.1.171.12.1.2.7.1.2.1 2>>err)
Ошибки складываются и в файл и на экран( что мне кстати на руку, но хотелось бы понять почему работает так, ведь должно писать только в файл)