GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Python:Erhalten Sie ein Standard-Gateway für eine lokale Schnittstelle/IP-Adresse in Linux

Die neueste Version von netifaces kann das auch, aber anders als pynetinfo , es funktioniert auf anderen Systemen als Linux (einschließlich Windows, OS X, FreeBSD und Solaris).


Es scheint, dass http://pypi.python.org/pypi/pynetinfo/0.1.9 dies tun kann, aber ich habe es nicht getestet.


Für diejenigen, die keine zusätzliche Abhängigkeit wünschen und keine Unterprozesse aufrufen möchten, können Sie dies selbst tun, indem Sie /proc/net/route lesen direkt:

import socket, struct

def get_default_gateway_linux():
    """Read the default gateway directly from /proc."""
    with open("/proc/net/route") as fh:
        for line in fh:
            fields = line.strip().split()
            if fields[1] != '00000000' or not int(fields[3], 16) & 2:
                # If not default route or not RTF_GATEWAY, skip it
                continue

            return socket.inet_ntoa(struct.pack("<L", int(fields[2], 16)))

Ich habe keinen Big-Endian-Rechner zum Testen, daher bin ich mir nicht sicher, ob die Endianness von Ihrer Prozessorarchitektur abhängt, aber wenn dies der Fall ist, ersetzen Sie die < in struct.pack('<L', ... mit = Daher verwendet der Code die native Endianness der Maschine.


Der Vollständigkeit halber (und um die Antwort von Alastair zu erweitern) ist hier ein Beispiel, das "netifaces" verwendet (getestet unter Ubuntu 10.04, aber dies sollte portabel sein):

$ sudo easy_install netifaces
Python 2.6.5 (r265:79063, Oct  1 2012, 22:04:36)
...
$ ipython
...
In [8]: import netifaces
In [9]: gws=netifaces.gateways()
In [10]: gws
Out[10]:
{2: [('192.168.0.254', 'eth0', True)],
 'default': {2: ('192.168.0.254', 'eth0')}}
In [11]: gws['default'][netifaces.AF_INET][0]
Out[11]: '192.168.0.254'

Dokumentation für 'netifaces':https://pypi.python.org/pypi/netifaces/


Linux
  1. Linux – Antworten auf derselben Schnittstelle wie eingehende?

  2. So finden Sie die Standard-Gateway-IP in Linux

  3. Holen Sie sich den Quellcode für jeden Linux-Befehl

  4. So erhalten Sie die Fensterbreite der Linux-Konsole in Python

  5. Holen Sie sich die Dateierstellungszeit mit Python unter Linux

10+ beste Python-IDEs für Linux

Verwenden von ifstat für Linux-Netzwerkstatistiken

bpython – Ein schicker Python-Interpreter für Linux

So installieren Sie Setuptools für Python unter Linux

So erhalten Sie Ihre IP-Adresse unter Linux

Holen Sie sich eine IP-Adresse unter Linux:Entdecken Sie die vielen Möglichkeiten