2016-11-03 39 views
0

我想用一個bash腳本來輪詢一組具有多個SNMP社區字符串的設備。目標是,如果snmpwalk超時,它會再次嘗試另一個字符串,但是我的狀況是錯誤的。超時作爲條件

while read line 
     do 
       ip="$line" 
       device=$(/usr/bin/snmpwalk -v 2c -c string1 $ip 1.3.6.1.2.1.1.1) 
       if [ $device = false ] 
         then 
         device=$(/usr/bin/snmpwalk -v 2c -c string2 $ip 1.3.6.1.2.1.1.1) 
         if [ $device = false ] 
           then 
           device=$(/usr/bin/snmpwalk -v 2c -c string3 $ip 1.3.6.1.2.1.1.1) 
           break 
         fi 
       fi 
       echo "$ip $device" 
     done < ip-list > device-type 

回答

0

我想通了使用-z,並添加timeout -s KILL 2,因爲它需要這麼長時間。

while read line 
    do 
     ip="$line" 
     device=$(timeout -s KILL 2 /usr/bin/snmpwalk -v 2c -c string1 $ip 1.3.6.1.2.1.1.1) 
      if [ -z "$device" ] 
         then 
         device=$(timeout -s KILL 2 /usr/bin/snmpwalk -v 2c -c string2 $ip 1.3.6.1.2.1.1.1) 
         if [ -z "$device" ] 
           then 
           device=$(timeout -s KILL 2 /usr/bin/snmpwalk -v 2c -c string3 $ip 1.3.6.1.2.1.1.1) 
           if [ -z "$device" ] 
             then 
             device=$(echo " Not my problem ") 
           fi 
         fi 
       fi 
    echo "$ip $device" 
    done < ip-list > device-list