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?Si vous n'êtes pas derrière un routeur, vous pouvez le trouver en utilisant ifconfig
.
Si vous êtes derrière un routeur, votre ordinateur ne connaîtra pas l'adresse IP publique car le routeur effectue une traduction d'adresse réseau. Vous pouvez demander à un site Web quelle est votre adresse IP publique en utilisant les éléments suivants curl
o wget
et d'en extraire les informations dont vous avez besoin :
curl -s https://checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//'
ou plus court
curl https://ipinfo.io/ip
Pour trouver l'IP externe, vous pouvez soit utiliser des services Web externes, soit utiliser des méthodes basées sur le système. La méthode la plus simple est d'utiliser le service externe, également appelé ifconfig
ne fonctionneront dans votre système que si vous n'êtes pas derrière une NAT
. les deux méthodes ont été examinées en détail ci-dessous.
Trouver l'IP externe en utilisant les services externes
La méthode la plus simple consiste à utiliser un service externe via un navigateur en ligne de commande ou un outil de téléchargement. Depuis wget
est disponible par défaut dans Ubuntu, nous pouvons l'utiliser.
Pour trouver votre ip, utilisez-
$ wget -qO- https://ipecho.net/plain ; echo
Avec l'aimable autorisation de :
- https://hawknotes.blogspot.in/2010/06/finding-your-external-ip-address.html
- https://ipecho.net/plain
Vous pouvez également utiliser lynx
(navigateur) ou curl
à la place de wget
avec des variations mineures de la commande ci-dessus, pour trouver votre ip externe.
Utilisation de curl
pour trouver l'IP :
$ curl https://ipecho.net/plain
Pour une sortie mieux formatée, utilisez :
$ curl https://ipecho.net/plain ; echo
Une méthode plus rapide (sans doute la plus rapide) utilisant dig
avec OpenDNS
comme résolveur :
Les autres réponses ici passent toutes par HTTP vers un serveur distant. Certaines d'entre elles requièrent une analyse de la sortie, ou s'appuient sur l'en-tête User-Agent pour que le serveur réponde en texte clair. Ils changent également assez fréquemment (ils sont fermés, changent de nom, publient des annonces, peuvent format de sortie, etc.)
- Le protocole de réponse DNS est normalisé (le format restera compatible).
- Historiquement, les services DNS (OpenDNS, Google Public DNS, ..) ont tendance à survivre beaucoup plus longtemps et sont plus stables, plus évolutifs et généralement mieux entretenus que n'importe quel nouveau service HTTP à la mode. que le nouveau service HTTP whatismyip.com qui fait fureur aujourd'hui.
- (pour les geeks qui se soucient de micro-optimisation), cette méthode devrait être intrinsèquement plus rapide (ne serait-ce que de quelques microsecondes).
Utilisation de dig avec OpenDNS comme résolveur :
$ dig +short myip.opendns.com @resolver1.opendns.com
111.222.333.444
Copié de : https://unix.stackexchange.com/a/81699/14497
Trouver l'IP externe sans s'appuyer sur des services externes
- Si vous connaissez le nom de votre interface réseau
Tapez ce qui suit dans votre terminal :
$ LANG=c ifconfig <interface_name> | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
Dans le texte ci-dessus, remplacez <interface_name>
avec le nom de votre interface réelle, par ex : eth0
, eth1
, pp0
etc...
Exemple d'utilisation :
$ LANG=c ifconfig ppp0 | grep "inet addr" | awk -F: '{print $2}' | awk '{print $1}'
111.222.333.444
- Si vous ne connaissez pas le nom de votre interface réseau
Tapez ce qui suit dans votre terminal (cela permet d'obtenir le nom et l'adresse IP de chaque interface réseau de votre système) :
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
Exemple d'utilisation :
$ LANG=c ifconfig | grep -B1 "inet addr" |awk '{ if ( $1 == "inet" ) { print $2 } else if ( $2 == "Link" ) { printf "%s:" ,$1 } }' |awk -F: '{ print $1 ": " $3 }'
lo: 127.0.0.1
ppp0: 111.222.333.444
N.B : Les résultats sont indicatifs et non réels.
Courtoisie : https://www.if-not-true-then-false.com/2010/linux-get-ip-address/
アップデイト
-
LANG=c
a été ajouté àifconfig
de sorte qu'il donne toujours la sortie en anglais, quel que soit le paramètre de la locale.
icanhazip.com est mon préféré.
curl icanhazip.com
Vous pouvez demander explicitement l'IPv4 :
curl ipv4.icanhazip.com
Si vous n'avez pas curl
vous pouvez utiliser wget
à la place :
wget -qO- icanhazip.com
Je gère mon propre service, conçu pour être simple et stupide, ident.me.
Son API et sa mise en œuvre sont documentées à l'adresse https://api.ident.me/
Exemples à partir du terminal (ajouter https://
pour la sécurité au détriment de la vitesse) :
curl ident.me
curl v4.ident.me
curl v6.ident.me
- Réponses précédentes
- Plus de réponses
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