尋找使用者所在的網路範圍?

尋找使用者所在的網路範圍?

我正在製作一個可以在任何網路上工作的網路掃描器。這是我到目前為止的程式碼

fd=$(date +%m%d%y%H%M%S)
echo -e "IP$fd\nReport of IP addresses on this intranet, test started at \n$(date)\n\nThe following IP addresses were found:" > IP$fd.txt
echo -e " Okay. Mind you, this could take a couple of minutes.\nI'll be scanning all 254 possibilities between 192.168.1.1 and 192.168.1.254\nI will ring the system bell when I am done.\nHere we go..."
for i in 192.168.0.{1..254}
do
echo "scanning $i"
if [ "$(ping -q -c1 $i)" ]
then
echo -e "AHA! Got one! ---- $i is up!"
fi
echo "END SCAN"
done
echo -e "That's all I got.\Test completed at\n$(date)\n" >> IP$fd.txt
echo -e \\a
echo -e "Your report is IP$fd.txt, and this is what it says:\n"
exit

但問題是,這僅在您的 IP 範圍為 192.168.0.1-255 時才有效。如果 ip 是 10.10.10.1,它不會回傳任何內容。

無論如何,我可以獲取用戶網路範圍並將其應用到我的腳本中嗎?

編輯:我以 root 身分執行

答案1

沒有便攜的方法。

在 Linux 上,您可以使用下列指令列出主機所屬的所有 IPv4 子網路:

ip -4 route show scope link | awk '{print $1}'

(注意,可以有超過一個.)

答案2

您可以從輸出中提取當前網路詳細信息ifconfig -a

由此您應該能夠為 for 迴圈設定變數。使用整數位址可能比使用點四邊形位址更容易。

將有多個位址範圍,其中一些是 IPV4,一些是 IPV6。

要偵測目前機器未直接連接的附近網路將需要更多的工作。

相關內容