it-swarm-id.com

Perintah Shell untuk Mendapatkan Alamat IP?

Apakah ada perintah bash untuk menemukan alamat IP untuk kotak Ubuntu? Saya perlu menemukan alamat IP sehingga saya dapat ssh ke mesin nanti.

25
opierce

/sbin/ifconfig -a

32
mpbloch

Kamu bisa menggunakan:

/bin/ip addr
26
Robert Swisher

Jika Anda memiliki alamat internal yang digunakan, periksa

curl http://myip.dnsomatic.com

mungkin ide yang bagus di shell unix.
Atau, cukup masukkan URL itu ke browser Anda.


Jika Anda mendapat jawaban berbeda dari "ifconfig -a "hasil,
ifconfig memberikan alamat internal Anda - yang mungkin tidak akan berfungsi dari luar.


Bahkan jika semua tampak baik-baik saja, Anda dapat memiliki firewall di tempat yang akan melarang koneksi masuk ssh.
Pada saat itu Anda harus mencoba port of interest dari browser di mesin di,

http://www.canyouseeme.org/

Itu akan mengkonfirmasi konektivitas melalui,

  • alamat IP eksternal (menunjukkannya kepada Anda di halaman itu)
  • NAT, Port Forward
  • Firewall
19
nik

/bin/hostname -i

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

Jika Anda memerlukan alamat internal Anda menambahkan antarmuka Anda setelah ifconfig, mis.

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

Jika Anda berada di belakang NAT, dan memerlukan IP publik, gunakan ini:

wget -q -O - checkip.dyndns.org | sed -e 's /. Alamat IP Saat Ini: //' -e 's /<. $ // '

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

6
JakeRobinson

Jika Anda memiliki banyak antarmuka, bisa berguna untuk menentukan IP mana yang Anda inginkan. jika Anda ingin alamat IPV4 antarmuka 'eth0':

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

jika Anda ingin alamat IPV6 antarmuka 'eth0':

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

jika Anda ingin mencari IP antara dua antarmuka umum sebuah laptop, wlan0 dan 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

Jika Anda perlu mencari tahu apa alamat IP router Anda, Anda bisa menjalankan perintah ini.

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

Jika Anda menggunakan OpenDNS untuk server dns Anda, Anda dapat mempersingkatnya menjadi:

Gali + short myip.opendns.com

Anda juga bisa menggunakan perintah ini.

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

Hanya menggulung ini halaman :

$ curl wtfismyip.com/text

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

Berikut ini adalah satu baris yang berfungsi di Linux dan OS X juga, dan itu akan mengembalikan alamat pertama yang bukan lokal:

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

Kirim kredit ke https://stackoverflow.com/a/13322549/99834

2
sorin

Mungkin cara paling sederhana untuk melakukannya

ifconfig eth0

dengan asumsi mesin memiliki alamat IP tunggal pada antarmuka kabel standar - Anda mungkin perlu

ifconfig wlan0

jika ada WiFi.

1
David North
ip address show scope link

Ini akan menunjukkan kepada Anda alamat IP living - memiliki tautan - antarmuka. Tapi itu bukan perintah bash. Bash tidak memiliki kemampuan untuk mengetahui tentang IP dan jaringan sama sekali.

1
Saabi

Yang saya mengerti adalah Anda ingin menghubungkan mesin ubuntu jarak jauh yang memiliki ip dinamis. Buka situs dyndns.org dan buka akun gratis. Kemudian pada mesin jarak jauh Anda perlu menginstal alat ip dinamis.

Sudo aptitude install dyndns-client

sehingga Anda dapat ssh melalui mesin remote

ssh [email protected]

Jadi setelah konfigurasi, Anda tidak akan memerlukan alamat ip mesin jarak jauh.

1
rainman

Inilah yang saya gunakan:

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

jika Anda hanya membutuhkan satu IP antarmuka yang dapat Anda lakukan:

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

Jika Anda mencari alamat IP publik kotak , Anda dapat menggunakan yang berikut:

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

Anda dapat menggunakan Dig(1) opsi seperti -4 Atau -6 Untuk secara spesifik mencari alamat IPv4 atau IPv6; Google akan memberikan jawaban dalam catatan tipe TXT, yang akan memiliki tanda kutip ketika disajikan oleh Dig; jika Anda ingin kemudian menggunakan variabel dengan utilitas seperti traceroute, Anda harus menggunakan sesuatu seperti tr (1) untuk menghapus tanda kutip kata.

Pilihan lain termasuk whoami.akamai.net Dan myip.opendns.com, Yang menjawab dengan A dan AAAA catatan (bukan TXT seperti dalam contoh di atas dari Google ), jadi, mereka tidak perlu menghapus tanda kutip:

  • 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

Berikut ini contoh skrip yang menggunakan semua opsi di atas untuk mengatur variabel:

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

Jika Anda mencari alamat IP pribadi, atau satu set semua alamat IP yang ditetapkan ke kotak, Anda dapat menggunakan beberapa kombinasi ifconfig (di BSD dan GNU/Linux ), ip addr (Di GNU/Linux), hostname (opsi -i Dan -I Di GNU/Linux) dan - netstat untuk melihat apa yang terjadi.

0
cnst
0
Peter Krumins