Herausfinden welches Netzwerkinterface ein Socket benutzt

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
ppp
User
Beiträge: 13
Registriert: Samstag 24. September 2016, 08:11

Hallo,
ist es möglich über Python3 herauszufinden über welches Interface die u.g. Kommunikation stattfindet? Ich habe in meinem Linuxsystem die Netzwerkinterfaces lo und eno1. Die Kommunikation mit externen Seiten findet über eno1 statt. Aber wie kann ich das über Python3 rauskriegen?

Code: Alles auswählen

def getIp():
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    try:
        # doesn't even have to be reachable
        s.connect(('10.255.255.255', 1))
        IP = s.getsockname()[0]
        print(s)
    except Exception:
        IP = '127.0.0.1'
    finally:
        s.close()
    return IP
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das geht vielleicht irgendwie, aber es ist ein ungewöhnliches Anliegen. Warum glaubst du das brauchen zu müssen? Was ist drin eigentliches Problem?
ppp
User
Beiträge: 13
Registriert: Samstag 24. September 2016, 08:11

Ich möchte die Subnetzmaske zu der IP rauskriegen, die mit 10.255.255.255 kommuniziert. Ich kriege mit der Methode raus, welche IP Adresse ich habe, aber nicht wie die Subnetzmaske ist.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das hier könnte helfen: https://pypi.org/project/netifaces/
ppp
User
Beiträge: 13
Registriert: Samstag 24. September 2016, 08:11

Danke. Damit habe ich auch ein bisschen ausprobiert. Viele Methoden wollen das Interface als Parameter haben. Ich muss mal gucken, ob ich da was finde. Die Rückgabe des muss eindeutig sein. In einem Beispiel auf der Seite sehe ich, dass ein Interface zwei IPs hat.
__deets__
User
Beiträge: 14493
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na via dem socket bekommst du ja die IP über die du raus gekommen bist. Und das kannst du dann mit der Rückgabe abgleichen. Viel einfacher wird’s nicht. Dazu ist routing zu kompliziert.
ppp
User
Beiträge: 13
Registriert: Samstag 24. September 2016, 08:11

Ok. Schade. Muss mit dem Ergebnis von der Methode arbeiten. Dachte, dass es einfacher geht. Danke Dir.
Antworten