既存のNetcat接続で実行可能な出力をパイプします。

既存のNetcat接続で実行可能な出力をパイプします。

ターミナルウィンドウを開き、次のコマンドを使用してシェルに接続しますnetcat

Terminal Window 1: nc hostname port

次に、ディレクトリに移動して... etcファイルを開きます(自動化するのではなく、自分で実行できる必要があります)。

その後、私のコンピュータの実行可能ファイルの出力をnetcat接続にパイプできますか?

答え1

名前付きパイプを使用してこれを行うことができます。

mkfifo ncpipe
nc hostname port < ncpipe
# --- In a galaxy far, far away (another terminal) ---
somecommand > ncpipe

しかし、ここにはいくつかの問題があります。たとえば、時間がかかりすぎると接続がタイムアウトしたりするなどの問題があります。

これを双方向で行うこともできます...私はこれをしばらく前にローカルTelnetポートを転送するために使用しましたが、まだ機能しているかどうかはわかりません。

mkfifo send receive
> send &
> receive &
nc 127.0.0.1 23 < receive > send &
telnet_pid=$!
nc host port < send > receive &
server_pid=$!
wait $server_pid
kill $telnet_pid
rm send receive

とにかく名前付きパイプを使用すると、いくつかの奇妙な作業を実行できます。しかし注意してください。パイプが開いている古いプロセスがあると、予期しない出力が発生する可能性があります。各タスクに対して新しい、きれいなパイプラインを作成し、完了したら削除することをお勧めします。

特にSSHを使用すると、ポート転送はより簡単で安全ですが、常に使用できるわけではありません。シナリオに応じて可能な場合は、次のことをお勧めします。

somecommand | ssh user@host somereceiver
# or the other way around
ssh user@host somecommand | somereceiver

関連情報