首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Bash解析ifconfig以获取当前IP地址(wifi或以太网)

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

Stack Overflow用户
提问于 2014-11-24 17:59:30
回答 4查看 2.4K关注 0票数 3

我正在尝试使用bash脚本输出我当前的IP地址。我试着把我的头脑围绕在awk上,并管理了以下内容:

代码语言:javascript
复制
/sbin/ifconfig $1 | grep "inet" | awk '$1 == "inet" {gsub(/\/.$/, "", $2); print $2}'

以下哪项输出:

代码语言:javascript
复制
127.0.0.1
192.168.178.57

我现在有两个问题:首先,127.0.0.1是无用的,我如何摆脱它?其次,192.168.178.57是我的Wi-Fi连接的IP地址。然而,我希望该脚本能够抓取的IP地址的Wi-Fi或以太网,无论是我正在使用的时刻。/sbin/ifconfig的示例输出可以是found here.

EN

回答 4

Stack Overflow用户

发布于 2014-11-24 18:12:02

您可以使用此awk脚本:

代码语言:javascript
复制
awk '/inet / && $2 != "127.0.0.1"{print $2}' <(ifconfig)
票数 4
EN

Stack Overflow用户

发布于 2014-11-24 18:13:33

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

代码语言:javascript
复制
ip route get 8.8.8.8 | awk '{print $NF;exit}'
192.168.1.30

老版本。不要使用!

请看我对这篇文章的回复:Linux bash script to extract IP address

票数 1
EN

Stack Overflow用户

发布于 2014-11-24 18:26:31

我建议您使用ip命令而不是ifconfig,因为与ifconfig相比,ip是“未来”的,而且更可靠。

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

在这里,此单行程序将使用ip route ls命令指定默认接口,并收集接口id,然后根据该id获取该接口的IP地址。

在这里,grep命令使用正则表达式安全地获取IP地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27102069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档