为什么 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
我正在编写代码以通过 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