1

Linuxでnetcatユーティリティを使用して、Windowsマシンのプログラムから出力を受信して​​います。私の問題は、Windowsマシン上のプログラムが常に出力を提供するとは限らないことです。

netcatへの接続が確立されていることを確認するにはどうすればよいですか?

私が今までやっているのは" nc -l -v 9103 > output"です。次に出力のサイズをチェックします。これがもたらす問題は、netcatが特定のバッファサイズに達した後、または改行文字が検出された後にのみファイルに書き込むことです。接続が確立され、ファイルサイズがゼロとして検出されました。

誰かがnetcatと接続したかどうかを確認するにはどうすればよいですか。

使ってみました

nc -l -v -e someprog.exe 9103 > output

しかし、私のnetcatはこれをサポートしていないようです

以下は私が持っているオプションです

    $ nc -h
usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]
          [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]
          [-x proxy_address[:port]] [hostname] [port[s]]
        Command Summary:
                -4              Use IPv4
                -6              Use IPv6
                -D              Enable the debug socket option
                -d              Detach from stdin
                -h              This help text
                -i secs         Delay interval for lines sent, ports scanned
                -k              Keep inbound sockets open for multiple connects
                -l              Listen mode, for inbound connects
                -n              Suppress name/port resolutions
                -p port         Specify local port for remote connects
                -r              Randomize remote ports
                -s addr         Local source address
                -T ToS          Set IP Type of Service
                -C              Send CRLF as line-ending
                -t              Answer TELNET negotiation
                -U              Use UNIX domain socket
                -u              UDP mode
                -v              Verbose
                -w secs         Timeout for connects and final net reads
                -X proto        Proxy protocol: "4", "5" (SOCKS) or "connect"
                -x addr[:port]  Specify proxy address and port
                -z              Zero-I/O mode [used for scanning]
        Port numbers can be individual or ranges: lo-hi [inclusive]
4

2 に答える 2

1

詳細モードでは接続が stderr に書き込まれ、stderr をファイルにリダイレクトできます。詳細ログには connect to [xxx] from [xxxx] のようなものがあります。

試す

nc -l -v -p 9103 -k 1> output 2>connect.log

connect.log の接続を監視します

-k を使用しない場合、netcat は最初の接続後に終了します。

于 2012-09-10T07:36:21.847 に答える
1

netcat のコピーをアップグレードできる場合: 最新バージョン (1.10 など) には、接続時にプログラム (またはシェル コマンド) を実行するオプションがあります。scriptそれ以外の場合は、たとえば、 (指定されたファイルの stdin/stdout/stderr にすべてを保存するだけです) を使用して、(stdout のバッファリングを無効にするために) ターミナルで実行されていると netcat に認識させることができます。screenまたは、およびのロギング機能を使用しますtmux

于 2012-09-10T07:42:58.350 に答える