精华内容
下载资源
问答
  • 通过ping命令来验证设备网络状态 完整代码如下: import socket def isNetOK(testserver): s = socket.socket() s.settimeout(3) try: status = s.connect_ex(testserver) if status == 0: s.close()

    判断设备联网状态((Python)

    在Python中利用socket来判断设备是否联网

    通过ping命令来验证设备的网络状态

    完整代码如下:

    import socket
    
    
    def isNetOK(testserver):
        s = socket.socket()
    
        s.settimeout(3)
        try:
             status = s.connect_ex(testserver)
             if status == 0:
                s.close()
                return True
              else:
                return False
         except Exception as e:
             return False
    
    def isNetChainOK(testserver=('www.baidu.com', 443)):
        isOK = isNetOK(testserver)
    
        return isOK
    
    def main():
    
        chinanet = isNetChainOK()
        if chinanet is False:
           print("疑似存在网络异常")
    
    if __name__ == '__main__':
         main()
    
    展开全文
  • Python3网络设备巡检(交换机篇)

    万次阅读 多人点赞 2018-08-13 12:27:50
    只写了交换机的,路由器、防火墙、负载等其它设备以后,有需求再写,下面以一组交换机为例。 思路 1、收取交换机的信息 需要哪些信息,哪些命令,不同品牌交换机命令不同(本篇以H3C为例),需要提前规划好。...

    介绍

    只写了交换机的,路由器、防火墙、负载等其它设备以后,有需求再写,下面以一组交换机为例。

    思路

    1、收取交换机的信息
    需要哪些信息,哪些命令,不同品牌交换机命令不同(本篇以H3C为例),需要提前规划好。交换机的IP、名字、密码等信息,写入数据库比较方便。
    2、把需要的信息填入表格
    根据关键字提取交换机中的状态信息,并一次填入设计好的表格中,难点是字符串的截取和excel表格的设计。同款交换机相同的命令,可能用同一个关键字,抓取的信息也不一样,这个要多试几次。
    3、编写邮件,发送邮件。
    4、linux编写任务计划,crontab定期执行python代码,定期发送邮件。

    代码

    抓取交换机需要的配置信息

    import pexpect
    import sys
    import datetime
    import pymssql
    import os
    
    today=datetime.date.today().strftime('%Y%m%d')
    path = "/root/xunjian/"+today
    os.mkdir(path,777)#创建目录
    
    def Switch(name,ip,passwd):
        try:#try except 防止有一个命令错误,导致程序不能进行,其实不加也可以,如果有命令没输出,下一个代码也会报错。
            name1="---- More ----"#模拟交换机出现的翻页提示
            child=pexpect.spawn('telnet %s'%ip)
            fout=open('/root/xunjian/'+today+'/'+'%s-%s.txt'%(name,ip),'wb+')
            child.logfile = fout
            child.expect('login:')#提示用户登录,输入帐号,交换机不同,有所不同。
            child.sendline("admin")
            child.expect('(?i)ssword:')#提示输入密码
            child.sendline("%s"%passwd)            
            child.expect('<%s>'%name)
            child.sendline("display cpu-usage")#查看cpu状态
            child.expect('<%s>'%name)
            child.sendline("display memory")#查看内存状态
            child.expect('<%s>'%name)
            child.sendline("display  environment")#运行温度
            child.expect('<%s>'%name)
            child.sendline("display fan")#风扇状态,一般输出都有2个
            child.expect('<%s>'%name)
            child.sendline("display power")#电源状态
            child.expect('<%s>'%name)
            child.sendline("display ip routing-table")#路由表
            for i in range(10):
                index = child.expect([name1,'<%s>'%name])
                if ( index == 0 ):
                    child.send(" ")
                else:
                    child.sendline("display interface brief")#端口状态
                    break
            for i in range(10):
                index = child.expect([name1,'<%s>'%name])
                if ( index == 0 ):
                    child.send(" ")
                else:
                    child.sendline("dis  version")#版本,为了看运行时间
                    break
            for i in range(10):
                index = child.expect([name1,'<%s>'%name])
                if ( index == 0 ):
                    child.send(" ")
                else:
                    child.sendline("display log")#日志,日志较多,循环100个空格,怕输出不全。
                    break                  
            for i in range(100):
                index = child.expect([name1,'<%s>'%name])
                if ( index == 0 ):
                    child.send(" ")
                else:
                    child.sendline("quit")
                    break
        except:
            pass
    
    host = 'x.x.x.x'#连接数据库,抓取数据库内的信息,交换机的名字、ip、密码
    user = 'sa'
    pwd = 'xxxx'
    db = 'MAC'
    conn = pymssql.connect(host=host,user=user,password=pwd,database=db,timeout=1,login_timeout=1,charset="utf8")
    cur = conn.cursor()
    sqls ="select * from [dbo].[F5HJSwitch]"
    cur.execute(sqls)
    listall = cur.fetchall()#SQl输出内容导成列表
    for line in listall:
        Switch(line[1],line[2],line[3])
    conn.commit()
    conn.close()
    
    

    代码

    提取需要的信息,并塞入表格,因为设备太多,我只展示一个设备的代码。

    import pymssql
    import xlwt
    import datetime
    from xlwt import *
    
    today=datetime.date.today().strftime('%Y%m%d')
    txt='F51FA-HJ-S5560X-x.x.x.x.txt'#打开设备的配置信息,不建议用循环打开所有的,因为有些设备的输出会多空格等。
    file = open('/root/xunjian/'+today+'/'+txt,'r+')
    
    listlist=file.readlines()#读取文档的每一行,至列表,如果不是双电源的问题,直接 for line in file.readlines():
    i=1
    for line in listlist:#读取列表每一行,因为两个电源的所有输出信息都一样,只能匹配关键字后输出下一行字符串,实属无奈。
    
        if '1       Normal' in line:
            power11=line[8:15].rstrip()#设备状态,都是匹配关键字,然后截取本来的字符串输出,这个要多试几次。
            print(power11)#确认输出是自己想要的字符串。
        if 'Uptime is' in line:#运行时间
            time11=line[-33:].rstrip()
            print(time11)
        if 'hotspot' in line:
            environment11=line[17:21].rstrip()#运行温度
            print(environment11)
        if 'Fan 1:' in line:
            fana11=listlist[i+1][-8:].rstrip()#电源状态,匹配关键字,截取下一行的字符串
            print(fana11)
        if 'Fan 2:' in line:
            fanb11=listlist[i+1][-8:].rstrip()#电源状态,匹配关键字,截取下一行的字符串
            print(fanb11)
        if 'in last 5 minutes' in line:
            cpu11=line[6:10].rstrip()#cpu使用率
            print(cpu11)
        if 'Mem:' in line:
            memory11=line[-7:].rstrip()#内存
            print(memory11)
        if 'To_F5-Core-S12508_Ten-G1' in line:#端口
            briefa11=line[20:30].rstrip()
            print(briefa11)
        if 'To_F5-Core-S12508_Ten-G2' in line:
            briefb11=line[20:30].rstrip()
            print(briefb11)
        if 'Current messages:' in line:#日志条目
            log11=line[-5:].rstrip()
            print(log11)
        if 'Routes' in line:
            routingtable11=line[-5:].rstrip()#路由条目
            print(routingtable11)
        i += 1
    
    workbook = xlwt.Workbook()#创建表格
    
    style = XFStyle()#初始化样式,此样式包含了单元格背景颜色和单元格边框两个属性。
    pattern = Pattern()
    pattern.pattern = Pattern.SOLID_PATTERN
    pattern.pattern_fore_colour = Style.colour_map['blue'] #设置单元格背景色为蓝色
    style.pattern = pattern
    borders = xlwt.Borders()#设置表格的边框,1是默认实线黑色。
    borders.left = 1
    borders.right = 1
    borders.top = 1
    borders.bottom = 1
    style.borders = borders
    
    
    style1 = XFStyle()#只有边框
    borders = xlwt.Borders()
    borders.left = 1
    #borders.left = xlwt.Borders.THIN
    borders.right = 1
    borders.top = 1
    borders.bottom = 1
    style1.borders = borders
    
    style3 = XFStyle()#初始化样式,带边框和表格内容居中。
    borders = xlwt.Borders()
    borders.left = 1
    #borders.left = xlwt.Borders.THIN
    borders.right = 1
    borders.top = 1
    borders.bottom = 1
    style3.borders = borders
    al = xlwt.Alignment()
    al.horz = 0x02      # 设置水平居中
    al.vert = 0x01      # 设置垂直居中
    style3.alignment = al
    
    F51FSwitch = workbook.add_sheet('F51FSwitch',cell_overwrite_ok=True)#创建表格的某一分页
    
    first_col=F51FSwitch.col(0)#设置0、1、2、3列的列宽
    sec_col=F51FSwitch.col(1)
    thr_col=F51FSwitch.col(2)
    for_col=F51FSwitch.col(3)
    first_col.width=150*25
    sec_col.width=100*25
    thr_col.width=120*25
    for_col.width=320*25
    
    F51FSwitch.write_merge(1,11,0,0,'QCMC-F5-1FA',style3)#合并单元格(1,11为行1到11行 0,0为列0到0),填入内容
    #F51FSwitch.write_merge(1,10,0,1,'QCMC-F3-1FA')#合并0到1列,1到10行
    F51FSwitch.write_merge(1,11,1,1,'10.20.5.1',style3)#添加style3的样式,只能填写一个,所以初始化样式的时候根据需求添加多个属性。
    F51FSwitch.write(0,0,'设备名称',style)
    F51FSwitch.write(0,1,'管理地址',style)
    F51FSwitch.write(0,2,'检查项',style)
    F51FSwitch.write(0,3,'检查结果',style)
    F51FSwitch.write(1,2,'设备状态',style1)
    F51FSwitch.write(2,2,'运行时间',style1)
    F51FSwitch.write(3,2,'运行温度',style1)
    F51FSwitch.write(4,2,'风扇A状态',style1)
    F51FSwitch.write(5,2,'风扇B状态',style1)
    F51FSwitch.write(6,2,'CPU使用率',style1)
    F51FSwitch.write(7,2,'内存使用率',style1)
    F51FSwitch.write(8,2,'聚合口A',style1)
    F51FSwitch.write(9,2,'聚合口B',style1)
    F51FSwitch.write(10,2,'日志条目',style1)
    F51FSwitch.write(11,2,'路由条目',style1)
    F51FSwitch.write(1,3,power11,style1)#添加抓取的字符串到相应的表格
    F51FSwitch.write(2,3,time11,style1)
    F51FSwitch.write(3,3,environment11,style1)
    F51FSwitch.write(4,3,fana11,style1)
    F51FSwitch.write(5,3,fanb11,style1)
    F51FSwitch.write(6,3,cpu11,style1)
    F51FSwitch.write(7,3,memory11,style1)
    F51FSwitch.write(8,3,briefa11,style1)
    F51FSwitch.write(9,3,briefb11,style1)
    F51FSwitch.write(10,3,log11,style1)
    F51FSwitch.write(11,3,routingtable11,style1)
    
    print ('创建excel文件完成!')
    workbook.save('/root/xunjian/%sF5Switchxunjian.xls'%today)

    发送邮件代码

    前两个文章有介绍,不写了。

    任务计划 linux crontab(不会的请百度)

    crontab -l 查看任务计划
    这里写图片描述
    crontab -e编写任务计划
    这里写图片描述

    结果

    这里写图片描述

    吐槽

    代码一直执行没问题,突然前两天突然不发邮件了。
    发现没生成excel文档
    但是交换机的txt文档还在
    手动执行生成excel文档的代码,报错。说utf-8格式问题
    在windows python下面执行是OK的
    后来发现有一个txt的文档是ANSI格式,其它的txt都是UEF-8格式
    实在不明白为啥会有个txt是ANSI格式的,然后一顿改代码,在linux下面就是不行。
    后来无意中发现,交换机的运行时间怎么是三天???和代码出问题很相符啊!!
    然后然后,重启了这台交换机,居然好了,正常了。
    H3C交换机真坑??莫非是上次交换机冷重启的原因?现在正常重启后,正常了??吐血的一下午。

    展开全文
  • SnmpSwitch是一个项目,旨在探测网络设备(主要是交换机,但不仅限于交换机),并通过与Python 3和Django的SNMP连接收集一些数据,并将数据存储在PostgreSQL上。 其目标不是像Zabbix和Nagios这样的其他监视软件已经...
  • 作为一名系统管理员,每天的巡检必不可少,一般日常巡检包括机房空调,消防,电力,温湿度,还有服务器网络设备等。 一般而言,服务器设备的物理巡检包括检查状态告警等,硬盘,网络,电源等。这些在HP ILO中都可以...

    Python获取HP服务器状态信息

    需求:

    作为一名系统管理员,每天的巡检必不可少,一般日常巡检包括机房空调,消防,电力,温湿度,还有服务器网络设备等。

    一般而言,服务器设备的物理巡检包括检查状态告警等,硬盘,网络,电源等。这些在HP ILO中都可以看到,包括Dell iDRAC,IBM IMM等,其实功能都是一样的,都是利用了IPMI或者RESTful.

    在ILO中,可以看到服务器状态如下:

    通过这些数据,基本上可以判断一台服务器是否正常工作。那么,如果是多台服务器,就是要检查多台ILO的状态了。

    如果一台台的人工检查,将要花费大量的时间巡检。幸运的是,HP给我们提供了Python Class- hpilo. 通过这个包,可以实现自动化登录并获取系统状态。

    实现方法:

    1. 安装python hpilo

    Pip install hpilo #如果安装速度慢的话,请指定国内镜像站

    1. 执行如下代码

    import hpilo  #导入包

    ilo=hpilo.Ilo('192.*.*.*,'Administrator','3NWC5ZK5')  #通过脚本登录ILO

    health_summary=ilo.get_embedded_health()['health_at_a_glance'] #获取system health的具体参数

    print(health_summary)

    print(type(health_summary))

     

    1. 返回结果如下:

    {'bios_hardware': {'status': 'OK'}, 'fans': {'status': 'OK', 'redundancy': 'Redundant'}, 'temperature': {'status': 'OK'}, 'power_supplies': {'status': 'OK', 'redundancy': 'Redundant'}, 'processor': {'status': 'OK'}, 'memory': {'status': 'OK'}, 'network': {'status': 'Link Down'}, 'storage': {'status': 'OK'}}

    这是一个dict类型的数组

    1. 多台服务器的话,可以把相关服务器信息放在文本文件中,然后进行循环查询,并保存在指定路径,比如可以保存在sqlite中。
    2. 老规矩,设置定时报表,然后把相关信息发送给指定人员,通过这样的方式,基本上可以大大减轻系统管理员的巡检负担。

    注意:在ILO登录过程中,会出现如下错误

    SSL: SSLV3_ALERT_HANDSHAKE_FAILURE] sslv3 alert handshake failure

    排错步骤如下:

    1. 登录web ILO,
    2. 切换到“Administration -> “Security” -> “Encryption” 启用Enforce AES/3DES Encryption

       ILO4 HP DL380 G8 亲测有效,欢迎测试。

     

    展开全文
  • androidtv是一个Python软件包,可通过ADB提供状态信息以及对Android TV和Fire TV设备的控制。 Home Assistant中的集成使用此程序包。 安装 pip install androidtv 要使用此代码的异步版本,您必须通过以下方式安装...
  • 为了监控 NAS主机的运行状态, 以流量和CPU温度为主.应该可运行所有linux环境. 参考网上资料整理代码 , 供参考. 监控 CPU 温度, 内存使用量MB, CPU单核使用率(此项不太准), 网络流入差量KB , 流出差量KB, 运行时间...
  • 使用Python中的OpenCV训练神经网络以检测手势 我如何仅凭摄像头和梦想就可以构建Microsoft Kinect功能。 请注意:该存储库不再处于主动维护状态。 您可以在查看。 灵感 想象一下,您要为一个挚爱的人举办一次生日...
  • 检测Android设备有线网络连接状态

    千次阅读 2013-09-27 14:18:00
    2019独角兽企业重金招聘Python工程师标准>>> ...
    import android.net.ConnectivityManager;

     

    ConnectivityManager conn = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE);
           
           NetworkInfo[] networkInfo = conn.getAllNetworkInfo();
           if(networkInfo != null){
              for(int i=0;i<networkInfo.length;i++){
              if(networkInfo[i].getType() == ConnectivityManager.TYPE_ETHERNET){
                          //有线网络连接成功,更新UI
              }
               }
     }

    // 监听有线网络连接状态(插拔网线)

    private BroadcastReceiver mEthernetReceiver = new BroadcastReceiver(){

            @Override
            public void onReceive(Context context, Intent intent) {
             
             if (intent.getAction().equals(ConnectivityManager.ACTION_ETHERNET_STATE_CHANGED)){
               String state = intent.getStringExtra(ConnectivityManager.EXTRA_ETH_STATUS);
               if(state.equals(ConnectivityManager.EXTRA_ETH_CONNECT)){
                  //网线连接成功!
                 }
               else if(state.equals(ConnectivityManager.EXTRA_ETH_UNLINK)){
                  //网线断开!
                 }
             }
            }      
     };

    IntentFilter filter = new IntentFilter();
           filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION);
           filter.addAction(ConnectivityManager.INET_CONDITION_ACTION);
           filter.addAction(ConnectivityManager.ACTION_ETHERNET_STATE_CHANGED);
           filter.addAction(ConnectivityManager.ACTION_ETHERNET_DONGLE_IN);
           filter.addAction(ConnectivityManager.ACTION_ETHERNET_DONGLE_OUT);
           registerReceiver(mEthernetReceiver, filter);

    添加权限:

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

     

    转载于:https://my.oschina.net/xiaofeicai/blog/164596

    展开全文
  • 有时候需要看看CPU温度什么的,新装机时辅助调整风扇转速,有了这个程序就可以把需要的信息输出到任意设备,比如手机或网络, 方便进一步处理。网上有很多类似的文章,抄来抄去碰一鼻子灰,捡现成总是要付出点。。。...
  • (2)寻找“打印此页”的链接,或查看网站有无HTML样式更友好的移动版(把自己的请求头设置为处于移动设备状态,后接收网站移动版,更多见第12章)(3)寻找隐藏在JavaScript文件中的信息;(4)寻找网页标题...
  • 做这个的动机: 1、电脑直接使用浏览器认证锐捷...2、一账号限制同时登陆两个设备,这样在晚上断电后,电脑切换到有线网络的时候需要登陆后台将原来认证过的设备踢掉一个,麻烦。 直接上源码:#coding:utf-8 import t
  • Python+树莓派 是谁在开门但是这个设备运行的前提是需要树莓派正常供电并已经连接了网络但是如果需要在没有电没有宽带网络的户外实现随时掌控开关门的状态该怎么办今天就和大家分享一个正在制作的物联网开关门监控...
  • 使用Python代码示例的网络自动化 网络管理的Python代码示例的集合。 包括利用内置库的示例,以及使用公开的外部API(NETCONF / RESTCONF,SNMP,SSH,REST等)的示例。 一些示例利用了可用的SDK。 随身携带的例子 ...
  • EspNet EspNet是轻量级的微控制器管理和数据记录应用程序。 使用Python,Redis,REST,...如果设备复位并恢复在线状态,则引脚状态将得到纠正。 计时器-开启并按住 阈值-如果Redis键的值>目标,则关闭引脚,
  • 大多数企业都需要网络支撑企业的ICT运行,提升企业运行效率,针对企业网络中的网元设备(包括交换机,路由器,防火墙等),很多企业希望根据自身的业务特点定制网络管理,比如可以实现网络的运行状态可视化,...
  • Invoke:用于管理面向 shell 的子进程,同时支持将可执行的 Python 代码组织成命令行可调用的状态。 tmuxp: tmux 会话管理器。 高级 CLI httpie:一个命令行 HTTP 客户端,cURL 的替代品,易用性更好。 i...
  • 尽管这个长期目标仍然存在,但不幸的现实是,用于ML训练的丰富,标签化,公共和MODERN网络数据集的状态非常差。 我们的实验室正在努力提高网络训练集的可用性,但是在短期内,该项目仍将重点放在1)提高识别节点IS的...
  • 1、本地套接字  1、Linux下文件类型 ... b(块设备文件) c(字符设备文件 显示器,键盘等)  d(文件夹) -(普通文件 压缩包,音视频,文本)  l(连接文件) s(套接字文件)  p(管道文件)  2、意义:  在Lin...
  • Python之协程

    千次阅读 2020-09-27 09:57:30
    为了限制不同的程序之间的访问能力, 防止他们获取别的程序的内存数据, 或者获取外围设备的数据, 并发送到网络, CPU划分出两个权限等级 --用户态和内核态。 内核态:cpu可以访问内存的所有数据,包括外围设备,例如...
  • 网络设备的开放API平台 netpalm通过提供多个南向驱动程序,抽象方法和现代北向接口(例如开放的API3和REST Webhooks),可以轻松地将状态从应用程序推送到网络。 支持netpalm Apcela 因为企业的速度很重要 传递...
  • 它可以用于服务器,网络设备,物联网设备以及任何“可ping通的”设备。 支持: Linux 视窗 树莓派 现场演示: / 变更日志 (5/16/2020)更新至python 3 (9/9/2018)用json替换txt文件格式 (1/30/2018)用...
  • 2019独角兽企业重金招聘Python工程师标准>>> ...
  • 3.2 获取寄存器状态信息 3.2.1 线程枚举 3.2.2 功能整合 3.3 实现调试事件处理例程 3.4 无所不能的断点 3.4.1 软断点 3.4.2 硬件断点 3.4.3 内存断点 3.5 总结 第4章 PyDbg——Windows下的纯Python调试器 4.1 扩展...
  • 要求 Python3 帕霍 用这个来安装 pip3 install paho-mqtt python-etcd 怎么跑 打开终端并执行此命令 mosquito_sub -t / mosquitto_sub创建主机以侦听...您可以使用controller.py文件实时监视设备状态,而无需图形界面
  • Python与Cisco 的事儿

    2018-01-27 15:19:27
    前几天写了一段代码,是用来检查思科设备的端口运行状态的,只是中间有些bug或是存在安全问题,比如密码写在脚本里,对网络不可以达的设备没有进行判断并加以跳过。以下对前两天写的代码进行修改。#!/usr/bin/python...
  • 戴森Pure Cool Link Python库 这个Python 3.4+库允许您控制和。 状态 该库正变得相当稳定,但仍不能保证向后兼容。 完整文件 支持的设备 戴森纯净链接设备(塔式和桌面... MDNS查找本地网络上的设备 MQTT(带有身份验
  • 网络配置协议NETCONF(Network Configuration Protocol)提供一套管理网络设备的机制,用户可以使用这套机制增加、修改、删除网络设备的配置,获取网络设备的配置和状态信息。通过NETCONF协议,网络设备可以提供规范...
  • 是一个Python库,用于简化和抽象与网络设备的某些编程通信,从而使多供应商网络自动化更加容易。 此软件包引入了新功能,这些功能允许StackStorm用户以传感器,动作等形式利用StackStorm中的NAPALM。 该软件包利用...
  • PyTorch / XLA是一个Python软件包,它使用XLA深度学习编译器来连接PyTorch深度学习...看看我们的Colab笔记本之一,以快速尝试在Cloud TPU上运行的不同PyTorch网络,并学习如何将Cloud TPU用作PyTorch设备:PyTorch入门o

空空如也

空空如也

1 2 3 4 5 6
收藏数 113
精华内容 45
关键字:

python网络设备状态

python 订阅