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

标签 python ubuntu ubuntu-11.04 python-2.7 os.system

所以我在 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/

相关文章:

python - 调整图像大小会导致元组错误

google-chrome - 如何强制 chrome 为 webgl 使用 mesa 软件驱动程序

python - 配置不当 : Error importing middleware django. middleware.common: "No module named _md5"

python - 嵌套列表 python

python - 在Python中将日期转换为自然语言?

ubuntu - Truffle 部署编译合约但不迁移到网络

c++ - linux/videodev.h : no such file or directory - OpenCV on ubuntu 11. 04

ubuntu-11.04 - 在没有互联网的情况下使用 apt-get build essential

linux - 是否有适用于 Linux 的 MongoDB GUI 桌面应用程序?

python - 使用 pd.df.copy() 时复制数据帧访问器