Finden Sie heraus, in welchem ​​Netzwerkbereich sich der Benutzer befindet?

Finden Sie heraus, in welchem ​​Netzwerkbereich sich der Benutzer befindet?

Ich erstelle einen Netzwerkscanner, der in jedem Netzwerk funktioniert. Dies ist mein bisheriger Code

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

Das Problem besteht allerdings darin, dass dies nur funktioniert, wenn Ihr IP-Bereich 192.168.0.1-255 ist. Wenn die IP 10.10.10.1 ist, wird nichts zurückgegeben.

Gibt es eine Möglichkeit, den Netzwerkbereich des Benutzers abzurufen und auf mein Skript anzuwenden?

Bearbeiten: Ich führe als Root aus

Antwort1

Es gibt keine portable Möglichkeit.

Unter Linux können Sie alle IPv4-Subnetze auflisten, zu denen der Host gehört, indem Sie Folgendes verwenden:

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

(Beachten Sie, dass esmehr als eine.)

Antwort2

Sie können die aktuellen Netzwerkdetails aus der Ausgabe von extrahierenifconfig -a

Damit sollten Sie in der Lage sein, Variablen für Ihre For-Schleife einzurichten. Es ist möglicherweise einfacher, mit ganzzahligen Adressen als mit gepunkteten Quads zu arbeiten.

Es wird mehrere Adressbereiche geben, einige davon IPV4 und einige IPV6.

Das Erkennen von Netzwerken in der Nähe, mit denen die aktuelle Maschine nicht direkt verbunden ist, würde einen wesentlich größeren Arbeitsaufwand erfordern.

verwandte Informationen