Pegando o seu ip no Linux

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

[ Hits: 27.227 ]

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

Limpando a fila do queue

Exibindo linhas anteriores e posteriores à string pesquisada no Linux

Controle de acesso por usuario no Postfix

Desassociando processos com disown

Políticas personalizadas do SELinux

Leitura recomendada

Montando Android com mtpfs

Matando todos os processos de um usuário

Achando o pacote de um arquivo

Como inverter as cores de uma imagem via linha de comando

Repositório local do apt-get

  

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