Saya tahu Anda bisa melakukannya ifconfig | grep inet
, tetapi itu menunjukkan Anda beberapa alamat IPv4. Bagaimana cara mendapatkan yang spesifik untuk SSHing et al?
Saya tahu Anda bisa melakukannya ifconfig | grep inet
, tetapi itu menunjukkan Anda beberapa alamat IPv4. Bagaimana cara mendapatkan yang spesifik untuk SSHing et al?
Jawaban:
Gunakan ipconfig getifaddr en1
untuk nirkabel, atau ipconfig getifaddr en0
untuk ethernet.
Perbarui :
ipconfig getifaddr en0
default untuk antarmuka wifi.
ifconfig
menunjukkan semua antarmuka dan IP mereka
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
Berikut ini berfungsi untuk saya pada 10,8 dan pada 10,10 Yosemite.
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
Jika Anda menemukan jawaban di atas memberi Anda lebih dari satu, simpan yang berikut ke skrip, dan jalankan sebagai gantinya
#!/usr/bin/env bash
dumpIpForInterface()
{
IT=$(ifconfig "$1")
if [[ "$IT" != *"status: active"* ]]; then
return
fi
if [[ "$IT" != *" broadcast "* ]]; then
return
fi
echo "$IT" | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}'
}
main()
{
# snagged from here: https://superuser.com/a/627581/38941
DEFAULT_ROUTE=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$DEFAULT_ROUTE" ]; then
dumpIpForInterface "$DEFAULT_ROUTE"
else
for i in $(ifconfig -s | awk '{print $1}' | awk '{if(NR>1)print}')
do
if [[ $i != *"vboxnet"* ]]; then
dumpIpForInterface "$i"
fi
done
fi
}
main
Cukup ketikkan curl ifconfig.me
terminal.
ipconfig getifaddr en0
adalah untuk IP lokal.
Anda dapat melakukan hal berikut:
Ketik ifconfig
atau ifconfig -a
. Perintah ini menunjukkan kepada Anda daftar antarmuka beserta IP dan alamat MAC-nya (yang terakhir hanya jika berlaku). Anda juga dapat mengetik ifconfig en0
atau ifconfig en1
untuk konfigurasi antarmuka tertentu saja (seperti yang dikatakan seseorang dalam jawaban mereka, en0 biasanya Ethernet berkabel sedangkan en1 adalah antarmuka WiFi).
Sebagai alternatif, netstat -i
akan mencantumkan semua antarmuka dan akan menunjukkan kepada Anda alamat IP yang telah Anda tetapkan untuk masing-masingnya.
Biasanya, ketika Anda memiliki daemon SSH yang berjalan pada sebuah kotak, ia akan mendengarkan pada semua antarmuka yang tersedia, yaitu. Anda dapat menggunakan alamat IP apa pun yang dikonfigurasi pada mesin Anda untuk terhubung ke mesin itu melalui SSH (ini, jelas, tunduk pada aturan Firewall). Jika Anda mengejar apa yang OS sebut dengan antarmuka Primer dan alamat IP primer, Anda dapat menggunakan scutil
perintah seperti ini:
MacBook:~ scutil
> show State:/Network/Global/IPv4
<dictionary> {
PrimaryInterface : en0
PrimaryService : C0550F84-5C07-484F-8D62-C8B90DC977D8
Router : 10.103.4.1
}
> show State:/Network/Interface/en0/IPv4
<dictionary> {
Addresses : <array> {
0 : 10.103.4.234
}
BroadcastAddresses : <array> {
0 : 10.103.4.255
}
SubnetMasks : <array> {
0 : 255.255.255.0
}
}
Harap dicatat, bahwa di atas, meskipun merupakan perintah baris perintah, juga interaktif (jadi Anda menjalankan scutil
dan kemudian memasukkan perintah sendiri ke dalamnya). show
Perintah pertama memberi tahu Anda nama antarmuka utama untuk OS (yaitu ini akan menjadi yang di atas daftar di jendela System Preferences / Network Preferences Anda), serta alamat IP router default Anda. show
Perintah kedua mengambil State:/Network/Interface/<ifname>/IPv4
argumen (dalam hal ini, en0
) dan memberi Anda alamat IP yang ditugaskan untuk itu. Anda sedang mencari alamat dalam array Alamat, dua entri lainnya adalah alamat broadcast dan netmask.
Semoga itu bisa membantu, tetapi jika ada yang tidak jelas, beri tahu saya.
echo "show State:/Network/Interface/$(echo 'show State:/Network/Global/IPv4' | scutil | grep 'PrimaryInterface ' | sed 's/ PrimaryInterface : //')/IPv4" | scutil | pcregrep -Mo1 " Addresses : <array> {\n 0 : ([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})"
Untuk mendapatkan alamat IP komputer Anda yang menghadap Internet, berikut ini adalah resep yang berfungsi:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
Ini harus bekerja bahkan ketika Anda memiliki beberapa antarmuka aktif, bahkan ketika Anda memiliki antarmuka Anda tidak tahu yang mana sebenarnya gateway default.
192.168.0.*)
netstat -nr | grep default
?
Sebagai catatan, Anda dapat membuat skrip bash dengan konten berikut yang memberi Anda alamat IP eksternal Anda
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
bukan merupakan bagian dari macOS dan perlu diinstal dari sumber non-Apple.
curl -s http://ipecho.net/plain; echo