
実はこんなものを作りたいんです設定機能はありますが、内部ネットワークのみです。サーバー上の何かがポートをリッスンし、接続されたリモート マシンの 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
無限ループで実行されます。stderr
はファイル にリダイレクトされますmy.ip
。 のオプションを使用すると、接続を「処理」するため-c
にnc
何かを実行できます。この場合、次に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 を表示します。
注記:
誰かが別のコンピュータから同じポートに接続した場合いいえ通常はこれをstderrに出力します。connection from 10.10.0.1 port 3333 [tcp/*] accepted
私は単にIPアドレスを次のように抽出します。グレップ。