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:
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. :)
[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.