2

所以我在 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. 如何解决?
4

2 回答 2

7
  1. 您确定甚至创建了日志文件吗?我看不到这个名字是在哪里提到的——但它可能是默认创建的。

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

  3. os.system有点不赞成或至少不赞成;更好地使用subprocess.call()subprocess.check_call()subprocess.Popen()(为您提供可用于进一步控制过程的对象)。


编辑:刚刚测试过。这里扫描运行,但输出显示而不是写入文件。可能您错过了通话中的> nmapscan1.log部分。os.system()

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()
于 2011-08-20T05:41:15.157 回答
0
  1. 您可以commands在 python 中使用模块。
  2. 您可以使用subprocess模块。

主要问题是在程序中使用sudo命令时python不要求输入密码,所以最好运行sudo python filename.py

于 2011-08-20T06:34:56.777 回答