gpt4 book ai didi

python - 在 Ubuntu Python 2.7 中读取 os.system() 命令的输出

转载 作者:行者123 更新时间:2023-11-28 20:52:15 26 4
gpt4 key购买 nike

所以我在 Ubuntu 11.4 和 Python 2.7 上运行的代码看起来像这样:

p_scan_command = "sudo nmap -sC -sV -PN -O 192.168.0.1/24"
time.sleep(1.5)
os.system(p_scan_command)
f = open('nmapscan1.log', 'r')
print f.read()
f.close()

发生的事情是我最终没有结果,并且没有运行扫描,可能是因为它是使用“sudo”运行的。我想知道

  1. 如果我对问题的诊断是正确的并且
  2. 如何解决?

最佳答案

  1. 您确定日志文件已经创建了吗?我看不到这个名字在哪里被提及 - 但它可能是默认创建的。

  2. sudo 要求您输入密码吗?这可以告诉您 sudo 是否真的在运行。

  3. os.system 有点被弃用或至少不受欢迎;最好使用 subprocess.call()subprocess.check_call()subprocess.Popen()(给你一个对象,你可以使用它进一步控制过程)。


编辑:刚刚测试。此处扫描运行,但显示输出而不是写入文件。可能您在 os.system() 调用中遗漏了 > nmapscan1.log 部分。

使用subprocess,你会这样写

sp = subprocess.Popen(['sudo', 'nmap', '-sC', '-sV', '-PN', '-O', '192.168.0.1/24'],
stdout=file("nmapscan1.log", "w"))
sp.wait()
f = open('nmapscan1.log', 'r')
print f.read()
f.close()

或者如果您不需要该文件,只需

sp = subprocess.Popen(['sudo', 'nmap', '-sC', '-sV', '-PN', '-O', '192.168.0.1/24'],
stdout=subprocess.PIPE)
print sp.stdout.read()
sp.wait()

关于python - 在 Ubuntu Python 2.7 中读取 os.system() 命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7129928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com