sviluppo-web-qa.it

Comando Shell per ottenere l'indirizzo IP?

Esiste un comando bash per trovare l'indirizzo IP per una casella Ubuntu? Devo trovare l'indirizzo IP in modo da poter accedere successivamente alla macchina.

25
opierce

/sbin/ifconfig -a

32
mpbloch

Puoi usare:

/bin/ip addr
26
Robert Swisher

Se si utilizza un indirizzo interno, verificare

curl http://myip.dnsomatic.com

potrebbe essere una buona idea su shell unix.
In alternativa, inserisci l'URL nel tuo browser.


Se ricevi una risposta diversa da "ifconfig -a "risultato,
ifconfig ha fornito il tuo indirizzo interno, che probabilmente non funzionerà dall'esterno.


Anche se tutto sembra a posto, potresti avere un firewall in atto che non consentirà connessioni ssh in entrata.
A quel punto dovresti provare la porta di interesse da un browser sulla macchina in,

http://www.canyouseeme.org/

Ciò confermerà la connettività tramite,

  • indirizzo IP esterno (mostrandolo su quella pagina)
  • NAT, Port Forward
  • Firewall
19
nik

/bin/hostname -i

19
James
13
/sbin/ifconfig|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'

Se hai bisogno del tuo indirizzo interno aggiungi l'interfaccia dopo ifconfig, ad es.

 /sbin/ifconfig eth0|grep inet|head -1|sed 's/\:/ /'|awk '{print $3}'
9
Johan

Se sei dietro un NAT e hai bisogno dell'IP pubblico, usa questo:

wget -q -O - checkip.dyndns.org | sed -e 's /. Indirizzo IP attuale: //' -e 's /<. $ //'

tratto da: http://www.go2linux.org/what-is-my-public-ip-address-with-linux

6
JakeRobinson

Se hai più interfacce, potrebbe essere utile specificare quale vuoi IP. se si desidera l'indirizzo IPV4 dell'interfaccia 'eth0':

ip addr show dev eth0 | grep "inet " | awk '{ print $2 }' 

se si desidera l'indirizzo IPV6 dell'interfaccia 'eth0':

ip addr show dev eth0 | grep "inet6 " | awk '{ print $2 }' 

se si desidera cercare un IP tra due interfacce comuni di un laptop, wlan0 ed 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

Se hai bisogno di scoprire quale sia l'indirizzo IP del tuo router, puoi eseguire questo comando.

Dig + short myip.opendns.com @ 208.67.222.222 @ 208.67.220.220

Se stai usando OpenDNS per il tuo server DNS, puoi accorciarlo a:

Dig + short myip.opendns.com

Puoi anche usare questo comando.

arricciatura http://myip.dnsomatic.com
3
Brad Gilbert

Basta arricciare questo pagina :

$ curl wtfismyip.com/text

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

Ecco una riga che funziona anche su Linux e OS X e restituirà il primo indirizzo non locale:

ifconfig | sed -En 's/127.0.0.1//;s/.*inet (addr:)?(([0-9]*\.){3}[0-9]*).*/\2/p'

Invia crediti a https://stackoverflow.com/a/13322549/99834

2
sorin

Il modo più semplice per farlo è probabilmente

ifconfig eth0

supponendo che la macchina abbia un unico indirizzo IP sull'interfaccia cablata predefinita, potrebbe essere necessario

ifconfig wlan0

se è su WiFi.

1
David North
ip address show scope link

Ti mostrerà l'indirizzo IP di living - has link - interfacce. Ma non è un comando bash. Bash non ha alcuna possibilità di conoscere IP e rete.

1
Saabi

Quello che ho capito è che vuoi connettere una macchina Ubuntu remota con IP dinamico. Vai sul sito dyndns.org e apri un account gratuito. Quindi sul computer remoto è necessario installare uno strumento ip dinamico.

Sudo aptitude install dyndns-client

così puoi ssh via macchina remota via

ssh [email protected]

Quindi dopo la configurazione non avrai mai bisogno dell'indirizzo IP della macchina remota.

1
rainman

Ecco cosa sto usando:

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

se hai bisogno di un solo IP di una determinata interfaccia puoi fare:

ifconfig eth0 | grep "inet " | awk '{gsub("addr:","",$2);  print $2 }' 
1
DmitrySemenov

Se stai cercando un indirizzo IP pubblico della casella , puoi utilizzare quanto segue:

  • Dig @ns1.google.com -t txt o-o.myaddr.l.google.com +short | tr -d \"

È possibile utilizzare Dig(1) opzioni come -4 O -6 Per cercare specificamente un indirizzo IPv4 o IPv6; Google fornirà una risposta in un record di tipo TXT, che avrà delle virgolette intorno quando sarà presentato da Dig; se vuoi usare successivamente la variabile con utility come traceroute, devi usare qualcosa come tr (1) per rimuovere le citazioni.

Altre opzioni includono whoami.akamai.net E myip.opendns.com, Che rispondono con i record A e AAAA (anziché TXT come nell'esempio precedente di Google ), quindi non richiedono la rimozione delle virgolette:

  • 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

Ecco uno script di esempio che utilizza tutte le opzioni sopra per impostare le variabili:

#!/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}"

Se stai cercando un indirizzo IP privato o un set di tutti gli indirizzi IP assegnati alla casella, puoi utilizzare una combinazione di ifconfig (su BSD e GNU/Linux ), ip addr (Su ​​GNU/Linux), hostname (opzioni -i E -I Su GNU/Linux) e - netstat per vedere cosa sta succedendo.

0
cnst

Una volta ho golfato l'estrazione dell'indirizzo IP su Linux:

http://www.catonmat.net/blog/golfing-the-extraction-of-ip-addresses-from-ifconfig/

0
Peter Krumins