设为首页 收藏本站
查看: 2036|回复: 0

[经验分享] pyhton对网络设备的日常巡检

[复制链接]
累计签到:2 天
连续签到:1 天
发表于 2016-1-11 08:55:50 | 显示全部楼层 |阅读模式
利用python对网络设备的日常巡检,主要是防火墙,交换机,负载均衡。方式是用Telnet,或者SSH2。SSH1呢还在研究当中。
  首先说下使用Telnet。可以使用pyhton的telnetlib模块(这个模块是自带的,只需要定义import telnetlib就可以了)。Telnet的方式比较简单,主要是针对交换机,核心思想就是通过账号密码telnet交换机,然后输入命令,取返回值,再提取需要的数据,最后做表。根据不同的设备,写不同的脚本,最后整合一下。(当然第一次整合特别繁琐,虽然我们机房都是华为的交换机,但是型号不同,板卡数量不同,命令和返回值都截然不同,需要更多的耐心和时间)
命令如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
        tn = telnetlib.Telnet(ip, port = 23, timeout = 10)
        tn.set_debuglevel(2)
        tn.read_until('Username:')                           
        tn.write(username + '\n')                        
        tn.read_until('Password:')
        tn.write(password1 + '\n')   #行进登录操作,账号密码                          
        tn.read_until('>')           #当读取返回值为‘>’时输入命令,>即用户模式
        tn.write(‘命令’)
        log_file = open(txt, "w+")   #打开创建好的TXT,把取到的返回值存入TXT
        tn.write('qquit'+'\n')
        ret = tn.read_until('uit')
        log_file.write(ret)
        log_file.flush()
        log_file.close()
        tn.close()
        s = linecache.getline(txt,33)#打开TXT,找到需要的数据并输入到excel表中,
        val=s.split()                  #就从哪一行,第几列去值,当然可以利用val[][]的字符串
        t = val[-1]                    #技巧
        ws_newWb.write(i, 4, t);#内存
        s = linecache.getline(txt,39)
        val=s.split()
        t = val[-3]
        ws_newWb.write(i, 3, t);#CPU
        s = linecache.getline(txt,21)
        val=s.split()
        t = val[-1]
        ws_newWb.write(i, 6, t);#温度
        linecache.clearcache()
然后就是SSH了,主要是用于防火墙和负载均衡
一般来说SSH2通过 paramiko这个模块来实现SSH2登录,这个模块不是自带的安装有几个步骤,
第一,安装python的VCForPython27.msi(这个是针对用window跑脚本才需要的)
第二,安装pycrypto-2.6.win-amd64-py2.7
第三,安装paramiko
安装模块也是比较麻烦的,最好使用easy_install 来安装很方便(具体操作呢,度娘)
    ssh = paramiko.Transport(ip,22)
    ssh.connect(username=“用户名”, password=“密码”)
    chan=ssh.open_session()
    chan.settimeout(60)
    chan.get_pty()
    chan.invoke_shell()
    log_file=open(txt,'w+')
    time.sleep(1)
    chan.send('命令')
    time.sleep(1)
    log_file.write(chan.recv(65535))
    log_file.flush()
    log_file.close()
    ssh.close()



因为使用ssh登录呢,在你输入值以后不会像Telnet那样直接给你返回值,你需要通过chan.recv
的方式来取,其中需要停顿,不然会导致输入错误,所以我加入了time.sleep(当然time模块也是需要定义的)
取值的方法更Telnet的方法一样,就不在重复说了
还有一点就是通过python对excel的操作,我把设备的账号密码保存在excel表中,然后读取的。读取到的值是带有格式的,需要对其进行字符转换,也就是加一个str()即可。
总的来说,技术含量不高,主要是需要耐心。菜鸟第一次写类似的文档,表述能力还需要提高,谢谢大家


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-162819-1-1.html 上篇帖子: python logging 单例模式范例 下篇帖子: python文件处理方式 网络
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表