回答:
ipconfig getifaddr en1
ワイヤレスまたはipconfig getifaddr en0
イーサネットに使用します。
更新:
ipconfig getifaddr en0
wifiインターフェースのデフォルトです。
ifconfig
すべてのインターフェイスとそのIPを示しています
curl -s http://checkip.dyndns.org/ | sed 's/[a-zA-Z<>/ :]//g'
以下は、10.8および10.10 Yosemiteで動作します。
ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}'
上記で複数の答えが得られる場合は、次をスクリプトに保存して、代わりに実行してください
#!/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
次のことができます。
ifconfig
またはを入力しifconfig -a
ます。このコマンドは、IPアドレスとMACアドレス(該当する場合のみ後者)と共に、インターフェイスのリストを表示します。また、特定のインターフェイスのみを入力しifconfig en0
たりifconfig en1
、構成したりすることもできます(誰かが回答で言ったように、en0は通常有線イーサネットで、en1はWiFiインターフェースです)。
別の方法として、netstat -i
すべてのインターフェースをリストし、それぞれに割り当てたIPアドレスを表示します。
通常、SSHデーモンをボックスで実行している場合、利用可能なすべてのインターフェイスでリッスンします。マシンに設定されている任意のIPアドレスを使用して、SSHを介してそのマシンに接続できます(これは、明らかにファイアウォールルールに従います)。OSがプライマリインターフェイスとプライマリIPアドレスを呼び出すことを望んでいる場合は、次のscutil
ようなコマンドを使用できます。
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
}
}
上記は、コマンドラインコマンドですが、インタラクティブでもあることに注意してください(したがって、実行してscutil
から独自のコマンドを入力します)。最初のshow
コマンドは、OSのプライマリインターフェイスの名前(つまり、これが[システム環境設定] / [ネットワーク設定]ウィンドウのリストの一番上に表示されます)とデフォルトルーターのIPアドレスを示します。2番目のshow
コマンドはState:/Network/Interface/<ifname>/IPv4
引数(この場合はen0
)を受け取り、それに割り当てられたIPアドレスを提供します。Addresses配列でアドレスを探しています。他の2つのエントリは、ブロードキャストアドレスとネットマスクです。
それがお役に立てば幸いですが、何か不明な点がある場合はお知らせください。
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})"
インターネットに面しているコンピューターのIPアドレスを取得するための作業手順は次のとおりです。
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
複数のインターフェイスがアクティブな場合でも、実際にデフォルトゲートウェイであるインターフェイスがわからない場合でも機能するはずです。
192.168.0.*)
インターネットに公開されている外部のIPアドレスではありません。
netstat -nr | grep default
ますか?
記録のために、外部IPアドレスを提供する次の内容のbashスクリプトを作成できます
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
はmacOSの一部ではないため、Apple以外のソースからインストールする必要があります。
curl -s http://ipecho.net/plain; echo