zoukankan      html  css  js  c++  java
  • python实现ping命令语音播报联通性

    先做一个测试版本的,后续继续优化,实现多进程后台ping,实现状态改变才提示的监听等。【当然,这样不可避免的会对资源造成浪费,所以还需要进行一定时间再执行程序的操作等,以此来实现,有想法的朋友可以自行实验,增加功能】

    import os
    import pyttsx3
    import random
    
    
    #定义一个函数,这个函数要能够随机产生一个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)

    为了方便有缘人复制,就不插入行号了

  • 相关阅读:
    跨域访问(nginx)
    mybatis中<set>标签和<trim prefix="set" suffixOverrides=",">
    如何在Oracle中复制表结构和表数据
    Oracle删除重复数据
    Oracle中删除表
    Oracle中on和where的区别
    Java实体类中的类型对应mybatis的jdbcType
    Java 枚举(enum) 常见用法
    关于JS 事件冒泡和onclick,click,on()事件触发顺序
    浅析 SpringMVC 的@PathVariable 和 @RequestParam 和 @RequestBody注解
  • 原文地址:https://www.cnblogs.com/ciscolee/p/15484059.html
Copyright © 2011-2022 走看看