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

Publicado por Fábio Berbert de Paula em 15/01/2009

[ Hits: 23.330 ]

Blog: https://fabio.automatizando.dev

 


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

Como renomear placa de rede USB

Gravando e regravando CDs de dados e de áudio

MongoDB - Habilitar autenticação por usuário (Access Control)

Área de Troca (swap)

Login automático em servidores FTP

Leitura recomendada

Sed - como salvar alterações no arquivo

Expressão regular para validar um IP

Screen (janelas) no modo shell?

SED - texto para maiúsculas, minúsculas, pascal case e camel case

Ações condicionais no SED

  

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

Dica muito boa Fábio parabéns.

[2] Comentário enviado por alan schein em 27/05/2013 - 16:03h

Interessante, muito bom pra pegar Ip da rede interna , gostaria de ssaber pra pegar da rede externa

[3] Comentário enviado por netpoint em 09/12/2015 - 12:15h

Amigo

Sua dica foi de grande valia, estou tentando montar um script para capturar o usuário e o IP e juntar as duas coisas em uma variável string e depois usar o conteúdo desta variável para abrir um sessão SSH usando o screen. O objetivo é este script fazer parte do .profile do usuário, assim, quando o usuário logar o sistema vera se existe alguma sessão ssh não encerrada e vai reconecta-la automaticamente na tentativa de novo login e fara isso a cada tentativa até que não exista mais nenhuma sessão pendente daquele usuário proveniente daquele IP, se não existir mais ele abre uma nova sessão screen.

Se puder ajudar com mais dicas eu agradeço




Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts