2016-11-03 6 views
0

複数のSNMPコミュニティストリングを持つデバイスのグループをbashスクリプトでポーリングしようとしています。目標は、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 
関連する問題