web-dev-qa-db-fra.com

Rechercher des adresses IP réseau (externes) à l'aide de Python

Je souhaite connaître mon adresse IP de fournisseur Internet (externe) (large bande ou autre) avec Python.

Plusieurs machines sont connectées à ce réseau. J'ai essayé de manière différente, mais je n'ai eu que la machine IP publique et locale. Comment trouver mon adresse IP externe via Python?

Merci d'avance.

15
Mulagala

Utilisez ce script:

import urllib, json

data = json.loads(urllib.urlopen("http://ip.jsontest.com/").read())
print data["ip"]

Sans json:

import urllib, re

data = re.search('"([0-9.]*)"', urllib.urlopen("http://ip.jsontest.com/").read()).group(1)
print data

Autrement, il fallait analyser la commande ifconfig (= linux) ou ipconfig (= windows), mais faire attention au système Windows traduit (Ipconfig était traduit).

Exemple de lib pour linux: ifparser .

19
A-312

Option sécurisée (avec support https)

from requests import get

get('https://ipapi.co/ip/').text

Terminer Réponse JSON

P.S. Le module requests convient au support https. Vous pouvez essayer httplib quoique.

12
user6250071

Vous devrez utiliser une source externe fiable. Python2.x:

from urllib import urlopen
import json
url = 'http://api.hostip.info/get_json.php'
info = json.loads(urlopen(url).read())
print(info['ip'])

Si vous souhaitez plus d'informations, vous pouvez imprimer davantage de valeurs à partir de info.

Oneliner non python:

wget -q -O- icanhazip.com
3
timgeb

Vous pouvez vérifier cette réponse:

https://stackoverflow.com/a/22157882/5687894

TL; DR:

import ipgetter
ip=ipgetter.myip()
2
Sebastian Hietsch

A mon avis, la solution la plus simple est de

f = requests.request('GET', 'http://myip.dnsomatic.com')
ip = f.text

C'est tout.

0
Jit9