Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: XplanetFx
Por oinots
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha


Dica

Extraindo seu endereço IP com shell script (egrep + awk)
Linux user
Publicado por Fábio Berbert de Paula em 15/01/2009

Login: fabio, 7255001 pontos | Blog: https://twitter.com/fabiodovol
[ Hits: 7748 ]

Extraindo seu endereço IP com shell script (egrep + awk)

Dica rápida! Sempre que logo remoto no meu servidor, rodo um comando para liberar acesso à porta 3306 (MySQL) para meu IP dinâmico ADSL. Porém sempre era necessário dar um ifconfig local pra saber qual é meu IP para então executar o comando no servidor.

Bom, finalmente deixei a preguiça de lado e resolvi automatizar o processo, criando um comando que retorna meu IP no terminal do próprio servidor, algo similar à variável REMOTE_ADDR do PHP por exemplo.

Quando executa-se um "w" no terminal remoto, a seguinte resposta é obtida:

$ w
20:34:29 up 104 days,  9:09,  1 user,  load average: 3.51, 3.54, 3.78
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
fabio    pts/0    189.1.54.222     19:59    0.00s  0.19s  0.01s w

Note o campo FROM (189.1.54.222), é ele que queremos, este é o IP de sua máquina local. Então podemos extraí-lo filtrando a saída com um egrep e em seguida extraindo o IP com o awk. Veja:

$ w | egrep '[0-9\.]{6,}' | awk '{print $3}'

O comando joga a saída de "w" para o Extended Grep, que filtra a linha que possui um endereço IP - [0-9\.] significa qualquer sequência composta por números e pontos "." com no mínimo 6 caracteres (o mínimo de um IP que consegui imaginar: 0.0.0.0 [6 dígitos]). Por último o awk recebe a linha que possui o endereço IP e pega somente o 3° campo, que é o IP propriamente dito. Os 2 primeiros campos são o nome de usuário e o terminal que ele está usando.

Pra quem não tem servidor remoto e também quer testar a teoria, podemos adaptar o comando para descobrir o endereço de rede de suas interfaces locais. Fica como dever de casa entender o comando abaixo:

$ /sbin/ifconfig | grep 'inet end' | awk '{print $3}'

Bom, eu me ajudei com esse comando, espero que ele te ajude de alguma forma, seja com uma sintaxe nova de regexp ou com ideias para a criação de um shell script mais elaborado. :)

Um abraço.


Outras dicas deste autor

Leitura recomendada
   Dica Linux recomendada Expressão regular para validar um IP
   Dica Linux recomendada Eliminando linhas de comentário ou linhas em branco no Linux
   Dica Linux recomendada Criando usuários a partir de uma lista
   Dica Linux recomendada Screen (janelas) no modo shell?
   Dica Linux recomendada Listar comandos mais utilizados (via histórico de shell)

Comentários
[1] Comentário enviado por robsonsbrasil em 28/06/2009 - 11:40h:

Dica muito boa Fábio parabéns.



Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.