Identifique a interface ethN contendo um octeto em particular no CentOS

3

Eu tenho uma necessidade específica de identificar em qual interface uma parte de um octeto (por exemplo, xx.xx.xx.112 ) pertence a uma máquina do CentOS

Minha ideia inicial era descarregar a saída de ifconfig e analisá-la manualmente para identificar a interface correspondente. É a abordagem certa ou existe uma maneira melhor de fazer isso?

Minha tentativa bruta seria algo como abaixo em GNU grep ,

ifconfig | grep -B1 -E '\.112' | grep -oP 'e\w+:'
    
por Inian 14.03.2017 / 08:41

1 resposta

3

Acho que uma resposta awk pode ser um pouco mais rápida, pois não será necessário adicionar subshells extras:

ip addr show | awk -F: '/^[0-9]/ {dev=$2} /inet .*\.112/ {print dev; exit}'

Outra possibilidade, se você souber um endereço que seria roteado para fora da interface, como se houvesse um gateway no endereço .1 que você poderia fazer

ip route get a.b.c.1 | cut -f3 -d' '

Em geral, ip é o comando mais recente que deve substituir ifconfig , embora isso já seja verdade há muito tempo e ifconfig ainda não foi eliminado, mas veja esta questão de falha do servidor sobre o tópico.

    
por 14.03.2017 / 13:00