Tenho visto várias dicas com soluções mirabolantes para exibir o ip configurado na placa de rede. Verdadeiros scripts para executar a ação.
Eis aqui uma junção de comandos que são suficientes para a exibição do ip.
/sbin/ifconfig | sed -n '2 p' | awk '{print $3}'
Explicando (para os mais iniciantes):
/sbin/ifconfig --> utilitário do sistema para configuração da placa de rede (se chamado puro exibe as configurações atuais da placa - com o caminho completo em algumas distros não há a necessidade de se tornar root);
sed -n '2 p' --> utilitário para manipulação de textos ('2 p' imprime apenas a linha 2 da saída do comando anterior, suprimindo o restante com o modificador -n;
awk '{print $3}' --> Imprime apenas o terceiro campo do resultado, no caso, o ip da máquina.
Este comando pode ser executado dentro de um script, tendo o resultado direcionado para uma variável, por exemplo:
#!/bin/bash
# Pega o ip local
IP_LOCAL=$(/sbin/ifconfig | sed -n '2 p' | awk '{print $3}')
[1] Comentário enviado por jeroavf em 24/09/2008 - 09:17h
Otima dica. Fiz uma pequena modificação para obter o mac address, outro valor que volta e meia o administrador de rede está querendo saber:
#!/bin/bash
# Pega o mac adress
MAC_ADDRESS=$(/sbin/ifconfig | sed -n '1 p' | awk '{print $7}')
[2] Comentário enviado por irado em 24/09/2008 - 11:48h
dois pequenos poréns que não deslustram a (boa) dica:
a) a coluna 3 - conforme seu script - apresenta o endereço de broadcast:
[br1003@Slack:~$]: IP_LOCAL=$(/sbin/ifconfig | sed -n '2 p' | awk '{print $3}')
[br1003@Slack:~$]: echo $IP_LOCAL
Bcast:192.168.255.255
claro, só alterar a coluna de $3 para $2:
[br1003@Slack:~$]: /sbin/ifconfig | sed -n '2 p' | awk '{print $2}'
addr:192.168.0.21
b) a identificação "addr" (ou "Bcast", como acima), fazia parte da informação de retorno; adicionei o "cut", ficando:
[br1003@Slack:~$]: /sbin/ifconfig eth0 | grep 'inet addr:'| cut -d: -f2 | awk '{ print $1}'
192.168.0.21
[br1003@Slack:~$]:
[5] Comentário enviado por dbahiaz em 26/09/2008 - 21:56h
Só complementando, pelo que percebir aqui, se estiver usando + de 1 placa ou na eth1 é necessario indicar , pois o comando busca automaticamente na eth0 ex:
/sbin/ifconfig eth1 | sed -n '2 p' | awk '{print $3}