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类和函数中使用静态变量的方法
May 09 Python
深度定制Python的Flask框架开发环境的一些技巧总结
Jul 12 Python
Python跨文件全局变量的实现方法示例
Dec 10 Python
numpy数组拼接简单示例
Dec 15 Python
python 通过xml获取测试节点和属性的实例
Mar 31 Python
用Python将mysql数据导出成json的方法
Aug 21 Python
python 实现批量xls文件转csv文件的方法
Oct 23 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
Jan 29 Python
python爬虫 批量下载zabbix文档代码实例
Aug 21 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
Jul 06 Python
关于多种方式完美解决Python pip命令下载第三方库的问题
Dec 21 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
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
一些技巧性实用js代码小结
2009/10/14 Javascript
浅析js中的浮点型运算问题
2014/01/06 Javascript
js获取input长度并根据页面宽度设置其大小及居中对齐
2014/08/22 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
2015/12/08 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
bootstrap table实例详解
2017/01/06 Javascript
AugularJS从入门到实践(必看篇)
2017/07/10 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
解决vue同一slot在组件中渲染多次的问题
2018/09/06 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
layui中的switch开关实现方法
2019/09/03 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
详解django三种文件下载方式
2018/04/06 Python
python3+PyQt5重新实现QT事件处理程序
2018/04/19 Python
python里运用私有属性和方法总结
2019/07/08 Python
python如何删除文件中重复的字段
2019/07/16 Python
python分割一个文本为多个文本的方法
2019/07/22 Python
Python 读取 YUV(NV12) 视频文件实例
2019/12/09 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
2020/02/27 Python
python可视化 matplotlib画图使用colorbar工具自定义颜色
2020/12/07 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
Html5新标签解释及用法
2012/02/17 HTML / CSS
越南电子产品购物网站:FPT Shop
2017/12/02 全球购物
奢华时尚的独特视角:La Garçonne
2018/06/07 全球购物
英国网上购买肉类网站:Great British Meat
2018/10/17 全球购物
佳能法国商店:Canon法国
2019/02/14 全球购物
英国领先的豪华时尚家居网上商店:Amara
2019/08/12 全球购物
升学宴主持词
2014/04/02 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
给老婆的保证书怎么写
2015/05/08 职场文书
高老头读书笔记
2015/06/30 职场文书