是否有一种干净、简单的方法可以从 获取网络接口的 IP 地址/proc
,类似于获取网络接口的 MAC 地址的方法?
理想情况下,我只需输入 cat/proc/<foo>/{interface_name}
即可获取 IPv4 地址。
我宁愿不运行任何其他的东西cat
。
答案1
在该/proc
目录下,您还可以在转发信息库表中找到 IPv4 地址,地址为/proc/net/fib_trie
该表非常容易理解cat
,首先是Main:
然后Local:
cat /proc/net/fib_trie
或查看您的网络、IP 地址和网络掩码:
cat /proc/net/fib_trie | grep "|--" | egrep -v "0.0.0.0| 127."
|-- 193.136.1.0
|-- 193.136.1.2
|-- 193.136.1.255
|-- 193.136.1.0
|-- 193.136.1.2
|-- 193.136.1.255
答案2
$ awk '/32 host/ { print f } {f=$2}' <<< "$(</proc/net/fib_trie)"
答案3
可以将来自 的网络地址/proc/net/fib_trie
与来自 的接口相关联/proc/net/route
:
$ awk '/^[^I]/ {print $1 " " $2}' /proc/net/route
br0 0001020A
br0 FE01020A
..并使用以下命令转换十六进制网络地址:
$ echo FE01020A | xxd -r -p | hexdump -e '/1 "%u."' | tac -s'.' | sed 's/\.$//'
10.2.1.254
答案4
echo $'g/32 host LOCAL/-1s/\s*|-- //p\n Q'|ed -s /proc/net/fib_trie
10.0.0.20
127.0.0.1
192.168.122.1