提取本机IPv4地址

本文解析了一个Linuxshell命令,通过一步步操作获取本地主机的非回环IPv4地址,包括使用`ipaddr`、`grep`、`awk`和`cut`命令进行筛选和处理。
摘要由CSDN通过智能技术生成
IPS=`ip addr | grep 'inet[^6]' | awk '{print $2}' | cut -d/ -f1 | grep -v "127.0.0.1"`
这段代码是一个Linux shell命令,用于获取本地机器的IP地址。我会一步一步地解释它:

1. `ip addr`: 这个命令用于显示所有网络接口的地址信息。
2. `grep 'inet[^6]'`: 这个命令用于从`ip addr`的输出中筛选出IPv4地址。`inet`是IPv4地址的关键词,而`[^6]`是一个正则表达式,确保我们不选择包含“inet6”的行,即IPv6地址。
3. `awk '{print $2}'`: 使用awk工具提取每一行的第二个字段,这通常是IP地址。
4. `cut -d/ -f1`: 使用cut命令进一步处理IP地址。`-d/`表示以“/”为分隔符,`-f1`表示只取第一个字段。这通常用于去掉IP地址后面的CIDR表示法(例如,192.168.1.1/24中的“/24”)。
5. `grep -v "127.0.0.1"`: 最后,使用grep命令过滤掉回环地址(即127.0.0.1)。

现在,我将用一个示例来解释这个过程:

假设`ip addr`的输出如下:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 01:23:45:67:89:ab brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic eth0
       valid_lft 85659sec preferred_lft 85659sec
1. `grep 'inet[^6]'` 会筛选出以下两行:
inet 127.0.0.1/8 scope host lo
inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic eth0
2. `awk '{print $2}'` 会提取出IP地址和CIDR:
127.0.0.1/8
192.168.1.2/24
3. `cut -d/ -f1` 会去掉CIDR,只保留IP地址:
127.0.0.1
192.168.1.2
4. `grep -v "127.0.0.1"` 会过滤掉回环地址:
192.168.1.2
所以,最终的结果是这个机器的一个IPv4地址:`192.168.1.2`。如果有多个非回环的IPv4地址,这个命令会返回它们所有。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值