
Na verdade eu quero fazer algo comoifconfig.mefuncionalidade, mas apenas para minha rede interna. Eu vejo como algo no servidor escuta alguma porta e envia o ip da máquina remota conectada.
Parece que nc
é um ótimo utilitário para o meu problema (também não tenho nenhum php/python/qualquer coisa no servidor. Apenas shell e ferramentas unix padrão).
Posso ver o IP remoto e o nome do DNS se eu iniciar nc -vv
e me conectar a ele a partir do sistema remoto, mas não consigo encontrar uma maneira de enviá-los para o host remoto.
Ou talvez eu tenha escolhido um caminho muito estranho e haja outra solução mais simples?
Responder1
Você poderia usar algo assim:
while true; do nc -lvp 1337 -c "echo -n 'Your IP is: '; grep connect my.ip | cut -d'[' -f 3 | cut -d']' -f 1" 2> my.ip; done
nc
será executado em loop infinito ouvindo na porta 1337
com opção detalhada que gravará informações sobre o host remoto no arquivo stderr
. stderr
é redirecionado para o arquivo my.ip
. A opção -c
permite nc
executar algo para "tratar" da conexão. Neste caso, iremos a seguir buscar os endereços IP do my.ip
arquivo.
pbm@lantea:~$ curl http://tauri:1337
Your IP is: 192.168.0.100
Responder2
while true; do nc -l -v 3333 2> status | while read msg; do ip=$(cat status | grep -o -P '(?<=from).*(?=port)') && notify-send "$ip" "$msg" -i gtk-network; done ; done
Redirecionarstderrpara um arquivo chamadostatus; então ele lê o ip do conector remoto do arquivo; finalmente mostra o ip na mensagem notify-osd.
Observação:
quando alguém se conecta à mesma porta de outro computadornãogeralmente coloca isso em stderr: connection from 10.10.0.1 port 3333 [tcp/*] accepted
. Eu simplesmente extraio o endereço IP usandogrep.