netcatはstderrをstdoutにリダイレクトした後、変数は改行文字を失います。

netcatはstderrをstdoutにリダイレクトした後、変数は改行文字を失います。

私はIPアドレスとポートのリストを含むファイルを解析し、netcatを使用してポートに対して一連のテストを実行するスクリプトを書いています。 portパラメーターは、単一のポート、ポートリスト、またはポート範囲(netcat機能別)にすることができます。

netcatの引数がリストまたはポートの範囲の場合、stderrはポートごとに1行を取得します(netcatはすべてをstderrに送信します)。だから私の考えは、結果を変数に保存し、ループ(ラインごと)に解析して各ポートのテストステータス(成功、拒否、タイムアウト)を取得することです。

結果を保存するには、stderrをstdoutにリダイレクトして変数に保存します。

test=$(netcat -w 1 -zv 10.141.32.117 443-445 2>&1)

しかし、これは改行文字を削除します。

echo $test
netcat: connect to 10.141.32.117 port 443 (tcp) failed: Connection timed out netcat: connect to 10.141.32.117 port 444 (tcp) failed: Connection timed out netcat: connect to 10.141.32.117 port 445 (tcp) failed: Connection timed out

stderrをファイルにリダイレクトすると、結果に次の行が含まれます。 stderrをstdoutにリダイレクトすると、行末は削除されますか?

現在ファイルにリダイレクトしています。

説明していただきありがとうございます。

関連情報