Guten Morgen,
folgendes Problem habe ich: ich möchte in einem Netzwerk mit mehreren Nutzern nur die IP Adressen angezeigt bekommen. Diese dann gelistet bekommen. Ich denke das ist nicht so ein großes Problem leider weiß ich nicht wie ich das realisieren soll. grüße
IP Adressen im Netzwerk auslesen
Hallo,
möchtest du einen Netzwerscanner erstellen oder sollen sich die Benutzer melden?
Beim ersten kannst du z.B: deine IP Range mit Pings durchprobieren.
Im 2. Fall kannst du z.B: einen Broadcast senden, auf den die Mitarbeiter-PCs antworten.
Es kommt auf den Einsatzzweck an. Vielleicht kannst du dein Projekt etwas näher beschreiben.
mfg Manfred
möchtest du einen Netzwerscanner erstellen oder sollen sich die Benutzer melden?
Beim ersten kannst du z.B: deine IP Range mit Pings durchprobieren.
Im 2. Fall kannst du z.B: einen Broadcast senden, auf den die Mitarbeiter-PCs antworten.
Es kommt auf den Einsatzzweck an. Vielleicht kannst du dein Projekt etwas näher beschreiben.
mfg Manfred
Die folgende Lösung benötigt scapy und Root-Rechte, läuft dann aber recht gut
(die IP-Range muss natürlich angepasst werden!)
(die IP-Range muss natürlich angepasst werden!)
Code: Alles auswählen
from scapy.all import arping
class Arping(object):
def __init__(self, iprange):
self._iprange = iprange
def getOnlineIps(self):
(online, offline) = arping(self._iprange, verbose=False)
return [ ether.getfieldval("pdst") for (ether, dummy) in online ]
if __name__ == "__main__":
arp = Arping("192.168.34.0/24")
print(arp.getOnlineIps())
Bei Netzwerk bin ich von LAN ausgegangen, da funktioniert ARP recht gut. Im WAN wird es schwieriger...da wäre es hilfreich die betreffenden IPs der Freunde zu kennen.FoxDie2888 hat geschrieben:ich möchte in einem Netzwerk mit mehreren Nutzern nur die IP Adressen angezeigt bekommen
Vielleicht wäre ja eine Lösung mittels XMPP was für euch. Jeder startet wenn er Online geht eine kleines Script, welches sich bei einen zentralen Jabber-Server anmeldet und seine IP den anderen bekannt gibt. Das sollte normalerweise auch über Netzgrenzen problemlos funktionieren.
@/me
ja bei VLAN funktioniert ARP auch nicht, sind halt getrennte Teilnetze.
@LivingOn: Trotzdem kann man den OP darauf hinweisen, dass ARP nicht über Netzgrenzen hinweg auflöst, damit der OP nicht viel Zeit mit sinnlosen Versuchen verschwenden muss, für den Fall, dass es eben doch kein LAN ist.
@lunar Du hast natürlich vollkommen Recht!
Da mir bei den teilweise recht kurzen Problembeschreibungen häufig nicht immer ganz klar ist, was der Fragesteller nun wirklich möchte, sollte man allumfassend antworten. Leider fühle ich mich hierzu nicht immer in der Lage (weil ich die Frage falsch verstanden habe, mir die Dimension einer Antwort nicht bewußt ist oder einfach die Zeit fehlt). Ich denke ich lese zukünftig hier nur mit und gleiche meine Ideen mit den möglichen Vorschlägen die hier gemacht werden ab. Mir wird es sicherlich weiterhelfen, ob es Euch etwas bringt, weiß ich nicht. Sorry für die Polemik.
Da mir bei den teilweise recht kurzen Problembeschreibungen häufig nicht immer ganz klar ist, was der Fragesteller nun wirklich möchte, sollte man allumfassend antworten. Leider fühle ich mich hierzu nicht immer in der Lage (weil ich die Frage falsch verstanden habe, mir die Dimension einer Antwort nicht bewußt ist oder einfach die Zeit fehlt). Ich denke ich lese zukünftig hier nur mit und gleiche meine Ideen mit den möglichen Vorschlägen die hier gemacht werden ab. Mir wird es sicherlich weiterhelfen, ob es Euch etwas bringt, weiß ich nicht. Sorry für die Polemik.
hallo zusammen,
ich möchte im Netzwerk anhand von MAC adressen die IP-Adressen auslesen.
Ein Teil habe ich bereits
wie kann man den Rückgabewert von os.system(command) weiter verarbeiten oder geht es nur mit subprocess? ich möchte anschließend mit regular expression nach der IP-Adresse suchen.
ich möchte im Netzwerk anhand von MAC adressen die IP-Adressen auslesen.
Ein Teil habe ich bereits
Code: Alles auswählen
import os
command = "arp -a | find \"m-a-c-a-d-r-e-s-s-e\""
os.system(command)
- __blackjack__
- User
- Beiträge: 13163
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@grom: Das ist eher nicht der Weg den man gehen sollte. Irgendwelche Ausgaben von externen Werkzeugen parsen die nicht wirklich dafür vorgesehen sind, sollte man nur machen, wenn es keine ordentliche Lösung gibt. In diesem Fall beispielsweise `python_arptable`:
Code: Alles auswählen
#!/usr/bin/env python3
from python_arptable import get_arp_table
def main():
mac_address = "70:de:f9:67:d5:e4"
for entry in get_arp_table():
if entry["HW address"] == mac_address:
print(f"MAC {mac_address} -> IP {entry['IP address']}")
break
else:
print(f"Keine IP zu {mac_address} gefunden.")
if __name__ == "__main__":
main()
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Danke __blackjack____blackjack__ hat geschrieben: ↑Montag 20. Juli 2020, 14:09 @grom: Das ist eher nicht der Weg den man gehen sollte. Irgendwelche Ausgaben von externen Werkzeugen parsen die nicht wirklich dafür vorgesehen sind, sollte man nur machen, wenn es keine ordentliche Lösung gibt. In diesem Fall beispielsweise `python_arptable`:Code: Alles auswählen
#!/usr/bin/env python3 from python_arptable import get_arp_table def main(): mac_address = "70:de:f9:67:d5:e4" for entry in get_arp_table(): if entry["HW address"] == mac_address: print(f"MAC {mac_address} -> IP {entry['IP address']}") break else: print(f"Keine IP zu {mac_address} gefunden.") if __name__ == "__main__": main()