python使用telnet(python 处理telnet返回的More,以及get想要的那个参数方法)
类别:脚本大全 浏览量:1642
时间:2022-03-30 09:08:51 python使用telnet
python 处理telnet返回的More,以及get想要的那个参数方法问题:
需要循环获取网元返回的某个参数,并计算出平均值。
解决方案:
通过expect解决返回More的问题。
通过具体的参数位置,精确获取到参数。
讨论:
参数位置固定,不好复用。
|
#! usr/bin/env python # -*- coding: utf-8 -*- import telnetlib import math import time def get_param(b): "获取相应的参数,返回float型参数组" c = [] b = list (b) length = len (b) print length for x in b: c.append( float (x)) print c return c def get_avg(a): "获取平均值" length = len (a) sum = 0 for x in a: sum + = x avg = sum / length return avg def get_telnet(tn): "获取telnet数据" for command in commands: tn.write( '%s\n' % command) time.sleep( 0.5 ) ## result = tn.read_very_eager() # 不用read_all(),不能处理More print "**************" a = [] a.append( 'More' ) print a result = str () while True : b,c,d = tn.expect(a,timeout = 1 ) print b # 有More为0,无More为-1 print 'cccccccccccccccccccccccccccccccccccccccccccc' print c print 'dddddddddddddddddddddddddddddddddddddddddddd' print d result + = d if 0 = = b: print "There has 'More'!!!" tn.write(r ' ' ) #不用\r\n来继续 else : break print 'get result success!' print result #获取到带More的所有返回结果 a = result.split( '\r\n' ) # 不要加r length = len (a) print length b = a[ 1 ].split( ' ' ) print b print a[ 32 ] c = a[ 32 ] d = c.split( ' ' ) print d length = len (d) print d[ 8 ] e = d[ 8 ].split( '(' ) print e[ 0 ] return e[ 0 ] def close_telnet(tn): "执行完毕后,终止Telnet连接(或输入exit退出)" tn.write( 'exit\n' ) tn.close() def open_telnet(Host, username, password, finish, commands): "Telnet远程登录" # 连接Telnet服务器 tn = telnetlib.Telnet(Host, port = 23 , timeout = 10 ) tn.set_debuglevel( 2 ) # 输入登录用户名 tn.read_until( 'Username:' ) tn.write(username + '\n' ) # 输入登录密码 tn.read_until( 'Password:' ) tn.write(password + '\n' ) # 登录完毕后执行命令 tn.read_until(finish) return tn if __name__ = = '__main__' : Host = '' # Telnet服务器IP username = '' # 登录用户名 password = '' # 登录密码 finish = '#' # 命令提示符 param = [] commands = [ 'sho optical-module-info xgei-1/3/1' ] tn = open_telnet(Host, username, password, finish, commands) for i in range ( 1 , 10 ): param.append(get_telnet(tn)) close_telnet(tn) print param print get_avg(get_param(param)) ''' 运行结果: 37 ['Optical', 'Module', 'Position', ':', 'xgei-1/3/1'] Bias-Upper : 131(mA) Bias-Lower : 0(mA) ['Bias-Upper', '', '', '', '', '', '', ':', '131(mA)', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'Bias-Lower', '', '', '', '', '', '', ':', '0(mA)'] 131(mA) 131 Telnet(172.10.1.123,23): send 'exit\n' ['131', '131', '131', '131', '131', '131', '131', '131', '131'] 9 [131.0, 131.0, 131.0, 131.0, 131.0, 131.0, 131.0, 131.0, 131.0] 131.0 >>> ''' |
以上这篇python 处理telnet返回的More,以及get想要的那个参数方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。
原文链接:https://blog.csdn.net/BigDeng_2014/article/details/76921031
您可能感兴趣
- python中列表操作五种常用方法(Python使用paramiko操作linux的方法讲解)
- python自动识别旋转验证码(Python实现字符型图片验证码识别完整过程详解)
- python类继承和封装(Python面向对象程序设计类的封装与继承用法示例)
- python验证码处理教程(python简单验证码识别的实现方法)
- python坐标输入(python导入坐标点的具体操作)
- python用于机器人(python实现nao机器人身体躯干和腿部动作操作)
- python中怎样使用列表的sort方法(详解python中sort排序使用)
- pythonkeys怎么用(浅谈python的深浅拷贝以及fromkeys的用法)
- pythonsocket详细用法(Python中的Socket 与 ScoketServer 通信及遇到问题解决方法)
- pythonredis使用场景(python 通过SSHTunnelForwarder隧道连接redis的方法)
- python如何获取微信好友(利用Python查看微信共同好友功能的实现代码)
- python提供的四种基本数据类型(浅谈python的输入输出,注释,基本数据类型)
- pythondjango搭建web(PythonWeb项目Django部署在Ubuntu18.04腾讯云主机上)
- python生成密码字典教程(Python利用字典破解WIFI密码的方法)
- pythonmatplotlib画图流程(python3使用matplotlib绘制条形图)
- python微信红包代码(php生成微信红包数组的方法)
- 美国数十万加仑牛奶倒下水道怎么回事 原因曝光令人心痛(美国数十万加仑牛奶倒下水道怎么回事)
- 探索中国神秘文字(探索中国神秘文字)
- 重温《蜗居》 宋思明选中海藻为红颜知己,纯属巧合,与爱无关(宋思明选中海藻为红颜知己)
- 越南旅游攻略(越南旅游攻略自由行)
- 成都旅游攻略(成都旅游攻略自由行最佳线路)
- 给儿童吃什么最好(给儿童吃什么最好消化)
热门推荐
- docker 部署springboot项目(Spring Boot Docker打包工具小结)
- sqlserver定时计划(sql server deadlock跟踪的4种实现方法)
- html5表格设计(Html5饼图绘制实现统计图的方法)
- dedecms添加模板(dedecms正文自动排版插件 伪原创站必备)
- mysqlinnodb锁使用教程(MySQL Innodb关键特性之插入缓冲insert buffer)
- python的多线程比多进程效率高(Python中单线程、多线程和多进程的效率对比实验实例)
- css高级使用技巧(全面解析CSS Media媒体查询使用操作推荐)
- localstorage底层技术(浅谈Web Storage API的使用)
- angular封装公共组件(详解Angular组件之生命周期二)
- Web.Release.config 和 Web.Debug.config
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9