使用Python脚本将shell命令的结果写入外部文件
我正在编写一个Python脚本,它每3秒钟运行一个SNMP脚本,并将路由器接口接收的数据包的值存储在一个文件中。但是,在循环的第二次迭代中,我得到了错误: ValueError:对关闭的文件执行I/O操作 我的代码如下:使用Python脚本将shell命令的结果写入外部文件,python,snmp,ioexception,Python,Snmp,Ioexception,我正在编写一个Python脚本,它每3秒钟运行一个SNMP脚本,并将路由器接口接收的数据包的值存储在一个文件中。但是,在循环的第二次迭代中,我得到了错误: ValueError:对关闭的文件执行I/O操作 我的代码如下: #!/usr/bin/env python import time import subprocess p = subprocess.Popen(["snmpget", "*****", "IF-MIB::ifInOctets.1"],stdout=sub$ count=1 w
#!/usr/bin/env python
import time
import subprocess
p = subprocess.Popen(["snmpget", "*****", "IF-MIB::ifInOctets.1"],stdout=sub$
count=1
with open("script5min.log","a") as logfile:
while(count!=3):
print count
packets_received,err = p.communicate()
logfile.write(packets_received)
count = count +1
time.sleep(3)
有没有关于我做错了什么的建议?
谢谢 在循环之前只调用一次snmpget命令。调用communicate读取该命令的所有输出,读取输出后将关闭p的文件句柄,因此再次调用communicate将返回错误 解决方案:
将Popen调用移动到循环中,以便在每次迭代中进行新的SNMP轮询。每次轮询都会更新p对象,您将能够与它通信 谢谢,最后我切换到pySNMP,它更好地支持所有SNMP命令。