在UbuntuPython2.7中读取操作系统()命令

2024-10-04 01:22:40 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在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. 如何修复?在

Tags: 代码scantimeosubuntusudosleepopen
2条回答
  1. 是否确定日志文件已创建?我看不出这个名字是在哪里提到的-但也许它是默认创建的。

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

  3. os.system有点不推荐或者至少不受欢迎;最好使用subprocess.call()subprocess.check_call()或{}(给你一个可以用来进一步控制进程的对象)。


编辑:刚刚测试过。在这里,扫描运行,但输出得到显示,而不是写入文件。可能您在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()

或者如果你不需要这个文件

^{pr2}$
  1. 您可以在python中使用commands模块。在
  2. 您可以使用subprocess模块。在

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

相关问题 更多 >