A informação pode mudar a qualquer momento, então ela precisa ser recuperada do kernel, não pode ser armazenada em um arquivo.
Não há uma maneira legal de obter essas informações. Sua análise é tão boa quanto qualquer outra, exceto que a codificação rígida da segunda linha está errada: não há garantia de que as interfaces serão listadas em qualquer ordem específica. É bastante comum que uma máquina tenha mais de uma interface: você pode ter várias placas de rede ou interfaces virtuais.
Geralmente, o endereço IP do seu interesse é aquele associado à rota padrão. Com a maioria das configurações, você pode obter a interface correta com o comando route
e extrair o endereço IP dessa interface com ifconfig
.
/sbin/ifconfig $(/sbin/route -n |
awk '$1 == "0.0.0.0" {print $8}') |
awk 'match($0, /inet addr:[.0-9]+/) {print substr($0, RSTART+10, RLENGTH-10)}'
Note que não há necessidade de chamar sudo
. ifconfig
e route
geralmente não estão no padrão PATH
para usuários não-root, mas você pode usá-los sem privilégios especiais contanto que esteja apenas lendo informações e não alterando as configurações.
Em variantes unix diferentes do Linux, você pode ter que ajustar os comandos acima. A maioria tem comandos chamados ifconfig
e route
, mas o formato de saída pode ser diferente.
No Linux, em vez de ifconfig
e route
, você pode usar o comando ip
do iproute2 conjunto de ferramentas. Embora os autores do iproute2 considerem que ifconfig
e route
sejam preteridos, de fato há pouca vantagem em usar ip
, pois a saída de ip
não é mais fácil de analisar e ifconfig
e route
estão sempre disponíveis, enquanto algumas instalações do Linux simplificadas omitem ip
.