Seite 1 von 1

IP Adressen im Netzwerk auslesen

Verfasst: Samstag 14. Mai 2011, 08:17
von FoxDie2888
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

Re: IP Adressen im Netzwerk auslesen

Verfasst: Dienstag 7. Juni 2011, 12:27
von ruzima
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

Re: IP Adressen im Netzwerk auslesen

Verfasst: Samstag 11. Juni 2011, 15:33
von LivingOn
Die folgende Lösung benötigt scapy und Root-Rechte, läuft dann aber recht gut ;-)
(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())

Re: IP Adressen im Netzwerk auslesen

Verfasst: Samstag 11. Juni 2011, 17:25
von lunar
@LivingOn: ARP-Auflösung funktioniert nur bis zum ersten Router im Netzwerk.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Sonntag 12. Juni 2011, 00:22
von /me
lunar hat geschrieben:@LivingOn: ARP-Auflösung funktioniert nur bis zum ersten Router im Netzwerk.
Und bei VLANs kann es auch schon an einem Switch hängen bleiben.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Sonntag 12. Juni 2011, 09:25
von LivingOn
FoxDie2888 hat geschrieben:ich möchte in einem Netzwerk mit mehreren Nutzern nur die IP Adressen angezeigt bekommen
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.
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.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Sonntag 12. Juni 2011, 09:41
von lunar
@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.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Sonntag 12. Juni 2011, 09:57
von jens
wie wäre es nmap per subprocess aufrufen?

Re: IP Adressen im Netzwerk auslesen

Verfasst: Sonntag 12. Juni 2011, 10:17
von LivingOn
@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.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Montag 20. Juni 2011, 11:39
von Leonidas
Eine High-Level-Lösung könnte auch Zeroconf sein, so dass man gleich schaut welche Services in Netzwerk verfügbar sind.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Montag 4. November 2019, 17:11
von grom
hallo zusammen,

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)
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.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Montag 4. November 2019, 17:29
von nezzcarth
Ja, das macht man mit dem subprocess-Modul. Da gibt es entsprechende Methoden, um an die Ausgabe zu kommen. Von der Verwendung von os.system wird heute oft abgeraten.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Montag 20. Juli 2020, 13:35
von grom
Danke!

Re: IP Adressen im Netzwerk auslesen

Verfasst: Montag 20. Juli 2020, 13:48
von Sirius3
Natürlich ist `find` nicht richtig und das Pipe kann man mit subprocess nicht machen, die Filterung würde man auch direkt in Python machen.

Re: IP Adressen im Netzwerk auslesen

Verfasst: Montag 20. Juli 2020, 14:09
von __blackjack__
@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()

Re: IP Adressen im Netzwerk auslesen

Verfasst: Montag 20. Juli 2020, 14:41
von grom
__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()
Danke __blackjack__