Emy*_*myl 8 shell networking ip
我正在寻找一种简单的方法来以编程方式提取计算机的私有IPv4 地址。
与此问题类似的内容,但仅限于私有 IP。
例如,我可以使用以下命令提取所有IPv4 地址:
ifconfig | grep 'inet addr' | cut -d ':' -f 2 | awk '{ print $1 }'
Run Code Online (Sandbox Code Playgroud)
示例输出:
6.11.71.78
10.0.2.15
127.0.0.1
Run Code Online (Sandbox Code Playgroud)
以类似的方式,我只想在私有地址空间中获取 IP。所以,参考同一个例子,输出应该是:
10.0.2.15
Run Code Online (Sandbox Code Playgroud)
slm*_*slm 15
私有 IP 空间中的任何内容将始终以三个 IP 地址块之一开始。
因此,只需 grep 即可获取上述类型的 IP 地址。
$ ifconfig | grep 'inet addr' | cut -d ':' -f 2 | awk '{ print $1 }' | \
grep -E '^(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)'
192.168.1.20
Run Code Online (Sandbox Code Playgroud)
在grep
我使用的品牌使用正则表达式。在这种情况下,我们正在寻找以下模式:
此外,我们只明确匹配以这些模式之一开头的数字。锚点 ( ^
) 为我们提供了这种能力。
如果我们将以下行添加到文件中只是为了测试grep
。
$ cat afile
192.168.0.1
10.11.15.3
1.23.3.4
172.16.2.4
Run Code Online (Sandbox Code Playgroud)
然后我们可以像这样测试它:
$ cat afile | grep -E '^(192\.168|10\.|172\.1[6789]\.|172\.2[0-9]\.|172\.3[01]\.)'
192.168.0.1
10.11.15.3
172.16.2.4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
11834 次 |
最近记录: |