python中的subprocess.Popen | 9

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中的subprocess.Popen | 9相关的知识,希望对你有一定的参考价值。

在收集snmp数据的过程中用到了subprocess这个模块,本来想用其他python里面关于snmp的库,还是觉得麻烦就直接调用snmpwalk来收集数据。


最开始想用subprocess.call()这个函数,然而这个函数没有和其他进程通信的功能就放弃了


google了一下找到subprocess.Popen()这个函数,具体用法后面会贴一个别人写的帖子


其中subprocess.PIPE类似于pipe()系统调用,不过不需要指定PID,只需要把stdout,stdin,error指定为subprocess.PIPE就可以了


我写的这个小脚本里面有参数shell=True,意思是通过shell执行命令而不是直接的execvp()


#!/usr/bin/env python

#  gathering snmp data

import subprocess

import os


cmd="snmpwalk -v 2c ip -c group"

fd=open("/home/user/snmptest","w")

data=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True)

fd.write(data.stdout.read())

fd.close()


执行之后snmptest里面就写入了收集来的snmp数据

以上是关于python中的subprocess.Popen | 9的主要内容,如果未能解决你的问题,请参考以下文章

Python 的 subprocess.Popen 是不是接受路径中的空格?

如何使用Python中的subprocess.Popen返回编码值?

将python中的双引号shell命令传递给subprocess.Popen()?

为啥不在 Python 中的 subprocess.Popen 中使用 `shell=True`? [复制]

python subprocess.popen stdin.write

从 subprocess.Popen 将参数传递给 argparse