如何从 /proc 获取接口的 IPV4 地址

如何从 /proc 获取接口的 IPV4 地址

是否有一种干净、简单的方法可以从 获取网络接口的 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

相关内容