Заменете SNMP Timeout: Няма отговор от ‹IP_Address› с конкретен текст

Имам скрипт, който запитва подробности за OID чрез SNMPWalk, проблемът е, когато определен IP (пример е 172.20.36.8) не е достъпен, той показва Timeout: No Response from 172.20.36.8. Има ли код, който може да замени този отговор от snmp заявка, така че ако се покаже така, бих искал да се появи думата „Неактивен“ вместо това „Изчакване:...“

ето частта от скрипта, която изпълнявам:

for EACH in `echo $APIP`
  do
    SectorID=`$SNMPWALK -v2c -c Canopy ${EACH} ${SNMPOID}.1.1.16 | awk '{print $4}'
    ActiveSubs=`$SNMPWALK -v2c -c Canopy ${EACH} ${SNMPOID}.1.7.1 | awk '{print $4}'
    UniqueSubs=`$SNMPWALK -v2c -c Canopy ${EACH} ${SNMPOID}.1.7.18 | awk '{print $4}'
    printf "%s\t| %s\t| %s\t| %s\t|\n" "${EACH}" "${SectorID}" "${ActiveSubs}" "${UniqueSubs}"
  done

Ето резултата от споменатата част от скрипта

172.20.36.3     |   1   |      2        |      4        |
172.20.36.4     |   2   |      5        |      8        |
172.20.36.5     |   3   |      11       |      16       |
Timeout: No Response from 172.20.36.6
Timeout: No Response from 172.20.36.6
Timeout: No Response from 172.20.36.6
172.20.36.6     |       |               |      0        |
172.20.36.7     |   5   |      0        |      1        |
Timeout: No Response from 172.20.36.8
Timeout: No Response from 172.20.36.8
Timeout: No Response from 172.20.36.8
172.20.36.8     |       |               |      0        |

когато достигне ip адреса .6 и .8, той показва "Timeout: No Response...". Исках по някакъв начин да го покажа така, ако не срещне отговор от споменатия ip адрес:

172.20.36.3     |   1   |      2        |      4        |
172.20.36.4     |   2   |      5        |      8        |
172.20.36.5     |   3   |      11       |      16       |
172.20.36.6     |  Idle |     Idle      |     Idle      |
172.20.36.7     |   5   |      0        |      1        |
172.20.36.8     |  Idle |     Idle      |     Idle      |

може ли някой там, който може да ми помогне да разреша това? Оценявам много вашите отговори. :)


person Stonesteel    schedule 02.12.2013    source източник
comment
Защо? Не е неактивен. Времето за изчакване е изтекло, докато се опитва да разбере какво всъщност е държавата.   -  person user207421    schedule 02.12.2013
comment
да, не е празен буквално, просто исках да изглежда така, за да знаем, че ip_address не е достъпен.   -  person Stonesteel    schedule 03.12.2013
comment
Отново защо? Защо искате да лъжете потребителите си? „Неактивен“ и „недостъпен“ са различни условия. Няма награди за смесване.   -  person user207421    schedule 05.12.2013
comment
Сър, не лъжа потребителите, всички ние сме техническа поддръжка тук, която иска да има функционален скрипт, който можем да използваме за ежедневната си работа. Всички, които ще използваме споменатия скрипт, знаем, че ако изписва IDLE, това означава, че конкретният ip адрес не е достъпен. Имате ли някакви предложения тогава, сър? можете ли да ми помогнете поне като отправна точка за създаване на код, вместо да критикувате това, което се опитвам да направя?   -  person Stonesteel    schedule 07.12.2013
comment
Не лъжа потребителите, това е терминът, който използвахме в нашата компания, за да идентифицираме кои IP адреси са недостъпни, мисля, че не трябва да разпитваме, нито да критикуваме това, което членовете тук се опитват да направят, полагам усилия да направя определен скрипт, който да помогне на нашата компания да не лъже компанията. Надявам се, че ме разбирате, сър EJP. :)   -  person Stonesteel    schedule 09.12.2013


Отговори (1)


Трябва да можете да направите нещо подобно:

SectorID=`$SNMPWALK -v2c -c Canopy ${EACH} ${SNMPOID}.1.1.16 2>&1 | sed 's/Timeout: No Response.*/Idle/'`
if [ "$SectorId" != "Idle" ] ; then
    SectorID=`echo $SectorID | awk '{ print $4 }'`
fi

Но сложността на този скрипт расте бързо и бих бил много по-изкушен да го пренапиша в по-добра среда за скриптове от sh (не бия bash; използвам го през цялото време) като python или perl. Но ако искате да използвате *sh, бих внедрил поне функция, която да извърши обработката вместо вас веднъж, вместо да повтаря горното 4 пъти. Но ще оставя това като упражнение за читателя.

person Wes Hardaker    schedule 11.12.2013
comment
Благодаря ви, г-н Уес Хардакър. вашият скрипт беше много полезен. Резултатът е това, което очаквам. :) - person Stonesteel; 06.01.2014