リモートコネクタの IP を netcat 経由で送信することは可能ですか?

リモートコネクタの IP を netcat 経由で送信することは可能ですか?

実はこんなものを作りたいんです設定機能はありますが、内部ネットワークのみです。サーバー上の何かがポートをリッスンし、接続されたリモート マシンの 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

nc1337は、ポートをリッスンしながら、リモート ホストに関する情報を に書き込む詳細オプション付きのstderr無限ループで実行されます。stderrはファイル にリダイレクトされますmy.ip。 のオプションを使用すると、接続を「処理」するため-cnc何かを実行できます。この場合、次にmy.ipファイルから IP アドレスを grep します。

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 を表示します。

nc リモートコネクタのスクリーンショット


注記: 誰かが別のコンピュータから同じポートに接続した場合いいえ通常はこれをstderrに出力します。connection from 10.10.0.1 port 3333 [tcp/*] accepted私は単にIPアドレスを次のように抽出します。グレップ

関連情報