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 .