为什么 SNMP 或 SSH 会阻​​止 while to 循环迭代?

Why SNMP or SSH prevents the while to loop from iterating?

我正在编写代码以通过 SSH 和 SNMP 捕获有关路由器的信息。我在具有 4 种不同路由器配置的网络上工作。在我的脚本 bash 中,一个 while 循环逐行读取路由器的 IP 地址,然后尝试了解配置并最终捕获有关我的路由器的信息。

为此,我使用了一个 while 循环,但它只对一个 IP 地址 运行... 我假设问题来自 SNMP 或 SSH。

我只用

尝试了 while 循环
echo $line

while 循环:

while IFS= read -r line
do
    echo
    echo "line : $line"
    echo

    typeRouter=""
    version=""


    # type multitech V4.1
    type=$(snmpget -v3 -u Ai -l authpriv -a SHA -A "pass" -x AES -X "pass" "$line" 1.3.6.1.4.1.995.14.1.1.8.3.0 | cut -d\" -f2 | cut -d. -f1 )
    if  [[ "$type" == "4" ]]; then
        typeRouter=2
        version=4
    fi


    # type sierra
    type=$(snmpget -v3 -u Ai -l authpriv -a SHA -A "pass" -x AES -X "pass" "$line" iso.3.6.1.4.1.20542.9.1.1.9.7.0 | cut -d\" -f2  ) 
    if [[ "$type" == "LX40" ]]; then
        typeRouter=3
    fi

    case $typeRouter in 
    2)
            echo "Mutlitech"

            # version 4.1 et ultérieur
            MultiV4 "$line" "$txtfile" "pass" "pass"
            ;;

    3) # TODO PASSWORD
        echo "Sierra"

        Sierra "$line" "$txtfile" "pass" "pass"
        ;;

    *)
        echo
        echo "Unknown router model, IP : $line"
        echo
        ;;

    esac

done < "file"

调用的函数

MultiV4 () {
    # "" : @IP
    #  : txtfile
    # "" : mdp snmp
    #  : mdp ssh

    # Files
    txtfile=
    model="Multitech"
    MACtxt="ephemere/mac.txt"


    MacAddressRouter=$(snmpget -v3 -u Ai -l authpriv -a SHA -A "" -x AES -X "" "" iso.3.6.1.4.1.995.14.1.1.5.1.0 | cut -d\" -f2)
    echo "Router MAC address : $MacAddressRouter"

    sshpass -p "" ssh -o StrictHostKeyChecking=no admin@""  "cat /proc/net/arp" > "$MACtxt"

    rssiPacket=$(snmpget -v3 -u Ai -l authpriv -a SHA -A "" -x AES -X "" "" iso.3.6.1.4.1.995.14.1.1.3.5.0 | cut -d: -f2 | cut -d\" -f2 | tr -d dBm)
    echo "RSSI packet : $rssiPacket"

    firmware=$(snmpget -v3 -u Ai -l authpriv -a SHA -A "" -x AES -X "" "" iso.3.6.1.4.1.995.14.1.1.3.4.0 | cut -d: -f2 | cut -d\" -f2)
    echo "Firmware version : $firmware"

    echo "$MacAddressRouter", "$MacAddressPlayer", "$rssiPacket", "$model", "$firmware", "$imei", "$SIMStatus", "$operator", "$connectionType", "$IPaddress", "$SINR", "$RSRP", "$RSRQ" >> "$txtfile"
}

我的档案

10.252.144.138
10.252.144.140
10.252.144.23
10.252.144.15
10.252.144.134

你能帮我看看为什么 运行ning 只循环一次吗?

我使用

解决了这个问题
ssh -n 

查看此答案以获得更多解释:Shell script while read line loop stops after the first line