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

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

[ Hits: 23.294 ]

Blog: https://mestrefabio.com

 


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 reproduzir áudio no Android via linha de comando

Reduzindo o tamanho de arquivos PDF

Tema Escuro no Chrome Developer Tools (Dark Mode)

Vim - Converter tecla tab em 4 espaços

Instalar MongoDB 4.4 no Debian 10 Buster

Leitura recomendada

Limitando o alcance do SED por números de linha

Remover tags HTML com SED

Redirecionamento no Shell

Como remover parêntesis dos nomes de arquivos

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