
其實我想做一些類似的東西ifconfig.me功能,但僅適用於我的內部網路。我認為伺服器上的某些東西會偵聽某個連接埠並發送連接的遠端電腦的 IP 的方式。
似乎nc
對我的問題來說是一個很好的實用程式(而且我在伺服器上沒有任何 php/python/任何東西。只有 shell 和標準 unix 工具)。
如果我從遠端系統啟動並連接到它,我可以看到遠端 ip 和 dns 名稱nc -vv
,但我找不到將它們傳送到遠端主機的方法。
或者也許我選擇了太奇怪的路徑並且還有另一個更簡單的解決方案?
答案1
你可以使用這樣的東西:
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
將在具有詳細選項的連接埠上以無限循環偵聽的方式執行1337
,該選項會將有關遠端主機的資訊寫入stderr
.stderr
被重定向到檔案my.ip
.選項-c
允許nc
執行某些操作來“處理”連接。在這種情況下,我們接下來將從my.ip
檔案中 grep 尋找 IP 位址。
pbm@lantea:~$ curl http://tauri:1337
Your IP is: 192.168.0.100
答案2
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
重定向標準錯誤到一個名為地位;然後它從檔案中讀取遠端連接器的IP;最後在notify-osd訊息中顯示ip。
筆記:
當有人從另一台電腦連接到同一連接埠時數控通常將其放入 stderr: connection from 10.10.0.1 port 3333 [tcp/*] accepted
。我只是使用提取IP位址grep。