- 论坛徽章:
- 0
|
本帖最后由 c386 于 2014-06-19 13:15 编辑
下午写了一个脚本,运行在Window下,每10秒telnet对端服务器端口
如果telnet成功,则在D:\1.log 中记1 和时间
如果telnet失败,则在D:\1.log 中记0 和时间
现在问题是,因为是在Windows下,D:\1.log这个日志文件并不能每10秒更新内容,必须要结束Python脚本后,1.log日志文件中才会出现从开始执行到结束脚本执行这段时间的内容
我的理解:因为是循环执行,Python进程会将telnet的结果保存在内存中,执行结束后再释放。那么:
1、看网上说貌似可以用subprocess来实现,但是不知道如何来写,求各位大大指点
2、无论用不用subprocess来实现,脚本运行时间长了会不会造成内存溢出?
谢谢!
脚本(Python2.7):
#encoding=utf-8
import sys
import telnetlib
import time;
HOST="192.168.1.100"
f=file(r'D:\1.log','a')
while(1):
time.sleep(10)
NOW=time.strftime('%Y-%m-%d_%H:%M:%S',time.localtime(time.time()))
try:
tn = telnetlib.Telnet(HOST,port=80,timeout=10)
result = '1 ' + NOW + '\n'
tn.close()
sys.stdout.flush()
f.write(result)
f.close
except:
result = '0 ' + NOW + '\n'
f.write(result)
f.close
D:\1.log:
16:48分运行脚本,50分结束脚本后,才出现内容
1 2014-06-18_16:48:43
1 2014-06-18_16:48:53
1 2014-06-18_16:49:03
1 2014-06-18_16:49:13
1 2014-06-18_16:49:23
1 2014-06-18_16:49:33
1 2014-06-18_16:49:43
1 2014-06-18_16:49:53
1 2014-06-18_16:50:03
1 2014-06-18_16:50:13
1 2014-06-18_16:50:23 |
|