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()

运执行上面的代码,运行效果如下: 

Python: 装饰器的小例子

以下代码用类也可以实现相一样的结果,可以对比一下那个方便

#!/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()

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:Python:装饰器的小例子-创新互联
标题URL:http://scyanting.com/article/dcieii.html