P
から読み取ってstdin
に書き込むプログラムstdout
を使用したいのですが、nc
またはそれから読み取るものに接続します特定のポートと別のポートに出力します。
# The reading is easy, here P reads from port 50505
nc -l 50505 | P
ポート60606と書き戻すにはどうすればよいですか?
私は誰かが2 TCPマシンへの接続を1つはポート50505に、もう1つはポート60606に接続し、最初のPにデータを送信してPに供給し、 2番目の接続からのPの出力TCP=接続の場合、次のようになります。
< /dev/null nc -q -1 -l 50505 | P | nc -l 60606 > /dev/null
またはsocat
を使用:
socat -u tcp-listen:50505,reuseaddr - | P | socat -u - tcp-listen:60606,reuseaddr
P
がその出力を同じ接続に戻すには:
socat tcp-listen:50505,reuseaddr exec:P
ポートを操作するためにnc
は必要ありません。 bash
はそれ自体を行うことができます:
Bashは、次の表に示すように、いくつかのファイル名をリダイレクトで使用するときに特別に処理します。
/dev/fd/fd
If fd is a valid integer, file descriptor fd is duplicated.
/dev/stdin
File descriptor 0 is duplicated.
/dev/stdout
File descriptor 1 is duplicated.
/dev/stderr
File descriptor 2 is duplicated.
/dev/tcp/Host/port
If Host is a valid hostname or Internet address, and port is an integer
port number or service name, bash attempts to open a TCP connection to
the corresponding socket.
/dev/udp/Host/port
If Host is a valid hostname or Internet address, and port is an integer
port number or service name, bash attempts to open a UDP connection to
the corresponding socket.