当前位置:编程学习 > 网站相关 >>

python下使用ping检查网络连通情况

使用python调用ping命令,然后在日志中记录ping的结果,用来监测网络连通情况。

代码:


[python] 
from time import * 
from subprocess import * 
 
 
webf= open("webs.txt","r") 
webs=[] 
for w in webf: 
    webs.append(w.strip()) 
 
def logAppend(log,info): 
    inttime = time() 
    structtime = localtime(inttime) 
    strtime = strftime("%Y-%m-%d,%H:%M:%S",structtime) 
    print "at ",strtime 
 
    log.write("==================  "+strtime+"  ==================\n") 
    log.write(info) 
    log.write("\n\n") 
    print "append info to file :",log.name 
    print info 
 
 
def netCheck(): 
    while True: 
        for url in webs: 
            p = Popen(["ping.exe",url], 
                      stdin=PIPE,stdout=PIPE,stderr=PIPE, 
                      shell=True) 
            out = p.stdout.read() 
            log = open("log\\"+url+".log","a") 
 
            logAppend(log,out) 
            log.close() 
            sleep(0.01) 
        print "waiting ..." 
        sleep(60*15) #sleep for 15min. 60*15  
    return 
 
def main(): 
    """
    the main function
    """ 
    print "start..." 
    netCheck() 
    print "end." 
 
 
if __name__ == "__main__": 
    main() 

from time import *
from subprocess import *


webf= open("webs.txt","r")
webs=[]
for w in webf:
    webs.append(w.strip())

def logAppend(log,info):
    inttime = time()
    structtime = localtime(inttime)
    strtime = strftime("%Y-%m-%d,%H:%M:%S",structtime)
    print "at ",strtime

    log.write("==================  "+strtime+"  ==================\n")
    log.write(info)
    log.write("\n\n")
    print "append info to file :",log.name
    print info


def netCheck():
    while True:
        for url in webs:
            p = Popen(["ping.exe",url],
                      stdin=PIPE,stdout=PIPE,stderr=PIPE,
                      shell=True)
            out = p.stdout.read()
            log = open("log\\"+url+".log","a")

            logAppend(log,out)
            log.close()
            sleep(0.01)
        print "waiting ..."
        sleep(60*15) #sleep for 15min. 60*15
    return

def main():
    """
    the main function
    """
    print "start..."
    netCheck()
    print "end."


if __name__ == "__main__":
    main()

说明:

webs.txt为目的地址,如www.baidu.com,每行一个。

需要在当前目录下自己建立一个名为log的文件夹。

关于time模块:


[python]
inttime = time()##得到的是当前时间的小数形式:1366356992.617  
structtime = localtime(inttime)###转换为本地时间,  
#返回的结果是:time.struct_time(tm_year=2013, tm_mon=4, tm_mday=19,  

inttime = time()##得到的是当前时间的小数形式:1366356992.617
structtime = localtime(inttime)###转换为本地时间,
#返回的结果是:time.struct_time(tm_year=2013, tm_mon=4, tm_mday=19, [python] view plaincopyprint?
tm_hour=15, tm_min=36, tm_sec=32, tm_wday=4, tm_yday=109, tm_isdst=0) 
#这个看着很不顺眼,继续格式化转换:  
strtime = strftime("%Y-%m-%d,%H:%M:%S",structtime) 

tm_hour=15, tm_min=36, tm_sec=32, tm_wday=4, tm_yday=109, tm_isdst=0)
#这个看着很不顺眼,继续格式化转换:
strtime = strftime("%Y-%m-%d,%H:%M:%S",structtime)[python] view plaincopyprint?
##返回的就是你想要的格式的字符串:2013-04-19,15:36:32 

##返回的就是你想要的格式的字符串:2013-04-19,15:36:32

 

其他参数类型:

strftime(format[, tuple]) -> string
将指定的struct_time(默认为当前时间),根据指定的格式化字符串输出
python中时间日期格式化符号:
%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)

%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身


 

补充:Web开发 , Python ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,