Obtenez de l'adresse réseau et le masque de réseau en Python
Dans mon script Python, j'ai besoin de récupérer l'adresse IP de la machine, le script est exécuté et son adresse de réseau et de son réseau d'octets.
Que pour l'adresse IP, j'ai trouvé la solution dans l'archive:
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("www.google.com",80))
myAddress = (s.getsockname()[0])
s.close()
Mais comment dois-je aller sur la recherche de l'adresse réseau et le réseau d'octets? J'ai besoin de mettre cette information dans un filtre pour tcpdump dans le format $NetworkAddress/$NetworkBytes
, si cela aide à tous.
Exemple:
128.1.2.0/20
Je peux les trouver sous inet
quand je lance ip addr
. Un moyen facile d'obtenir cette information en Python?
- NetworkBytes ou le masque de réseau?
- +1 pour montrer ce que vous avez jusqu'à présent
- Qu'entendez-vous par "adresse réseau" et "réseau octets"?
- OK, j'ai ajouté plus de détails à mon post original.
- Votre exemple semble être une adresse IP/préfixe de longueur. Je n'ai toujours aucune idée de ce que vous entendez par "NetworkBytes" parce que si c'est censé dire la même chose que "la longueur du préfixe" puis NetworkBytes est un TRÈS drôle de nom pour appeler ça... de toute façon, si tu veux l'adresse IP/longueur de préfixe, alors, voulez-vous dire que l'adresse IP et la longueur de préfixe attribué à l'une des interfaces locales sur la machine, le script est en cours d'exécution sur?
- Oui, c'est exactement ce que je veux dire.
Vous devez vous connecter pour publier un commentaire.
Pour Linux essayez
ou http://github.com/rlisagor/pynetlinux
(comme suggéré ici: Récupérer le masque de réseau en Python)
Pour Linux, Windows et MacOS envisager http://alastairs-place.net/projects/netifaces/
Mise à jour:
Si vous avez besoin d'cidr (comme '128.1.2.0/20'), vous pouvez utiliser des libs: http://pypi.python.org/pypi?%3Aaction=search&durée=cidr&submit=recherche
Par exemple
netaddr
:Vous pouvez récupérer une ip infos avec pyroute2 module:
Ou comme une variante: