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 相关文章推荐
Python2.5/2.6实用教程 入门基础篇
Nov 29 Python
菜鸟使用python实现正则检测密码合法性
Jan 05 Python
使用Python的Flask框架来搭建第一个Web应用程序
Jun 04 Python
python使用正则表达式替换匹配成功的组
Nov 17 Python
python3第三方爬虫库BeautifulSoup4安装教程
Jun 19 Python
python的中异常处理机制
Aug 30 Python
python 将json数据提取转化为txt的方法
Oct 26 Python
Python编程在flask中模拟进行Restful的CRUD操作
Dec 28 Python
对python 自定义协议的方法详解
Feb 13 Python
Python编程实现tail-n查看日志文件的方法
Jul 08 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
pycharm配置QtDesigner的超详细方法
Jan 25 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
MVC模式的PHP实现
2006/10/09 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
php生成略缩图代码
2012/07/16 PHP
深入PHP中的HashTable结构详解
2013/06/13 PHP
PHP中session变量的销毁
2014/02/27 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
递归实现php数组转xml的代码分享
2015/05/14 PHP
PHP实现多维数组转字符串和多维数组转一维数组的方法
2015/08/08 PHP
区分JS中的undefined,null,"",0和false
2007/03/08 Javascript
在网页里看flash的trace数据的js类
2009/01/10 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
详解vue2 $watch要注意的问题
2017/09/08 Javascript
vue axios 表单提交上传图片的实例
2018/03/16 Javascript
小程序实现上下移动切换位置
2019/09/23 Javascript
js实现提交前对列表数据的增删改查
2020/01/16 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
详解python string类型 bytes类型 bytearray类型
2017/12/16 Python
Python将文本去空格并保存到txt文件中的实例
2018/07/24 Python
Django使用中间键实现csrf认证详解
2019/07/22 Python
Python计算信息熵实例
2020/06/18 Python
如何使用Python自动生成报表并以邮件发送
2020/10/15 Python
css3气泡 css3关键帧动画创建的动态通知气泡
2013/02/26 HTML / CSS
白兰氏健康Mall:BRAND’S
2017/11/13 全球购物
类成员函数的重载、覆盖和隐藏区别
2016/01/27 面试题
Linux如何压缩可执行文件
2013/10/21 面试题
旅游个人求职信范文
2014/01/30 职场文书
土建工程师岗位职责
2014/06/10 职场文书
高中升旗仪式主持词
2015/07/03 职场文书
生产车间管理制度
2015/08/04 职场文书
《半截蜡烛》教学反思
2016/02/19 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
python实战之用emoji表情生成文字
2021/05/08 Python
原生Javascript+HTML5一步步实现拖拽排序
2021/06/12 Javascript