为什么python输出不';无法正确保存

为什么python输出不';无法正确保存,python,linux,os.system,Python,Linux,Os.system,我试图保存python代码的输出,实际上它是用os.system编写的 import os os.system("sudo nmap -p5433 -P0 -oG - -sS 127.0.0.1 | \ sed -n 's/.* \([0-9\.]\{7,\}\).*\/open\/.*/\1/p' > result.txt") 正如您在一行末尾看到的,输出应该保存在“result.txt”中,我确信输出应该是ip(127.0.0.1),但输出是这样的: 输

我试图保存python代码的输出,实际上它是用os.system编写的

import os
os.system("sudo nmap -p5433 -P0 -oG - -sS 127.0.0.1 | \
    sed -n 's/.* \([0-9\.]\{7,\}\).*\/open\/.*/\1/p' > result.txt")
正如您在一行末尾看到的,输出应该保存在“result.txt”中,我确信输出应该是ip(127.0.0.1),但输出是这样的:


输出是一个符号或类似的东西,是否有任何方法可以正确保存此代码的输出?

如果我理解正确,您希望只保存在nmap扫描中找到且状态为up的主机

如果是这样,您可以使用:

sudo nmap-p5433-P0-oG--ss127.0.0.1 | grep'Up'| grep-oP'\d*\.\d*\.\d*.\d*>result.txt'
使用nmap,然后对所有包含Up状态的行进行grep,然后只对ip地址进行grep,并将其放入文本文件中

如果您只需要扫描中返回的所有ip地址(无需状态检查),您可以简化:

sudo nmap-p5433-P0-oG--ss127.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地址

您是否在没有python包装的情况下测试了命令行函数?因为python部分似乎几乎没有什么地方会出错。有没有具体的原因,为什么要以sudo的形式运行nmap?可能是,该过程要求输入sudo密码,因此无法完成。我在没有“sed”部分的情况下测试了您的脚本,它工作正常。我尝试了,但结果相同@NationBonelessyes它工作正常,但我需要该部分。因为我只需要result@SergeiMinaev中的ip地址