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爬取Coursera课程资源的详细过程
Nov 04 Python
Python中常见的数据类型小结
Aug 29 Python
python 迭代器和iter()函数详解及实例
Mar 21 Python
python 系统调用的实例详解
Jul 11 Python
Django 导出 Excel 代码的实例详解
Aug 11 Python
Python实现求解括号匹配问题的方法
Apr 17 Python
详谈pandas中agg函数和apply函数的区别
Apr 20 Python
Python利用公共键如何对字典列表进行排序详解
May 19 Python
对python生成业务报表的实例详解
Feb 03 Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 Python
Django更新models数据库结构步骤
Apr 01 Python
爬虫代理的cookie如何生成运行
Sep 22 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中操作Excel实例代码
2010/04/29 PHP
php正则过滤html标签、空格、换行符的代码(附说明)
2010/10/25 PHP
php文件上传表单摘自drupal的代码
2011/02/15 PHP
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
工作需要写的一个js拖拽组件
2011/07/28 Javascript
jquery隐藏标签和显示标签的实例
2013/11/11 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
jQuery学习笔记之创建DOM元素
2015/01/19 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
js,jq,css多方面实现简易下拉菜单功能
2017/05/13 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
浅谈JavaScript中的属性:如何遍历属性
2017/09/14 Javascript
微信小程序icon组件使用详解
2018/01/31 Javascript
在vue项目中引用Iview的方法
2018/09/14 Javascript
Vue实现调节窗口大小时触发事件动态调节更新组件尺寸的方法
2018/09/15 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
Bootstrap实现省市区三级联动(亲测可用)
2019/07/26 Javascript
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
Element Alert警告的具体使用方法
2020/07/27 Javascript
python基于BeautifulSoup实现抓取网页指定内容的方法
2015/07/09 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
Python处理PDF及生成多层PDF实例代码
2017/04/24 Python
python itchat实现微信好友头像拼接图的示例代码
2017/08/14 Python
Python实现批量压缩图片
2018/01/25 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
python实现多进程通信实例分析
2019/09/01 Python
Windows下实现将Pascal VOC转化为TFRecords
2020/02/17 Python
终于搞懂了Keras中multiloss的对应关系介绍
2020/06/22 Python
解决Python安装cryptography报错问题
2020/09/03 Python
CSS3文本换行word-wrap解决英文文本超过固定宽度不换行
2013/10/10 HTML / CSS
HTML5中的Web Notification桌面右下角通知功能的实现
2018/04/19 HTML / CSS
团结主题班会
2015/08/13 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记