• python实现ping命令语音播报联通性V1.0.0.1


    版本从此次开始逐渐递增,本次规定:

    V1表示第一个版本

    V1.1表示第一个版本,第一次大修改

    V1.1.1表示第一个版本,第一次大修改,第一次新增额外功能

    V1.1.1.1表示第一个版本,第一次大修改,第一次新增额外功能,第一次添加功能

    【前面的不要计较那些细节】

    本次版本:

    新增从文件读取的read_file(file_path_name)功能

    目的:从文件读取,无需在代码中新增list命令的元素。

    过程/函数流程=套娃:read_file------>loop_ip------>test---->str_ip---->voice_ping

    简化的写也就是这样一个套娃:【联系数学的复合函数,一层套一层,哈哈哈哈哈哈哈哈哈哈~~~~~~~~~~~~~笑哭了】

    loop_ip(1,read_file("ip_command.txt"))--->test(input_ip)--->voice_ping(str_ip(input_ip))【我为什么分成三个复合呢?因为啊,每个箭头都有业务逻辑判断,不单纯撒】

    代码:

    import os
    import pyttsx3
    import random
    import time
    '''
    这个版本要做的功能。
    #单独创建文件,暂时略
    读取文件,最终实现从文件读取命令列表,并根据参数进行判断
    read_file(file_path_name)
    参数表示配置文件所在路径及名称
    
    '''
    
    #定义一个函数,这个函数要能够随机产生一个ip
    #方法可手动输入,true表示产生随机ip,false表示手动输入,默认随机
    def random_ip(self_ip,ip_more=True):
        #如果ip_more为true,产生随机ip
        if ip_more == True:
            return ""+random.randrange(1,254)+"."+random.randrange(1,254)+"."+random.randrange(1,254)+"."+random.randrange(1,254)+""
        else:
            return self_ip
    
    #除以上方法外,还可以固定D类IP地址,如192.168.的前缀,后面两位进行随机的方法,进行局域网测试,也可以利用循环进行局域网精准完全测试。
    
    
    
    #注意:以上方法本例暂未使用,留待有缘人自行思考,本例需要用到的模块请使用pip install 模块名进行安装,pip具体安装方法,可百度
    
    #定义一个语音播放方法
    def voice_ping(who_ip):
        engine = pyttsx3.init()
        engine.say(who_ip)
        engine.runAndWait()
    
    
    #ip处理函数,返回cmd命令行的信息,对命令行的信息进行截取或加工
    
    def str_ip(command):
        #传递命令给操作系统,命令行,并返回信息
        output = os.popen(command)
        #获取的信息是list信息
        info = output.readlines()
        #对list信息进行输出
        for line in info:
            print(line)
        #进行信息截取,2表示列表数组第二个元素,[3,16]表示截取数组下标2的值的第3到16个字符
        print(info[1][3:16])
        #测试截取的数据是不是L,如果是,表示ping成功
        print(info[2][-5])
        #对ping成功的数据进行加工判断并要提醒的数据,将其返回,最终要交给voice_ping方法进行语音合成输出
        if info[2][-5]=="L":
            return info[2]+"提示:"+info[2][3:16]+"主机在线"
        #如果该语句用于后续随机ip中,则建议直接掠过【因为大量随机产生的ip是不可能在线的,否则一直报会烦死人】
        return "无法访问目标主机"+info[1][8:21]
    
    
    
    #定义一个测试方法
    #手动输入ip测试
    def test(input_ip):
    #获取命令行的信息进行判断
    #暂时省略
        voice_ping(str_ip(input_ip))
        
    #实现,此为之前测试
    #for i in ["ping www.baidu.com","ping 192.168.0.1","ping 192.168.0.101 -i 1 -n 1","ping 192.168.0.102 -i 1 -n 1","ping 192.168.0.103 -i 1 -n 1"]:
    #    test(i)
    
    
    #os.system("arp -a > arp.txt")
    
    
    '''
    定义一个读取文件内容,并将其格式化
    本次新增功能
    '''
    def read_file(file_path_name):
        f = open(file_path_name,'r')
        #返回该方法
        return f.readlines()
        print(f.readlines())
    
    
    
    
    
    #此为上次新增
    #实现while循环【逻辑功能一、实现循环/不循环】
    def loop_ip(ip_loop,ip_table):
    #当ip_loop==1时,每隔一段时间进行,缺点,占用资源,不过这么点程序,无所谓了
        if ip_loop == 1:
            while 1:
                #当ip_loop==True时,表示定时播报
                #逐个取命令,传递给test
                for line in ip_table:
                    test(line)
            #完成一次循环后,进行等待一定时间,继续执行,这里可根据需要填写
                    time.sleep(5)
                    #监听某原因时退出程序(省略)
                    #否则当ip_loop==False时,表示只执行一次
        else:
            for i in ip_table:#逐个取命令,传递给test
                test(i)
    #测试【测试功能1】
    print("此时运行的是上个版本测试")
    loop_ip(0,["ping www.baidu.com","ping 192.168.0.1","ping 192.168.0.101 -i 1 -n 1","ping 192.168.0.102 -i 1 -n 1","ping 192.168.0.103 -i 1 -n 1"])
                
    #【逻辑功能二】
    #测试本次成果
    '''
    调用loop_ip方法,实现循环,同时,将本次新增的功能进行传参测试
    '''
    print("本版本高能时刻!!!!!!!!!!!!!!!")
    print("开始文件中的命令循环,文件命令每一行一条命令,请知晓")
    loop_ip(1,read_file("ip_command.txt"))
  • 相关阅读:
    2019年中国高校计算机大赛
    2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛
    2019年(第12届)中国大学生计算机设计大赛
    2020移动开发竞赛
    2019年华北五省(市、自治区)及港澳台大学生计算机应用大赛
    Android 开发者指南
    Android :HangUp Notification 横幅通知
    HBU E-mobile
    Android Q is Android 10
    Android Studio 3.5(Last updated 7/29/2019)
  • 原文地址:https://www.cnblogs.com/ciscolee/p/15486741.html
Copyright © 2020-2023  润新知