GNU/Linux >> Linux Esercitazione >  >> Linux

Python:ottieni il gateway predefinito per un'interfaccia locale/indirizzo IP in Linux

L'ultima versione di netifaces può fare anche questo, ma a differenza di pynetinfo , funzionerà su sistemi diversi da Linux (inclusi Windows, OS X, FreeBSD e Solaris).


Sembra che http://pypi.python.org/pypi/pynetinfo/0.1.9 possa farlo, ma non l'ho testato.


Per quelle persone che non vogliono una dipendenza extra e non amano chiamare i sottoprocessi, ecco come farlo tu stesso leggendo /proc/net/route direttamente:

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

Non ho una macchina big-endian su cui testare, quindi non sono sicuro che l'endianness dipenda dall'architettura del tuo processore, ma se lo è, sostituisci < in struct.pack('<L', ... con = quindi il codice utilizzerà l'endianness nativo della macchina.


Per completezza (e per espandere la risposta di alastair), ecco un esempio che utilizza "netifaces" (testato con Ubuntu 10.04, ma dovrebbe essere portatile):

$ 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'

Documentazione per 'netifaces':https://pypi.python.org/pypi/netifaces/


Linux
  1. Linux:come ottenere l'indirizzo IPv4 per un'interfaccia da /proc?

  2. Linux:il modo portatile per ottenere l'indirizzo di origine del percorso predefinito?

  3. Come trovare l'IP del gateway predefinito in Linux

  4. Ottieni il codice sorgente per qualsiasi comando Linux

  5. Ottieni i delta del mouse usando Python! (su Linux)

Oltre 10 migliori IDE Python per Linux

Utilizzo di ifstat per le statistiche di rete Linux

bpython – Un fantastico interprete Python per Linux

Come installare Setuptools per Python su Linux

Come ottenere il tuo indirizzo IP su Linux

Ottieni un indirizzo IP su Linux:scopri i molti modi