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 11 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
Jul 04 Python
python机器人行走步数问题的解决
Jan 29 Python
python验证码识别教程之灰度处理、二值化、降噪与tesserocr识别
Jun 04 Python
使用 Visual Studio Code(VSCode)搭建简单的Python+Django开发环境的方法步骤
Dec 17 Python
Django choices下拉列表绑定实例
Mar 13 Python
Windows10+anacond+GPU+pytorch安装详细过程
Mar 24 Python
树莓派4B安装Tensorflow的方法步骤
Jul 16 Python
Python 在局部变量域中执行代码
Aug 07 Python
Python+pyftpdlib实现局域网文件互传
Aug 24 Python
解决pycharm下载库时出现Failed to install package的问题
Sep 04 Python
详解Python中*args和**kwargs的使用
Apr 07 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
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
利用PHP如何统计Nginx日志的User Agent数据
2019/03/06 PHP
php简单计算权重的方法示例【适合抽奖类应用】
2019/06/10 PHP
js资料prototype 属性
2007/03/13 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
JS保存、读取、换行、转Json报错处理方法
2013/06/14 Javascript
8个实用的jQuery技巧
2014/03/04 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
javascript中的this详解
2014/12/08 Javascript
Javascript之Date对象详解
2016/06/07 Javascript
Angularjs中$http以post请求通过消息体传递参数的实现方法
2016/08/05 Javascript
微信小程序 教程之wxapp 视图容器 view
2016/10/19 Javascript
微信小程序本地缓存数据增删改查实例详解
2017/05/24 Javascript
详解HTTPS 的原理和 NodeJS 的实现
2017/07/04 NodeJs
Angularjs cookie 操作实例详解
2017/09/27 Javascript
vue.js计算属性computed用法实例分析
2018/07/06 Javascript
layer实现弹出层自动调节位置
2019/09/05 Javascript
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
Python读取properties配置文件操作示例
2018/03/29 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
2018/11/29 Python
详解Python中的format格式化函数的使用方法
2019/11/20 Python
Python Scrapy框架第一个入门程序示例
2020/02/05 Python
matlab灰度图像调整及imadjust函数的用法详解
2020/02/27 Python
鲜为人知的HTML5语音合成功能
2019/05/17 HTML / CSS
网络艺术零售业的先驱者:artrepublic
2017/09/26 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
新闻专业学生的自我评价
2014/02/13 职场文书
主持人大赛开场白
2015/05/29 职场文书
施工现场安全管理制度
2015/08/05 职场文书
python OpenCV学习笔记
2021/03/31 Python
Axios取消重复请求的方法实例详解
2021/06/15 Javascript
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
Redis如何使用乐观锁(CAS)保证数据一致性
2022/03/25 Redis
vue 自定义的组件绑定点击事件
2022/04/21 Vue.js
python如何读取和存储dict()与.json格式文件
2022/06/25 Python