/procでインターフェイスのIPV4アドレスを取得する方法

/procでインターフェイスのIPV4アドレスを取得する方法

/procネットワークインターフェイスのMACアドレスを取得する方法と同様に、ネットワークインターフェイスのIPアドレスを取得する明確で簡単な方法はありますか?理想的には、catと入力してIPv4アドレスを取得することをお勧めします
/proc/<foo>/{interface_name}

むしろ他を実行しないでください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

..次を使用して16進ネットワークアドレスを変換します。

$ 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

関連情報