Como obter o endereço IPV4 para uma interface de / proc

24

Existe uma maneira simples e limpa de obter um endereço IP para uma interface de rede /proc, semelhante à maneira como eu posso obter o endereço MAC para uma interface de rede?
Idealmente, basta digitar cat /proc/<foo>/{interface_name}e obter o endereço IPv4.

Prefiro não executar outra coisa senão cat.

razeh
fonte

Respostas:

23

Sob o /procdiretório, você também pode encontrar os endereços IPv4 na tabela Base de informações de encaminhamento, em/proc/net/fib_trie

A mesa é bastante inteligível fazendo um mero cat, primeiro vem o Main:e depoisLocal:

cat /proc/net/fib_trie

ou para ver sua rede, endereços IP e máscara de rede:

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       
Rui F Ribeiro
fonte
1
Existe uma maneira de obter a interface para cada endereço IP?
Razeh
Eles aparecem em uma ordem predeterminada; provavelmente prioridade, mas isso pode ser alterado; Fora isso, não.
Rui F Ribeiro
2
/proc/net/fib_trienão está disponível no meu sistema RHEL 6.6 aqui no trabalho
villapx
1
O @villapx fib_trie não está presente nos kernels 2.6.
Rui F Ribeiro
Não há como associar endereços IP à interface no fib_trie.
ZioByte 10/03
0
$ awk '/32 host/ { print f } {f=$2}' <<< "$(</proc/net/fib_trie)"
Deus
fonte
2
Bem-vindo ao U&L! Por que ao <<< "$(</proc/net/fib_trie)"invés de um simples </proc/net/fib_trie?
fra-san