1 import sys 2 from netmiko import ConnectHandler 3 4 try: #判断有没有MAC地址通过变量传递进来 5 mac=sys.argv[1] 6 except BaseException: 7 mac=input("输入mac:(支持格式:IP、123456789abc、12-34-56-78-9a-bc、1234-5678-9abc)\n") #没有变量传递进来就自己输mac地址 8 9 if("." in mac): #判断格式 是否为IP地址 10 mac2=mac 11 elif("-" not in mac): #判断格式 123456789abc 12 mac1=mac[0:4]+"-"+mac[4:8]+"-"+mac[8:] 13 mac2 = str(mac1).lower() 14 elif mac.startswith('-', 2, 3): #判断格式 12-34-56-78-9a-bc 15 mac1=mac[0:2]+mac[3:6]+mac[6:8]+mac[9:13]+mac[13:14]+mac[15:] 16 mac2 = str(mac1).lower() 17 else: #判断格式 其它 18 mac2 = str(mac).lower() 19 20 command='display arp | include '+mac2 #组合查询命令 21 huawei = { 22 'device_type':'huawei', 23 'host':'1.1.1.1', #交换机ip 24 'username':'123', #ssh账号 25 'password':'345' #ssh密码 26 } 27 28 ssh_connect = ConnectHandler(**huawei) #创建ssh连接 29 #Python中,(*)会把接收到的参数形成一个元组,而(**)则会把接收到的参数存入一个字典 30 #等同于: 31 #net_connect = ConnectHandler(device_type='huawei',host='IP地址',username='用户名',password='密码') 32 33 current_view = ssh_connect.find_prompt() #找到目前所在视图 34 print(current_view) 35 output = ssh_connect.send_command(command) #执行命令,返回结果为字符串,赋值给output 36 print(output) 37 ssh_connect. disconnect() #关闭ssh
***********记得安装netmiko模块(cmd下执行):pip install netmiko
"""
Netmiko常用方法介绍
a.send_command_timing()
基于延迟机制执行command命令, 常用于查询场景, 与send_command()方法不同之处在于该方法时在循环次数达到最大值自动退出, 而send_command()方法则必须匹配到指定的退出标识, 否则抛出异常。
b.send_config_set()
该方法可以同时执行多条命令, 同时会把执行的过程进行返回,一般会用在配置下发场景,该方法会自动进入设备配置模式不需要额外传入进入配置模式的命令。
c.send_config_from_file()
该方法可以从文件中加载配置命令进行配置下发
d.write_channel()
该方法是将命令字符串写入SSH会话通道中
e.read_channel()
该方法是从SSH会话通道中读取设备的响应数据
f.disconnect()
该方法是关闭SSH会话
"""
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。