bash - 为什么 SNMP 或 SSH 会阻止 while 循环迭代?
问题描述
由于 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 () {
# "$1" : @IP
# $2 : txtfile
# "$3" : mdp snmp
# $4 : mdp ssh
# Files
txtfile=$2
model="Multitech"
MACtxt="ephemere/mac.txt"
MacAddressRouter=$(snmpget -v3 -u Ai -l authpriv -a SHA -A "$3" -x AES -X "$3" "$1" iso.3.6.1.4.1.995.14.1.1.5.1.0 | cut -d\" -f2)
echo "Router MAC address : $MacAddressRouter"
sshpass -p "$4" ssh -o StrictHostKeyChecking=no admin@"$1" "cat /proc/net/arp" > "$MACtxt"
rssiPacket=$(snmpget -v3 -u Ai -l authpriv -a SHA -A "$3" -x AES -X "$3" "$1" 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 "$3" -x AES -X "$3" "$1" 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
你能帮我为什么循环只运行一次吗?
解决方案
推荐阅读
- configuration - Zookeeper 如何管理其他集群中的节点角色?
- ios - Firebase 推送通知徽章计数是否会在 iOS 中自动增加?
- node.js - 如何为 Node 打包服务器端 JavaScript
- python - 如何在 python 数据表中查找和标记重复项
- docusignapi - Docusign:如何列出管理员帐户中的所有信封
- c++ - C ++:带有花括号初始化列表的函数调用表达式-标准是否规定在单个元素列表的微不足道的情况下忽略大括号?
- android - 不明白使用 sintaxis 吗?在文本外观
- timber - 如何使插件页面与 Timber 一起使用?
- swift - 从函数触发 segue(没有 UI 元素)
- reactjs - 从 Web Client repo 到 Web Client、App Client、Utils/API