微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python脚本:使用Netmiko,在交换机上通过MAC查IP或者通过IP查MAC

 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 举报,一经查实,本站将立刻删除。

相关推荐