web-dev-qa-db-fra.com

Commande Shell pour obtenir l'adresse IP?

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.

25
opierce

/sbin/ifconfig -a

32
mpbloch

Vous pouvez utiliser:

/bin/ip addr
26
Robert Swisher

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,

  • adresse IP externe (vous la montrant sur cette page)
  • NAT, port vers l'avant
  • Pare-feu
19
nik

/bin/hostname -i

19
James
13
chickeninabiscuit
/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}'
9
Johan

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

6
JakeRobinson

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
4
LoreLLo

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
3
Brad Gilbert

Il suffit de boucler cela page :

$ curl wtfismyip.com/text

3
mansi
LOCAL_IP=`/bin/hostname -I | sed 's/ //g'`
2
Mohammed Saqib Rajput

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

2
sorin

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.

1
David North
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.

1
Saabi

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.

1
rainman

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 };
    }'
1
jlliagre

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 }' 
1
DmitrySemenov

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.

0
cnst

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/

0
Peter Krumins