Python: 装饰器的小例子
折腾了一天的装饰器,貌似理解了其中的一点点...
#!/usr/bin/env python3
#coding=utf-8
import getpass
from netmiko import ConnectHandler
from netmiko.ssh_exception import NetMikoTimeoutException,NetMikoAuthenticationExceptiondef 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) returnexcept (EOFError, NetMikoAuthenticationException):print(u" 网络设备%s: 用户名与密码错误!请确认账号与密码!" %ip)returnConn(ip,username,password,connect) return Connreturn 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,NetMikoAuthenticationExceptionclass 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) returnexcept (EOFError, NetMikoAuthenticationException):sprint(u" 网络设备%s: 用户名与密码错误!请确认账号与密码!" %self.ip)returndef 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()
转载于:https://blog.51cto.com/arckyli/2362655
Python: 装饰器的小例子相关推荐
- python装饰设备_Python: 装饰器的小例子
折腾了一天的装饰器,貌似理解了其中的一点点...#!/usr/bin/env python3 #coding=utf-8 import getpass from netmiko import Conn ...
- python装饰器实例-Python装饰器实用例子
Python里我们经常能见到@开头的句法,也就是人们常说的装饰器(decorator).装饰器是Python非常重要的一部分,能够产出更易于维护的代码.这篇文章会给大家带来装饰器的介绍以及几个实用的例 ...
- python装饰器实例-python装饰器实例大详解
原标题:python装饰器实例大详解 一.作用域 在python中,作用域分为两种:全局作用域和局部作用域. 全局作用域是定义在文件级别的变量,函数名.而局部作用域,则是定义函数内部. 关于作用域,我 ...
- python装饰器-python装饰器简介---这一篇也许就够了(推荐)
Python装饰器(decorator)是在程序开发中经常使用到的功能,合理使用装饰器,能让我们的程序如虎添翼. 装饰器引入 初期及问题诞生 假如现在在一个公司,有A B C三个业务部门,还有S一个基 ...
- python装饰器原理-Python装饰器完全解读
1 引言 装饰器(Decorators)可能是Python中最难掌握的概念之一了,也是最具Pythonic特色的技巧,深入理解并应用装饰器,你会更加感慨--人生苦短,我用Python. 2 初步理解装 ...
- python装饰器原理-python装饰器原理与用法深入详解
本文实例讲述了python装饰器原理与用法.分享给大家供大家参考,具体如下: 你会Python嘛? 我会! 那你给我讲下Python装饰器吧! Python装饰器啊?我没用过哎 以上是我一个哥们面试时 ...
- python装饰器实例-python装饰器使用实例详解
这篇文章主要介绍了python装饰器使用实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 python装饰器的作用就是在不想改变原函数代码的情 ...
- 没看完这11 条,别说你精通 Python 装饰器
对于每一个学习 Python 的同学,想必对 @ 符号一定不陌生了,正如你所知, @ 符号是装饰器的语法糖,@符号后面的函数就是我们本文的主角:装饰器. 装饰器放在一个函数开始定义的地方,它就像一顶帽 ...
- 这是我见过最全面的Python装饰器详解!没有学不会这种说法
python装饰器 刚刚接触python的装饰器,简直懵逼了,直接不懂什么意思啊有木有,自己都忘了走了多少遍Debug,查了多少遍资料,才有点点开始明白了. 学习python中有什么不懂的地方,小编这 ...
最新文章
- CUDA Samples: Long Vector Add
- .Net开发时有没有好的页面开发框架?
- Centos7.0一键搭建Python3.6开发环境
- GO 跟C++/C差异
- 【行为型模式】《大话设计模式》——读后感 (10)无尽加班何时休?——状态模式...
- 你该认识这样的Linux_shell函数使用案例
- java_Socket简单使用方法
- 27 JSX函数子元素的应用与思考
- java 解析日期格式_日期/时间格式/解析,Java 8样式
- genymotion 极速模拟器
- PHP5.4连接sqlserver
- aix查看oracle进程内存,Aix 查看进程占用内存大小(按从大小排列)
- Microsoft Visual C++ 2005 SP1无法安装
- 我对Backbone的认识
- 使用css控制gridview控件的样式,GridView 样式美化及应用.doc
- Odin - Inspector and Serializer 学习笔记总结
- C# XmlHelper
- i9023 中国联通 3G 西安信息中心号码
- 随机数模拟抛硬币实验
- php 自动抢红包机制,用脚本实现自动抢红包