因此,如果我想通過SSH連接到網絡上的所有設備,使用ARP表來準確知道連接的位置,我該怎麼辦?Bash - 循環播放ARP表並將IP存儲在變量中
的代碼將是這樣的:
#!/bin/bash
for a in $([ARP Table here?])
do
ssh [email protected]$a true
echo "Connected to $a"
done
我不知道如何將IP地址DINAMIC存儲在一個變量。另外我不確定事實上我可以使用這個變量通過ssh進行連接,因爲IP不會是int,而更可能是一個字符串。
編輯:安德魯提出之後我發現我的網絡上不是每個設備可以在我的ARP表,我想知道:
是更好地從0開始到當前網絡掩碼的最大值或在ARP表中搜索?
這裏有兩種情況:
#!/bin/bash
for a in $(seq 255)
do
ssh [email protected]$a true
echo "Connected to 172.18.10.$a"
done
或
#!/bin/bash
for a in $([ARP Table here?])
do
ssh [email protected]$a true
echo "Connected to $a"
done
可能不是一個好方法。無法保證任何給定的本地設備在任何特定時間都會在您的ARP緩存中。 –
@AndrewMedico所以你說,網絡上可能有一些實際的設備,但不是在我的ARP表中。然後我會編輯我的問題。 –
此外,「所有設備」並不足以說明問題。什麼樣的設備? Cisco IOS? JUNOS? FreeBSD還是Linux?如果您正在討論特定主機上的arp緩存,則可以在大多數操作系統中分析arp -an的輸出。但聽安德魯,他說的是真話;你的arp緩存是短暫的,並且依賴於網絡活動。 ARP是一種工具,可讓您的設備互相講以太網,這不是一種網絡管理策略。 – ghoti