Pegando o seu ip no Linux

Publicado por Gustavo Pardellas Feijó em 24/09/2008

[ Hits: 27.386 ]

Blog: http://www.gldc.com.br

 


Pegando o seu ip no Linux



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}')

echo "Meu IP: ${IP_LOCAL}"

exit 0

Outras dicas deste autor

Controle de acesso por usuario no Postfix

Exibindo linhas anteriores e posteriores à string pesquisada no Linux

Políticas personalizadas do SELinux

Desassociando processos com disown

Limpando a fila do queue

Leitura recomendada

Visualizando apenas usuários no passwd

Combinando find com a variável PATH

GRUB2 - Resolvendo o erro unknown filesystem - grub rescue

Transformando rapidamente variáveis em arrays

Usando o RPM

  

Comentários
[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}')

echo "Meu MAC ADDRESS: ${MAC_ADDRESS}"

exit 0

Espero que seja util
Jeronimo
www.blogdoje.com.br
Arduino,AVR & ARM

[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:~$]:

[3] Comentário enviado por chmod000 em 24/09/2008 - 12:30h

Obrigado pelo comentário, Irado.

O que pude perceber é que existe uma diferença na saída do ifconfig entre algumas distros.

Pelo seu prompt, me parece que você está usando o slack.

No Debian, Ubuntu e Fedora a saída do ifconfig fica assim:

/sbin/ifconfig eth0
eth0 Link encap:Ethernet Endereço de HW 00:12:3f:fe:e4:82
inet end.: 192.168.0.31 Bcast:192.168.0.255 Masc:255.255.255.0
endereço inet6: fe80::212:3fff:fefe:e482/64 Escopo:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Métrica:1
pacotes RX:109402 erros:0 descartados:0 excesso:0 quadro:0
Pacotes TX:62937 erros:0 descartados:0 excesso:0 portadora:0
colisões:9558 txqueuelen:1000
RX bytes:42173734 (40.2 MB) TX bytes:11325660 (10.8 MB)
IRQ:16

Já no RedHat, acabei de conferir, o campo 3, realmente, é o broadcast.

/sbin/ifconfig eth0
eth0 Link encap:Ethernet HWaddr 00:1D:09:6A:65:A8
inet addr:192.168.0.18 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::21d:9ff:fe6a:65a8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:2835561718 errors:0 dropped:0 overruns:0 frame:0
TX packets:2727128412 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1465498877870 (1.3 TiB) TX bytes:1099837362788 (1.0 TiB)
Interrupt:169 Memory:f8000000-f8012100

[4] Comentário enviado por kalib em 26/09/2008 - 19:33h

Boa dica... ;]

Realmente a resposta do ifconfig pode variar de acordo com a distribuição utilizada... não tem um padrão muito aceitável..digamos assim..

[]´s

[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}

[6] Comentário enviado por dartvader2008 em 27/09/2008 - 20:07h

Interessante, mas no meu caso ele trouxe o ip 127.0.0.1 que acredito ser o local.

como estou via wirelles como faço para ver o externo?

[7] Comentário enviado por chmod000 em 27/09/2008 - 22:27h

Qual a distro que você usa "dartvader2008"?

[8] Comentário enviado por mardoniognu em 25/06/2010 - 09:05h

Maxo e com o big linux não deu certo o que eu faço?

[9] Comentário enviado por chmod000 em 25/06/2010 - 09:17h

@mardoniogno

qual a distro que você usa? Qual o erro que está aparecendo?



Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts