【问题标题】:timeout as a condition超时作为条件
【发布时间】:2016-11-03 16:56:24
【问题描述】:

我正在尝试使用 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

【问题讨论】:

    标签: bash snmp


    【解决方案1】:

    我使用-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
    

    【讨论】:

      猜你喜欢
      • 2020-08-08
      • 2019-07-07
      • 2021-03-27
      • 1970-01-01
      • 1970-01-01
      • 2011-10-31
      • 2022-01-17
      • 2023-04-03
      • 2019-04-27
      相关资源
      最近更新 更多