问题描述
我正在尝试保存实际上是用 os.system 编写的 python 代码的输出
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) 但输出是这样的:
.filter
输出是一个符号或类似的东西,有什么办法可以正确保存这段代码的输出吗?
解决方法
如果我理解正确,您只想保存在 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 地址并将它们放在文本文件中
如果您只想要扫描中返回的所有 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地址相同