python装饰设备_Python: 装饰器的小例子
折腾了一天的装饰器,貌似理解了其中的一点点...#!/usr/bin/env python3
#coding=utf-8
import getpass
from netmiko import ConnectHandler
from netmiko.ssh_exception import NetMikoTimeoutException,NetMikoAuthenticationException
def auth(Conn):
def wrapper(ip,username,password):
device = {
'device_type': 'cisco_ios',
'ip': ip,
'username': username,
'password': password,
}
try:
connect = ConnectHandler(**device)
connect.enable()
except (EOFError, NetMikoTimeoutException):
print(u" 网络设备%s: 无法连接!请确认该设备IPAddress是否可达!"%ip)
return
except (EOFError, NetMikoAuthenticationException):
print(u" 网络设备%s: 用户名与密码错误!请确认账号与密码!" %ip)
return
Conn(ip,username,password,connect)
return Conn
return wrapper
@auth
def showInterface(ip,username,password,connect):
res = connect.send_command('show ip int brief')
print(res)
connect.disconnect()
@auth
def showVersion(ip,username,password,connect):
res = connect.send_command('show version')
print(res)
connect.disconnect()
def main():
print(u"选项请输入数字,如: 1、2")
print(u"1. 查询设备接口信息")
print(u"2. 查询设备版本信息")
print("")
runFunc = int(input(u'请输入需要执行命令的选项: '))
input_ip = input("IPAddress: ")
ipaddress = input_ip.split(",")
username = input("Username: ")
password = getpass.getpass()
for ip in ipaddress:
if runFunc == 1:
showInterface(ip,username,password)
if runFunc == 2:
showVersion(ip,username,password)
if __name__ == '__main__':
main()
运执行上面的代码,运行效果如下:
以下代码用类也可以实现相一样的结果,可以对比一下那个方便#!/usr/bin/env python3
#coding=utf-8
import getpass
from netmiko import ConnectHandler
from netmiko.ssh_exception import NetMikoTimeoutException,NetMikoAuthenticationException
class NWBackup():
def __init__(self):
self.ip = input('IPAddress:')
self.username = input('Username:')
self.password = getpass.getpass()
self.device={'device_type': 'cisco_ios',
'username': self.username,
'password': self.password,
'ip':self.ip
}
try:
self.connect = ConnectHandler(**self.device)
self.connect.enable()
except (EOFError, NetMikoTimeoutException):
print(u" 网络设备%s: 无法连接!请确认该设备IPAddress是否可达!" %self.ip)
return
except (EOFError, NetMikoAuthenticationException):
sprint(u" 网络设备%s: 用户名与密码错误!请确认账号与密码!" %self.ip)
return
def disVersion(self):
cmd = 'show version'
print(self.connect.send_command(cmd))
self.connect.disconnect()
def disInterface(self):
cmd = 'show ip interface brief'
print(self.connect.send_command(cmd))
self.connect.disconnect()
def runComment(self):
disfunc = int(input('pls input num: '))
if disfunc == 1:
self.disVersion()
if disfunc == 2:
self.disInterface()
if __name__ == '__main__':
run = NWBackup()
run.runComment()
python装饰设备_Python: 装饰器的小例子相关推荐
- python装饰设备_python装饰器
无参装饰器: 它是一个函数,函数作为它的形参,返回值也是一个函数,可以使用@functionname方式,简化调用 装饰器和高阶函数: 装饰器是高阶函数,但装饰器是对传入函数的功能的装饰(功能增强) ...
- python elasticsearch查询_python 查询Elasticsearch的小例子
#!/usr/bin/env python # -*- coding: utf-8 -*- from sfo_common.agent import Agent from sfo_common.imp ...
- [Spark][Hive][Python][SQL]Spark 读取Hive表的小例子
[Spark][Hive][Python][SQL]Spark 读取Hive表的小例子 $ cat customers.txt 1 Ali us 2 Bsb ca 3 Carls mx $ hive ...
- python log函数_python装饰器的使用
1. 装饰者模式 装饰者模式是常用的软件设计模式之一.通过此设计模式,我们能够在不修改任何底层代码情况下,给已有对象赋予新的职责.python中可以用装饰器简单地实现装饰者模式. 1.1 将函数作为参 ...
- python open函数_精选2个小例子,带你快速入门Python文件处理
阅读本文大概需要7分钟讲完了函数和模块,我们来讲一讲文件的使用,python对数据的处理分两种一种是本地文件的处理,另外一种是通过网络数据处理(也就是爬虫相关的).而本地的数据处理,主要是通过文件的读 ...
- python(dict字典相关知识以及小例子:生成一个列表,存放100个随机整数,找出出现次数最多的数字)
一.什么是字典? #字典的使用 #子字典是一个容器类,可以用来存储数据 #列表存储数据特点:1.有序的 2.每一个都有一个索引,通过索引可以对数据进行查询,修改,删除#字典存储数据: key:valu ...
- python wraps函数_python装饰器---@wraps
BEGIN: python装饰器 装饰器(Decorators)是Python的一个重要部分.简单地说:装饰器是修改其他函数的功能的函数.他们有助于让我们的代码更简短,也更Pythonic(Pytho ...
- Python: 装饰器的小例子
折腾了一天的装饰器,貌似理解了其中的一点点... #!/usr/bin/env python3 #coding=utf-8 import getpass from netmiko import Con ...
- python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案
本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. Python 装饰器简介 装饰器(Decorator)是 Python 非常实用的一个语法糖功能.装饰器本质是一种返回值也是函数的函数,可以称之 ...
最新文章
- Matplotlib实例教程(五)绘制散点图
- ITK:计算图像在特定方向上的导数
- python 写txt 换行_python 批配换行Numpy数组的保存与读取方法
- Linux 内核维护缺后浪,前浪Linus缺点Fun
- 筛选样本_早产预测准确性创新高!3种样本PK,首次利用脂质组学筛选出生物标志物...
- 后缀数组 倍增法详解
- sql和mysql同时配置_jfinal同时配置mssql和mysql混动数据源
- webpack全局安装和安装过程中碰见的一些坑(npm error)解决方案
- 2021-2027全球与中国弹簧加载探针市场现状及未来发展趋势
- 使用gevent的Pool实现异步并发
- DDR中的一些知识点说明(ODT,ZQ校准,OCT,TDQS)【转载】
- iPhone再添新配色: 黄铜色?
- AssemblyInfo.cs文件中的程序集属性
- 【C语言】复试系列问题
- 2022高处安装、维护、拆除考试题库模拟考试平台操作
- nodejs cms mysql_strapi (基于Nodejs的开源免费CMS框架)新手教程
- 705.设计哈希集合
- 计算机组成原理mips与arm,计算机组成原理之MIPS指令系统和MIPS体系结构
- Altium Designer20 PCB设计基础知识
- Python字典解包只用一个星号可以只提取键
热门文章
- Java循环读取文件夹下文件
- Linux下Apache日志分析工具--AWStats安装使用
- “评IDC,送免费主机”活动,主机无任何限制,无广告
- 获得所有已打开的IE浏览器窗口中的访问地址
- Leangoo阶段式(瀑布式)游戏产品研发
- 图解 Serverless!秒懂!
- 劝大家逃离互联网!某前互联网员工自述:从互联网到传统行业,工资多,不加班,有户口,能买房!...
- 60 张图详解 98 个常见网络概念
- 33 张图详解 RSTP 、MSTP、替代技术
- 不称职Leader的10个特征,看看你中几条?