52 votes

Comment obtenir l'adresse IPv6 sous Linux ?

J'ai un serveur Linux et je veux trouver l'adresse IPv6 principale à l'aide d'une seule ligne de commande.

Mon commandement jusqu'à présent :

$ ip addr show dev eth0 | sed -e's/^.*inet6 \([^ ]*\)\/.*$/\1/;t;d'

qui montre :

2001:410:0:39:221:28ff:fe46:eef4
fe80::221:28ff:fe46:eef4

Mais je veux une seule occurrence de façon à ce que la sortie se lise comme suit :

2001:410:0:39:221:28ff:fe46:eef4

0voto

Ramalho Points 1

Cela fonctionne sur Debian / Raspbian (raspberry OS).

hostname -I | cut -d " " -f 2

nom d'hôte -I renvoie une ligne formatée : interne_ipv4 ipv6 les IP attribuées à l'interface actuellement utilisée (éventuellement eth0 ou wlan0, je crois...). comme dans l'exemple suivant (note : faux numéros pour la démonstration) :

192.168.0.64 2001:8905:6322:8401:a63b:35c1:9d20:9a4a

Il suffit ensuite de choisir la deuxième colonne à l'aide de

cut -d " " -f 2

c'est-à-dire, couper en utilisant d éliminateur espacio et choisissez f champ 2 .

0voto

mgutt Points 727

Ceci renvoie l'IPv6 de la toute première interface utilisée :

hostname -I | egrep -o '[0-9a-z:]+:[0-9a-z:]+' | head -n 1

Exemple :

hostname -I
192.168.178.9 172.19.0.1 2003:e0:a73b:f700:b63e:99f0:f5a8:c72d 2003:e0:a73b:f700:b63e:99f0:f5a8:c72e

Résultat :

hostname -I | egrep -o '[0-9a-z:]+:[0-9a-z:]+' | head -n 1
2003:e0:a73b:f700:b63e:99f0:f5a8:c72d

head -n 2 | tail -1 Le retour de la deuxième et de la head -n 3 | tail -1 le troisième résultat.

0voto

Cyril Chaboisseau Points 561

ip -6 a show

est un moyen efficace d'afficher toutes les adresses IPv6, y compris celles qui ne sont malheureusement utilisées que localement (loopback).

Une meilleure solution consiste donc à filtrer certains champs d'application spécifiques ('global', 'dynamic' et 'up') :

ip -o -6 a show scope global dynamic up (un par ligne)

enfin, il peut être facilement "grepable" avec la recherche de motifs IPv6

ip -6 a show scope global dynamic up|egrep -o '([0-9a-f:]+:+)+[0-9a-f]+'

...ou utiliser le -m 1 option grep pour ne conserver que la première correspondance

malheureusement, ce n'est pas nécessairement l'adresse principale ni la plus utilisée

Enfin, pour n'afficher que l'interface principale/préférée utilisée, sélectionnez l'option mngtmpaddr champ d'application :

ip -6 addr show scope global dynamic mngtmpaddr up|egrep -o '([0-9a-f:]+:+)+[0-9a-f]+'

0voto

Donjan Rodic Points 41

Si vous voulez trouver l'adresse IPv6 publique, vous pouvez le faire avec la commande creuser et de l'insérer dans la commande sédimentaire pour supprimer les guillemets.

dig -6 TXT +short o-o.myaddr.l.google.com @ns1.google.com | sed 's|"||g'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X