Pular para o conteúdo

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

Dica publicada em Shell Script / Expressões Regulares
Fábio Berbert de Paula fabio
Hits: 24.399 Categoria: Shell Script Subcategoria: Expressões Regulares
  • Indicar
  • Impressora
  • Denunciar
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

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.

O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.
O Viva o Linux depende da receita de anúncios para se manter. Ative os cookies aqui para nos patrocinar.
Não conseguimos carregar os anúncios. Se usa bloqueador, considere liberar o Viva o Linux para nos patrocinar.

G-Desktop-Suite - Google Drive para Desktop Linux

Docker: /var/run/docker.sock: connect: permission denied [Resolvido]

Instalando PokerStars no GNU/Linux

Como instalar o DBeaver no Debian

Como personalizar o thumbnail de seu site no Facebook

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

SED - substituir apenas a ocorrência N de uma string

Remover tags HTML com SED

Busca por string dentro dos arquivos

Eliminando linhas de comentário ou linhas em branco no Linux

#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

Entre na sua conta para comentar.