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.

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       

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)"

2
Bem-vindo ao U&L! Por que ao <<< "$(</proc/net/fib_trie)"invés de um simples </proc/net/fib_trie?
fra-san
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.