为什么 python 输出没有正确保存

why python output doesn't save correctly

我正在尝试保存实际上用 os.system

编写的 python 代码的输出
import os
os.system("sudo nmap -p5433 -P0 -oG - -sS 127.0.0.1 | \
    sed -n 's/.* \([0-9\.]\{7,\}\).*\/open\/.*//p' > result.txt")

正如你在行尾看到的那样,输出应该保存在“result.txt”中,我确定输出应该是一个 ip (127.0.0.1),但输出类似于这个:

输出是一个符号或类似的东西,有什么方法可以正确保存这段代码的输出吗?

如果我没理解错的话,你只想保存在你的 nmap 扫描中找到的并且状态为 up 的主机?

如果是这样你可以使用:

sudo nmap -p5433 -P0 -oG - -sS 127.0.0.1 | grep 'Up' | grep -oP '\d*\.\d*\.\d*\.\d* > result.txt'

你使用 nmap,然后你 grep 所有行,包含 Up 状态,然后你只 grep ip 地址并将它们放在文本文件中

如果你只想要扫描中 return 的所有 ip 地址(没有状态检查)你可以简化:

sudo nmap -p5433 -P0 -oG - -sS 127.0.0.1 | grep -oP '\d*\.\d*\.\d*\.\d*' > result.txt

虽然如果 nmap 打印类似这样的内容将会有重复:

# Nmap 7.80 scan initiated Fri Dec 25 14:05:05 2020 as: nmap -p5433 -P0 -oG - -sS 127.0.0.1
Host: 127.0.0.1 (localhost) Status: Up
Host: 127.0.0.1 (localhost) Ports: 5433/closed/tcp//pyrrho///

因为有两条线路ip地址相同