折腾了一天的装饰器,貌似理解了其中的一点点...#!/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: 装饰器的小例子相关推荐

  1. python装饰设备_python装饰器

    无参装饰器: 它是一个函数,函数作为它的形参,返回值也是一个函数,可以使用@functionname方式,简化调用 装饰器和高阶函数: 装饰器是高阶函数,但装饰器是对传入函数的功能的装饰(功能增强) ...

  2. python elasticsearch查询_python 查询Elasticsearch的小例子

    #!/usr/bin/env python # -*- coding: utf-8 -*- from sfo_common.agent import Agent from sfo_common.imp ...

  3. [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 ...

  4. python log函数_python装饰器的使用

    1. 装饰者模式 装饰者模式是常用的软件设计模式之一.通过此设计模式,我们能够在不修改任何底层代码情况下,给已有对象赋予新的职责.python中可以用装饰器简单地实现装饰者模式. 1.1 将函数作为参 ...

  5. python open函数_精选2个小例子,带你快速入门Python文件处理

    阅读本文大概需要7分钟讲完了函数和模块,我们来讲一讲文件的使用,python对数据的处理分两种一种是本地文件的处理,另外一种是通过网络数据处理(也就是爬虫相关的).而本地的数据处理,主要是通过文件的读 ...

  6. python(dict字典相关知识以及小例子:生成一个列表,存放100个随机整数,找出出现次数最多的数字)

    一.什么是字典? #字典的使用 #子字典是一个容器类,可以用来存储数据 #列表存储数据特点:1.有序的 2.每一个都有一个索引,通过索引可以对数据进行查询,修改,删除#字典存储数据: key:valu ...

  7. python wraps函数_python装饰器---@wraps

    BEGIN: python装饰器 装饰器(Decorators)是Python的一个重要部分.简单地说:装饰器是修改其他函数的功能的函数.他们有助于让我们的代码更简短,也更Pythonic(Pytho ...

  8. Python: 装饰器的小例子

    折腾了一天的装饰器,貌似理解了其中的一点点... #!/usr/bin/env python3 #coding=utf-8 import getpass from netmiko import Con ...

  9. python find函数_Python 装饰器填坑指南 | 最常见的报错信息、原因和解决方案

    本文为霍格沃兹测试学院学员学习笔记,进阶学习文末加群. Python 装饰器简介 装饰器(Decorator)是 Python 非常实用的一个语法糖功能.装饰器本质是一种返回值也是函数的函数,可以称之 ...

最新文章

  1. Matplotlib实例教程(五)绘制散点图
  2. ITK:计算图像在特定方向上的导数
  3. python 写txt 换行_python 批配换行Numpy数组的保存与读取方法
  4. Linux 内核维护缺后浪,前浪Linus缺点Fun
  5. 筛选样本_早产预测准确性创新高!3种样本PK,首次利用脂质组学筛选出生物标志物...
  6. 后缀数组 倍增法详解
  7. sql和mysql同时配置_jfinal同时配置mssql和mysql混动数据源
  8. webpack全局安装和安装过程中碰见的一些坑(npm error)解决方案
  9. 2021-2027全球与中国弹簧加载探针市场现状及未来发展趋势
  10. 使用gevent的Pool实现异步并发
  11. DDR中的一些知识点说明(ODT,ZQ校准,OCT,TDQS)【转载】
  12. iPhone再添新配色: 黄铜色?
  13. AssemblyInfo.cs文件中的程序集属性
  14. 【C语言】复试系列问题
  15. 2022高处安装、维护、拆除考试题库模拟考试平台操作
  16. nodejs cms mysql_strapi (基于Nodejs的开源免费CMS框架)新手教程
  17. 705.设计哈希集合
  18. 计算机组成原理mips与arm,计算机组成原理之MIPS指令系统和MIPS体系结构
  19. Altium Designer20 PCB设计基础知识
  20. Python字典解包只用一个星号可以只提取键

热门文章

  1. Java循环读取文件夹下文件
  2. Linux下Apache日志分析工具--AWStats安装使用
  3. “评IDC,送免费主机”活动,主机无任何限制,无广告
  4. 获得所有已打开的IE浏览器窗口中的访问地址
  5. Leangoo阶段式(瀑布式)游戏产品研发
  6. 图解 Serverless!秒懂!
  7. 劝大家逃离互联网!某前互联网员工自述:从互联网到传统行业,工资多,不加班,有户口,能买房!...
  8. 60 张图详解 98 个常见网络概念
  9. 33 张图详解 RSTP 、MSTP、替代技术
  10. 不称职Leader的10个特征,看看你中几条?