Existe-t-il une commande bash pour trouver l'adresse IP d'une boîte Ubuntu? J'ai besoin de trouver l'adresse IP pour pouvoir plus tard entrer dans la machine.
/sbin/ifconfig -a
Vous pouvez utiliser:
/bin/ip addr
Si vous avez une adresse interne utilisée, vérifiez
curl http://myip.dnsomatic.com
pourrait être une bonne idée sur les shells Unix.
Ou, insérez simplement cette URL dans votre navigateur.
Si vous obtenez une réponse différente de la "ifconfig -a
" résultat,
le ifconfig
a donné votre adresse interne - qui ne fonctionnera probablement pas de l'extérieur.
Même si tout semble bien, vous pourriez avoir un pare-feu en place qui interdira les connexions ssh entrantes.
À quel moment vous devriez essayer le port d'intérêt à partir d'un navigateur sur la machine à,
http://www.canyouseeme.org/
Cela confirmera la connectivité à travers,
/bin/hostname -i
curl icanhazip.com
tee hee!
Depuis http://www.commandlinefu.com/commands/view/2966/return-external-ip
/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
Si vous avez besoin de votre adresse interne, ajoutez votre interface après ifconfig, par ex.
/sbin/ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
Si vous êtes derrière un NAT et avez besoin de l'IP publique, utilisez ceci:
wget -q -O - checkip.dyndns.org | sed -e 's /. Adresse IP actuelle: //' -e 's /<. $ // '
extrait de: http://www.go2linux.org/what-is-my-public-ip-address-with-linux
Si vous avez plusieurs interfaces, il pourrait être utile de spécifier celle que vous souhaitez IP. si vous voulez l'adresse IPV4 de l'interface 'eth0':
ip addr show dev eth0 | grep "inet " | awk '{ print $2 }'
si vous voulez l'adresse IPV6 de l'interface 'eth0':
ip addr show dev eth0 | grep "inet6 " | awk '{ print $2 }'
si vous souhaitez rechercher une IP entre deux interfaces communes d'un ordinateur portable, wlan0 et eth0:
CURRENT_IP=''
for INTERFACE in wlan0 eth0; do
if [ -z $CURRENT_IP ]; then
CURRENT_IP=$(ip addr show dev $INTERFACE | grep "inet " | awk '{ print $2 }')
fi
done
Si vous avez besoin de connaître l'adresse IP de votre routeur, vous pouvez exécuter cette commande.
Dig + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220
Si vous utilisez OpenDNS pour votre serveur DNS, vous pouvez le raccourcir en:
Dig + short myip.opendns.com
Vous pouvez également utiliser cette commande.
curl http://myip.dnsomatic.com
Il suffit de boucler cela page :
$ curl wtfismyip.com/text
LOCAL_IP=`/bin/hostname -I | sed 's/ //g'`
Voici une ligne qui fonctionne aussi sur Linux et OS X, et elle renverra la première adresse qui n'est pas locale:
ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'
Envoyez des crédits à https://stackoverflow.com/a/13322549/99834
La façon la plus simple de s'y prendre est probablement
ifconfig eth0
en supposant que la machine a une seule adresse IP sur l'interface filaire par défaut - vous pourriez avoir besoin
ifconfig wlan0
si c'est sur WiFi.
ip address show scope link
Il vous montrera l'adresse IP de la vie - a des interfaces de liaison. Mais ce n'est pas une commande bash. Bash n'a aucune capacité de connaître l'IP et le réseau.
Ce que je comprends, c'est que vous voulez connecter une machine Ubuntu distante qui a une adresse IP dynamique. Allez sur le site dyndns.org et ouvrez un compte gratuit. Ensuite, sur la machine distante, vous devez installer un outil IP dynamique.
Sudo aptitude install dyndns-client
vous pouvez donc ssh machine distante via
ssh [email protected]
Ainsi, après la configuration, vous n'aurez jamais besoin de l'adresse IP de la machine distante.
Voici ce que j'utilise:
LC_ALL=C /sbin/ifconfig | awk '
/inet addr/ {
gsub("addr:","");
if(($2!="127.0.0.1") && ($2!="0.0.0.0") && ($2!=""))
{ print $2 };
}'
si vous n'avez besoin que d'une seule IP d'une interface donnée, vous pouvez faire:
ifconfig eth0 | grep "inet " | awk '{gsub("addr:","",$2); print $2 }'
Si vous recherchez un adresse IP publique de la boîte , vous pouvez utiliser ce qui suit:
Dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \"
Vous pouvez utiliser les options Dig(1)
comme -4
Ou -6
Pour rechercher spécifiquement une adresse IPv4 ou IPv6; Google fournira une réponse dans un enregistrement de type TXT
, qui sera entouré de guillemets lorsqu'il sera présenté par Dig
; si vous souhaitez utiliser ultérieurement la variable avec des utilitaires comme traceroute
, vous devez utiliser quelque chose comme tr (1) pour supprimer lesdits guillemets.
Les autres options incluent whoami.akamai.net
Et myip.opendns.com
, Qui répondent avec des enregistrements A
et AAAA
(au lieu de TXT
comme dans l'exemple ci-dessus de Google ), ils ne nécessitent donc pas la suppression des guillemets:
Dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short
Dig -4 @resolver1.opendns.com -t any myip.opendns.com +short
Dig -6 @resolver1.opendns.com -t any myip.opendns.com +short
Voici un exemple de script qui utilise toutes les options ci-dessus pour définir les variables:
#!/bin/sh
IPANY="$(Dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv4="$(Dig -4 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
GOOGv6="$(Dig -6 @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \")"
AKAMv4="$(Dig -4 @ns1-1.akamaitech.net -t a whoami.akamai.net +short)"
CSCOv4="$(Dig -4 @resolver1.opendns.com -t a myip.opendns.com +short)"
CSCOv6="$(Dig -6 @resolver1.opendns.com -t aaaa myip.opendns.com +short)"
printf '$GOOG:\t%s\t%s\t%s\n' "${IPANY}" "${GOOGv4}" "${GOOGv6}"
printf '$AKAM:\t%s\n$CSCO:\t%s\t%s\n' "${AKAMv4}" "${CSCOv4}" "${CSCOv6}"
Si vous recherchez une adresse IP privée ou un ensemble de toutes les adresses IP attribuées à la boîte, vous pouvez utiliser une combinaison de ifconfig
(sur BSD et GNU/Linux ), ip addr
(Sur GNU/Linux), hostname
(options -i
Et -I
Sur GNU/Linux) et - netstat
pour voir ce qui se passe.
J'ai déjà joué à l'extraction d'adresse IP sous Linux:
http://www.catonmat.net/blog/golfing-the-extraction-of-ip-addresses-from-ifconfig/