python 处理telnet返回的More,以及get想要的那个参数方法


Posted in Python onFebruary 14, 2019

问题:

需要循环获取网元返回的某个参数,并计算出平均值。

解决方案:

通过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想要的那个参数方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python创建临时文件夹的方法
Jul 06 Python
Python在Console下显示文本进度条的方法
Feb 14 Python
Python+Socket实现基于UDP协议的局域网广播功能示例
Aug 31 Python
python 读取txt中每行数据,并且保存到excel中的实例
Apr 29 Python
python实现推箱子游戏
Mar 25 Python
使用Python快速制作可视化报表的方法
Feb 03 Python
用Python实现最速下降法求极值的方法
Jul 10 Python
Python字符串、列表、元组、字典、集合的补充实例详解
Dec 20 Python
解决python中显示图片的plt.imshow plt.show()内存泄漏问题
Apr 24 Python
python中wx模块的具体使用方法
May 15 Python
Python使用for生成列表实现过程解析
Sep 22 Python
Django数据库迁移常见使用方法
Nov 12 Python
python 多个参数不为空校验方法
Feb 14 #Python
python pexpect ssh 远程登录服务器的方法
Feb 14 #Python
Python之时间和日期使用小结
Feb 14 #Python
对Python Pexpect 模块的使用说明详解
Feb 14 #Python
python获取交互式ssh shell的方法
Feb 14 #Python
对python多线程SSH登录并发脚本详解
Feb 14 #Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 #Python
You might like
新手学习PHP的一些基础知识分享
2011/07/27 PHP
PHP连接MYSQL数据库的3种常用方法
2017/02/27 PHP
TP5框架安全机制实例分析
2020/04/05 PHP
JavaScript数字和字符串转换示例
2014/03/26 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
解决js下referer兼容各大浏览器的方法
2014/11/03 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
使用javascript将时间转换成今天,昨天,前天等格式
2015/06/25 Javascript
javascript类型系统 Array对象学习笔记
2016/01/09 Javascript
Javascript 创建类并动态添加属性及方法的简单实现
2016/10/20 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
Jquery给当前页或者跳转后页面的导航栏添加选中后样式的实例
2016/12/08 Javascript
在 Angular 中使用Chart.js 和 ng2-charts的示例代码
2017/08/17 Javascript
基于Vue框架vux组件库实现上拉刷新功能
2017/11/28 Javascript
使用socket.io实现简单聊天室案例
2018/01/02 Javascript
React 高阶组件入门介绍
2018/01/11 Javascript
AngularJS自定义过滤器用法经典实例总结
2018/05/17 Javascript
浅谈Vue SSR中的Bundle的具有使用
2019/11/21 Javascript
微信分享invalid signature签名错误踩过的坑
2020/04/11 Javascript
详解Typescript里的This的使用方法
2021/01/08 Javascript
[09:37]DOTA2卡尔工作室 英雄介绍圣堂刺客篇
2013/06/13 DOTA
python使用urlparse分析网址中域名的方法
2015/04/15 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
Django缓存系统实现过程解析
2019/08/02 Python
Django自关联实现多级联动查询实例
2020/05/19 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
用HTML5制作一个简单的桌球游戏的教程
2015/05/12 HTML / CSS
英国剑桥包官网:The Cambridge Satchel Company
2016/08/01 全球购物
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
销售会计工作职责
2013/12/02 职场文书
学生爱国演讲稿
2014/01/14 职场文书
消防应急演练方案
2014/02/12 职场文书
洗发露广告词
2014/03/14 职场文书
Python中文纠错的简单实现
2021/07/07 Python
Log4j.properties配置及其使用
2021/08/02 Java/Android