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.
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 .
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.
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
Vous pouvez vérifier cette réponse:
https://stackoverflow.com/a/22157882/5687894
TL; DR:
import ipgetter
ip=ipgetter.myip()
A mon avis, la solution la plus simple est de
f = requests.request('GET', 'http://myip.dnsomatic.com')
ip = f.text
C'est tout.