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

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

[ Hits: 19.840 ]

Blog: https://youtube.com/c/cotidianohackeado

 


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              [email protected]   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

Lista de discussão sobre a certificação LPI (Linux Professional Institute)

Adaptador de rede USB WiFi TP-LINK no Debian

Uma breve análise dos principais editores HTML

JavaScript - verificar se todos os itens de um array são pares ou ímpares

Como atualizar seu Ubuntu para 14.10 ou superior

Leitura recomendada

Redirecionamento no Shell

Busca por string dentro dos arquivos

Baixando todos os arquivos de uma URL com o wget

Executando comandos em looping no shell

Introdução ao awk

  

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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts