Ist es möglich, die IP-Adresse des Remote-Connectors über Netcat zu senden?

8

Eigentlich möchte ich so etwas wie ifconfig.me- Funktionalität machen, aber nur für mein internes Netzwerk. Ich sehe es so, wie etwas auf dem Server einen Port abhört und die IP eines verbundenen Remote-Computers sendet.

Scheint ncein großartiges Dienstprogramm für mein Problem zu sein (außerdem habe ich kein PHP / Python / was auch immer auf dem Server. Nur Shell- und Standard-Unix-Tools).

Ich kann den Namen der Remote-IP und der DNS sehen, wenn ich nc -vvsie vom Remote-System aus starte und eine Verbindung dazu herstelle, aber ich kann sie nicht an den Remote-Host senden.

Oder habe ich einen zu seltsamen Weg gewählt und es gibt eine andere einfachere Lösung?

eilen
quelle

Antworten:

8

Sie könnten so etwas verwenden:

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

ncwird in einer Endlosschleife ausgeführt, die den Port 1337mit einer ausführlichen Option überwacht, in die Informationen über den Remote-Host geschrieben werden stderr. stderrwird in die Datei umgeleitet my.ip. Option -cfür ncermöglicht es, etwas auszuführen, um die Verbindung zu "handhaben". In diesem Fall werden wir als nächstes nach IP-Adressen aus der my.ipDatei suchen .

pbm@lantea:~$ curl http://tauri:1337
Your IP is: 192.168.0.100
pbm
quelle
Einfach wow! Ich hätte nie gedacht, dass es möglich ist, die Ausgabe in eine Datei umzuleiten und sie bei der Befehlsausführung zu lesen. Vielen Dank.
Eile
0
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

Leiten Sie stderr in eine Datei namens status um . dann liest es die IP des Remote-Connectors aus der Datei; zeigt schließlich die IP in der Benachrichtigungs-OSD-Nachricht.

nc Remote-Connector-Screenshots


Hinweis: Wenn jemand von einem anderen Computer aus eine Verbindung zu demselben Port herstellt, setzt nc dies gerne auf stderr : connection from 10.10.0.1 port 3333 [tcp/*] accepted. Ich extrahiere einfach die IP-Adresse mit grep .

Khurshid Alam
quelle