Answers:
使用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优胜美地。
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
只需输入curl ifconfig.me
终端即可。
ipconfig getifaddr en0
用于本地IP。
您可以执行以下操作:
输入ifconfig
或ifconfig -a
。此命令向您显示接口列表及其IP和MAC地址(仅在适用时才显示后者)。您也可以仅键入ifconfig en0
或ifconfig en1
用于特定接口的配置(正如某人在其回答中所说,en0通常是有线以太网,而en1是WiFi接口)。
或者,netstat -i
将列出所有接口,并向您显示已分配给每个接口的IP地址。
通常,当您在一个盒子上运行SSH守护程序时,它将在所有可用接口上侦听,即。您可以使用计算机上配置的任何IP地址通过SSH连接到该计算机(显然,这取决于防火墙规则)。如果您使用的是操作系统所谓的主接口和主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
命令告诉您操作系统的主要接口名称(即,它将是“系统偏好设置” /“网络偏好设置”窗口中列表顶部的名称)以及默认路由器的IP地址。第二个show
命令采用State:/Network/Interface/<ifname>/IPv4
参数(在本例中为en0
),并为您分配了IP地址。您正在“地址”数组中寻找地址,其他两个条目是广播地址和网络掩码。
希望能有所帮助,但是如果不清楚,请告诉我。
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})"
要获取面向Internet的计算机的IP地址,请执行以下操作:
if=`netstat -nr | awk '{ if ($1 ~/default/) { print $6} }'`
ifconfig ${if} | awk '{ if ($1 ~/inet/) { print $2} }'
即使您有多个接口处于活动状态,即使您不知道哪个接口实际上是默认网关,它也应能正常工作。
192.168.0.*)
,而不是暴露于Internet的外部IP地址。)
netstat -nr | grep default
吗?
仅作记录,您可以制作一个包含以下内容的bash脚本,该脚本为您提供外部IP地址
#!/bin/bash
wget -qO - http://ipecho.net/plain; echo
wget
它不是macOS的一部分,需要从非Apple来源安装。
curl -s http://ipecho.net/plain; echo