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 en1untuk nirkabel, atau ipconfig getifaddr en0untuk ethernet.
Perbarui :
ipconfig getifaddr en0 default untuk antarmuka wifi.
ifconfigmenunjukkan 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.meterminal.
ipconfig getifaddr en0adalah untuk IP lokal.
Anda dapat melakukan hal berikut:
Ketik ifconfigatau 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 en0atau ifconfig en1untuk konfigurasi antarmuka tertentu saja (seperti yang dikatakan seseorang dalam jawaban mereka, en0 biasanya Ethernet berkabel sedangkan en1 adalah antarmuka WiFi).
Sebagai alternatif, netstat -iakan 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 scutilperintah 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 scutildan kemudian memasukkan perintah sendiri ke dalamnya). showPerintah 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. showPerintah kedua mengambil State:/Network/Interface/<ifname>/IPv4argumen (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
wgetbukan merupakan bagian dari macOS dan perlu diinstal dari sumber non-Apple.
curl -s http://ipecho.net/plain; echo