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
您可能感兴趣
- python2.7中logging的使用方式(Python中使用logging和traceback模块记录日志和跟踪异常)
- python模块使用方法(详解python的argpare和click模块小结)
- python人脸识别库(20行python代码实现人脸识别)
- python如何编写一个用户登录系统(Python实现的登录验证系统完整案例基于搭建的MVC框架)
- python怎么装opencv(Python基于opencv实现的简单画板功能示例)
- python中什么是迭代器(一篇文章彻底搞懂Python中可迭代Iterable、迭代器Iterator与生成器Generator的概)
- python的模块与包与库(Python 中包/模块的 `import` 操作代码)
- python创建字典的代码(Python创建字典的八种方式)
- python有哪几种赋值(关于python多重赋值的小问题)
- python爬虫开源代码(Python实现的文轩网爬虫完整示例)
- wxpython 弹出对话框显示图片(WxPython建立批量录入框窗口)
- python电脑端微信自动化(python使用wxpy实现微信消息防撤回脚本)
- python面向对象使用方法(Python面向对象程序设计之私有属性及私有方法示例)
- python代码如何进行切片索引(Python读取Pickle文件信息并计算与当前时间间隔的方法分析)
- python 百度搜索结果(Python模拟百度自动输入搜索功能的实例)
- python怎么自动生成报告(python根据文章标题内容自动生成摘要的实例)
- 红色文化进国企(红色文化进国企)
- 车友的选择| 轮毂该如何选(车友的选择轮毂该如何选)
- 秦海璐炫耀和王新军热恋蜜事,不料对方吐槽她吃饱后肚子撅老高(秦海璐炫耀和王新军热恋蜜事)
- 秦海璐一袭旗袍惹人倾心,将高级与淡雅展现的游刃有余(秦海璐一袭旗袍惹人倾心)
- 门外之见 海蛎子味 的表演,能走多远(门外之见海蛎子味)
- 三部冷门谍战剧,第一部2014年拍摄,至今还未播出(三部冷门谍战剧)
热门推荐
- vue怎么定义router的动态路由(vue.js Router中嵌套路由的实用示例)
- vue组件之间的通信(超详细的vue组件间通信总结)
- iframe嵌入页面跨域(使用iframe+postMessage实现页面跨域通信的示例代码)
- sqlserver中复合索引(浅析SQL Server 聚焦索引对非聚集索引的影响)
- docker资源隔离的实现方式(docker配置openGauss数据库的方法详解)
- python如何编写一个用户登录系统(Python实现的登录验证系统完整案例基于搭建的MVC框架)
- SQL Server中对列的权限设置
- 查看linux服务器开放哪些端口(详解Linux服务器最多能开放多少个端口)
- Sql Server中的Null值
- html5清除浮动的方法(HTML5实现移动端点击翻牌功能)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9