Si je vérifie avec google Je peux voir mon IP publique. Y a-t-il quelque chose sur la ligne de commande d'Ubuntu qui me donne la même réponse ?
Réponses
Trop de publicités?Ceux-ci obtiendront les IPs locales :
ifconfig
ou pour une sortie plus courte :
ifconfig | grep inet
également
ip addr show
et probablement :
hostname -I
Cela devrait permettre d'obtenir l'IP externe
wget http://smart-ip.net/myip -O - -q ; echo
N.B. Si cela ne vous dérange pas d'installer curl
, cela aussi :
curl http://smart-ip.net/myip
Pour ceux d'entre nous qui ont un accès de connexion à leurs routeurs, l'utilisation d'un script pour demander au routeur quelle est son' adresse IP WAN est le moyen le plus efficace de déterminer l'adresse IP externe. Par exemple, le script Python suivant imprime l'IP externe de mon routeur Medialink MWN-WAPR300N :
import urllib, urllib2, cookielib
import re
from subprocess import check_output as co
cookie_jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie_jar))
urllib2.install_opener(opener)
def get(url, values=None):
data = None
if values: data = urllib.urlencode(values)
req = urllib2.Request(url, data)
rsp = urllib2.urlopen(req)
return rsp.read()
router = co(['ip', '-o', 'ro', 'list', '0.0.0.0/0']).split()[2]
url = "http://" + router
get(url+"/index.asp")
get(url+"/LoginCheck", dict(checkEn='0', Username='admin', Password='admin'))
page = get(url+"/system_status.asp")
for line in page.split("\n"):
if line.startswith("wanIP = "):
print line.split('"')[1]
exit(1)
Notez que cette méthode n'est pas très sûre (comme c'est le cas avec les informations d'identification en clair et la connexion à la plupart des routeurs), et n'est certainement pas portable (elle doit être modifiée pour chaque routeur). Elle est cependant très rapide et constitue une solution parfaitement raisonnable sur un réseau domestique physiquement sécurisé.
Pour personnaliser le script pour un autre routeur, je recommande d'utiliser l'addon tamperdata dans firefox pour déterminer les requêtes HTTP à effectuer.
2 votes
"avoir une IP dynamique", "SSH utilisant un autre système à travers l'internet", "la commande qui affichera l'IP publique actuelle". Vous voyez le problème de la poule et de l'oeuf ici ? Comment seriez-vous en mesure d'exécuter des commandes sur un serveur distant sans connaître son adresse ? Vous pourriez être plus intéressé par des services comme no-ip.com / DynDNS.org.
0 votes
On ne peut pas SSH sans connaître l'IP publique mon ami... dynDNS coûte cher et le no-ip fonctionne mais la situation ne le permet pas... de toute façon la question a déjà été répondue... merci pour votre suggestion
1 votes
PS duckduckgo.com/?q=ip (pas de ligne de commande, mais pas de grand frère G non plus)
1 votes
Peut-être que cela devrait être une question distincte, mais j'aimerais voir une alerte lorsque mon adresse IP publique change. Pour l'instant, j'utilise simplement les réponses suivantes dans une crontab avec
notify-send
.0 votes
De bonnes solutions ci-dessous. Pour Centos, utilisez :
ifconfig eth1 | sed -nre '/^[^ ]+/{N;s/^([^ ]+).*inet *([^ ]+).*/\2/p}'
où eth1 est le périphérique réseau concerné, vous pouvez omettre la chaîne 'et1' pour afficher les adresses IP de tous les adaptateurs. Au lieu de\2
vous pouvez écrire\1 \2
pour afficher les noms de chaque adaptateur également.0 votes
Aucune des réponses ne montre l'approche correcte. Comme je n'ai pas assez de réputation pour poster une réponse, je vais poster un commentaire sur la façon de l'obtenir sans dépendre de services externes. Il suffit d'exécuter sur le terminal
$ hostname --ip-address