所以我在 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”运行的。我想知道
- 如果我对问题的诊断是正确的并且
- 如何解决?
最佳答案
您确定日志文件已经创建了吗?我看不到这个名字在哪里被提及 - 但它可能是默认创建的。
sudo
要求您输入密码吗? 这可以告诉您 sudo 是否真的在运行。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/