Python: obtenir la passerelle par défaut pour une interface locale / adresse IP dans Linux
Sur Linux, comment puis-je trouver la passerelle par défaut pour une adresse ip locale/interface à l'aide de python?
J'ai vu la question "Comment obtenir une IP interne, externe IP et la passerelle par défaut pour l'UPnP", mais la solution retenue ne montre comment obtenir l'adresse IP locale pour une interface réseau sur windows.
Grâce.
source d'informationauteur GnP
Vous devez vous connecter pour publier un commentaire.
Pour ceux qui ne veulent pas d'un supplément de dépendance et n'aime pas l'appel de sous-processus, voici comment vous le faites vous-même par la lecture de
/proc/net/route
directement:Je n'ai pas de big-endian machine de test, donc je ne suis pas sûr de savoir si l'endianness dépend de l'architecture de votre processeur, mais si c'est, remplacer le
<
dansstruct.pack('<L', ...
avec=
de sorte que le code utilise la machine natif de l'endianness.Pour l'exhaustivité (et de se développer sur alastair réponse), voici un exemple qui utilise "netifaces" (testé sous Ubuntu 10.04, mais ce doit être portable):
Documentation pour "netifaces': https://pypi.python.org/pypi/netifaces/
Il semble http://pypi.python.org/pypi/pynetinfo/0.1.9 peut le faire, mais je n'ai pas testé.
La dernière version de
netifaces
pouvez le faire aussi, mais contrairement àpynetinfo
il va fonctionner sur d'autres systèmes que Linux (y compris Windows, OS X, FreeBSD et Solaris).Vous pouvez l'obtenir comme ceci (Testé avec python 2.7 et Mac OS X Capitain mais devrait fonctionner sur GNU/Linux):
importer des sous-processus