実は私も似たようなものを作りたいifconfig.me機能はありますが、内部ネットワークにのみ適用されます。サーバーには、特定のポートをリッスンして接続されているリモートコンピュータのIPを送信するものがあるようです。
私の問題のための良いユーティリティのようですnc
(サーバーにphp / python /何もありません。シェルと標準の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
verbosestderr
オプションを使用して、ポートでリッスンする無限ループで実行されます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を読み取り、最後にinform-osdメッセージにIPを表示します。
メモ:
誰かが別のコンピュータから同じポートに接続している場合CNC通常はstderr:に入れますconnection from 10.10.0.1 port 3333 [tcp/*] accepted
。私はちょうど以下を使用してIPアドレスを抽出します。grep。