
En realidad quiero hacer algo comoifconfig.mefuncionalidad pero sólo para mi red interna. Lo veo como algo en el servidor escucha algún puerto y envía la IP de la máquina remota conectada.
Parece que nc
es una gran utilidad para mi problema (tampoco tengo php/python/lo que sea en el servidor. Solo solo herramientas de shell y Unix estándar).
Puedo ver la IP remota y el nombre DNS si lo inicio nc -vv
y me conecto desde el sistema remoto, pero no puedo encontrar la manera de enviarlos al host remoto.
¿O tal vez elegí un camino demasiado extraño y hay otra solución más sencilla?
Respuesta1
Podrías usar algo como esto:
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
se ejecutará en un bucle sin fin escuchando en el puerto 1337
con una opción detallada que escribirá información sobre el host remoto stderr
. stderr
es redirigido al archivo my.ip
. Opción -c
que nc
permite ejecutar algo para "manejar" la conexión. En este caso, a continuación buscaremos las direcciones IP del my.ip
archivo.
pbm@lantea:~$ curl http://tauri:1337
Your IP is: 192.168.0.100
Respuesta2
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
Redirigirstderra un archivo llamadoestado; luego lee la ip del conector remoto del archivo; finalmente muestra la ip en el mensaje de notificación-osd.
Nota:
cuando alguien se conecta al mismo puerto desde otra computadoraCarolina del NorteGeneralmente pone esto en stderr: connection from 10.10.0.1 port 3333 [tcp/*] accepted
. Simplemente extraigo la dirección IP usandogrep.