使用 os 或 subprocess 模块到 return 字符串或整数
using os or subprocess module to return string or integer
我现在正在尝试制作一个包含多个网络扫描工具的工具。使用 os 模块,我将代码发送到控制台以查找我的 ip + CIDR,它正在工作,但我无法将其发送到 return 我可以使用的数字(即字符串或整数) 它总是 returns '0' 作为我的 IP 地址。
*
#!/usr/bin/env python3
import os
import subprocess
def quiet_scan():
address = "ip addr | grep 'inet 10.*' | awk '{print }'"
ipcidr = int(os.system(address))
print(ipcidr)
nmapCom = ('nmap -sS ' + str(ipcidr))
print(nmapCom)
final = (os.system(nmapCom))
print(final
root@kali:/home/kali# ./recon.py -q
10.0.2.15/24
0
最后我希望输出是 nmap -sS 10.50.0.2 代替最后的 0
我认为带有 capture_output
标志的 subprocess.run
在这里工作得很好:
import subprocess
result = subprocess.run(["nmap", "-sS"], capture_output=True)
print(result.stdout)
result
将保存 运行 过程的结果,包括退出代码和写入流的内容。如果您想要的数据是 nmap
打印到 stdout
的数据,您可以简单地检查该属性。
试试这个脚本:
#!/usr/bin/env python3
import os
import subprocess
def run_cmd(cmd):
return subprocess.run(cmd, capture_output=True, shell=True).stdout.decode().strip()
def quiet_scan():
address = run_cmd("ip addr | grep 'inet 10.*' | awk '{print }'")
print(address)
final = run_cmd(f"nmap -sS {address}")
print(final)
quiet_scan()
函数run_cmd
将一个cmd作为字符串,运行它与shell,然后解码结果并去除最后一个换行符。
我现在正在尝试制作一个包含多个网络扫描工具的工具。使用 os 模块,我将代码发送到控制台以查找我的 ip + CIDR,它正在工作,但我无法将其发送到 return 我可以使用的数字(即字符串或整数) 它总是 returns '0' 作为我的 IP 地址。
*
#!/usr/bin/env python3
import os
import subprocess
def quiet_scan():
address = "ip addr | grep 'inet 10.*' | awk '{print }'"
ipcidr = int(os.system(address))
print(ipcidr)
nmapCom = ('nmap -sS ' + str(ipcidr))
print(nmapCom)
final = (os.system(nmapCom))
print(final
root@kali:/home/kali# ./recon.py -q
10.0.2.15/24
0
最后我希望输出是 nmap -sS 10.50.0.2 代替最后的 0
我认为带有 capture_output
标志的 subprocess.run
在这里工作得很好:
import subprocess
result = subprocess.run(["nmap", "-sS"], capture_output=True)
print(result.stdout)
result
将保存 运行 过程的结果,包括退出代码和写入流的内容。如果您想要的数据是 nmap
打印到 stdout
的数据,您可以简单地检查该属性。
试试这个脚本:
#!/usr/bin/env python3
import os
import subprocess
def run_cmd(cmd):
return subprocess.run(cmd, capture_output=True, shell=True).stdout.decode().strip()
def quiet_scan():
address = run_cmd("ip addr | grep 'inet 10.*' | awk '{print }'")
print(address)
final = run_cmd(f"nmap -sS {address}")
print(final)
quiet_scan()
函数run_cmd
将一个cmd作为字符串,运行它与shell,然后解码结果并去除最后一个换行符。