netcat 将 stderr 重定向到 stdout 然后变量丢失换行符

netcat 将 stderr 重定向到 stdout 然后变量丢失换行符

我正在编写一个脚本来解析包含 IP 地址和端口列表的文件,然后使用 netcat 对端口进行一系列测试。 port 参数可以是单个端口、端口列表或端口范围(每个 netcat 功能)。

如果 netcat 的参数是一个列表或一系列端口,我会在 stderr 上得到每个端口的一行结果(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 是否会删除行尾?

目前我将重定向到一个文件。

谢谢您的解释。

相关内容