我正在创建nmap -sn
在远程服务器上运行的 python 程序。
有没有办法nmap -oX
直接重定向到标准输出或其他通道,而不是将其写入文件?
答案1
是的,通过将连字符作为参数传递给-oX
,如下所示:
nmap -oX - <other args> <target>
来自手册页:
这会导致 Nmap 停用交互式输出,而是以您指定的格式将结果打印到标准输出流。因此,命令 nmap -oX - target 将仅将 XML 输出发送到 stdout。严重错误仍可能打印到正常错误流 stderr。
为了避免错误污染您的 XML 输出,您可能需要将流重定向stderr
到空设备,2> /dev/null
或者如果您希望捕获它的话,重定向到文件。
一般注意事项:像这样使用连字符实际上是POSIX指南(第 12.2 节,指南 13)并广泛应用于各种 *nix 命令,因此当在不同环境中遇到相同问题时,最好记住这一点:
对于使用操作数来表示要打开以进行读取或写入的文件的实用程序,“-”操作数应该仅用于表示标准输入(或当从上下文中可以清楚地指定输出文件时表示标准输出)。