使用Bash解析ifconfig以获取当前IP地址(wifi或以太网)

时间:2014-11-24 09:59:30

标签: macos bash awk ifconfig

我尝试使用bash脚本输出当前的IP地址。我试图绕过awk并管理以下内容:

/sbin/ifconfig $1 | grep "inet" | awk '$1 == "inet" {gsub(/\/.$/, "", $2); print $2}'

输出:

127.0.0.1
192.168.178.57

我现在有两个问题:首先,127.0.0.1没用,我怎么摆脱它? 其次,192.168.178.57是我的Wi-Fi连接的IP地址。但是,我希望脚本能够获取Wi-Fi或以太网的IP地址,无论我目前使用哪一个。 /sbin/ifconfig的示例输出可以是found here.

4 个答案:

答案 0 :(得分:4)

您可以使用此awk脚本:

awk '/inet / && $2 != "127.0.0.1"{print $2}' <(ifconfig)

答案 1 :(得分:2)

在计算机上获取当前使用的IP的最佳方法。

ip route get 8.8.8.8 | awk '{print $NF;exit}'
192.168.1.30

无论您拥有什么类型的界面,或者您拥有多个界面,它都能正常工作 它测试如何获取公共IP,然后提供出去所需的IP地址。

在此信息中查看更多信息:Linux bash script to extract IP address

答案 2 :(得分:0)

我建议您使用ip命令代替ifconfigip是“未来”,与ifconfig相比更可靠。

$ ip addr show dev $(ip route ls|awk '/default/ {print $5}')|grep -Po 'inet \K(\d{1,3}\.?){4}'
10.251.26.9

这里的oneliner将使用ip route ls命令的默认接口并收集接口ID并基于它来获取该接口的IP地址。

此处grep命令使用正则表达式安全地获取IP地址。

答案 3 :(得分:0)

如果您不介意安装某些内容和/或已有节点,请尝试sindresorhus/internal-ip

$ npm install --global internal-ip
$ internal-ip
192.168.0.2

Pro:跨平台

注意:我知道它不是bash而且它不使用ifconfig,但我在这里寻找一个可以在任何地方使用的通用工具,也许它可以帮助其他人。