Python netmiko库实现huawei/h3c网络设备配置



 Python版本3.9.12 
一、netmiko 4.1.0版本安装 
进入CMD,输入下记命令进行安装 
pip install  netmiko==4.1.0

查看pip安装的组件列表命令 
pip list

二、自动化备份代码讲解 
1.目录结构 
net_config_backup:log备份存放文件夹 devlist.txt:SSH登录设备信息 
格式:
设备名称,设备型号,IP,用户名,密码
12 
ssh.py:python代码

 
2.完整代码详解 
from netmiko import ConnectHandler
import time
import os
import shutil
#python 3.9.12
#netmiko 4.1.0


#定义全局变量
today = time.strftime( "%Y-%m-%d", time.localtime())    #获取本地时间
on_hit=False
dis_config = 'dis cur'
show_config = 'show run'
file_path = 'D:/Auto_SSH_Backup/'
back_path = 'D:/Auto_SSH_Backup/net_config_backup/'

def ssh_session(devlist): ##定义备份函数


 
    
    if devtype == 'hp_comware':     #H3C设备
        net_connect = ConnectHandler(
            device_type=devtype,
            ip=ip,
            username=name,
            password=devpasswd,
        )

    
    if devtype == 'huawei':     #华为设备
        net_connect = ConnectHandler(
            device_type=devtype,
            ip=ip,
            username=name,
            password=devpasswd,
        )
   

    if devtype == 'cisco_ios':      #思科浪潮设备
        net_connect = ConnectHandler(
            device_type=devtype,
            ip=ip,
            username=name,
            password=devpasswd,
        )
   

# The keys of this dictionary are the supported device_types
CLASS_MAPPER_BASE = {
    "a10": A10SSH,
    "accedian": AccedianSSH,
    "adtran_os": AdtranOSSSH,
    "alcatel_aos": AlcatelAosSSH,
    "alcatel_sros": NokiaSrosSSH,
    "allied_telesis_awplus": AlliedTelesisAwplusSSH,
    "apresia_aeos": ApresiaAeosSSH,
    "arista_eos": AristaSSH,
    "aruba_os": ArubaSSH,
    "aruba_osswitch": HPProcurveSSH,
    "aruba_procurve": HPProcurveSSH,
    "avaya_ers": ExtremeErsSSH,
    "avaya_vsp": ExtremeVspSSH,
    "broadcom_icos": BroadcomIcosSSH,
    "brocade_fos": BrocadeFOSSSH,
    "brocade_fastiron": RuckusFastironSSH,
    "brocade_netiron": ExtremeNetironSSH,
    "brocade_nos": ExtremeNosSSH,
    "brocade_vdx": ExtremeNosSSH,
    "brocade_vyos": VyOSSSH,
    "checkpoint_gaia": CheckPointGaiaSSH,
    "calix_b6": CalixB6SSH,
    "cdot_cros": CdotCrosSSH,
    "centec_os": CentecOSSSH,
    "ciena_saos": CienaSaosSSH,
    "cisco_asa": CiscoAsaSSH,
    "cisco_ftd": CiscoFtdSSH,
    "cisco_ios": CiscoIosSSH,
    "cisco_nxos": CiscoNxosSSH,
    "cisco_s300": CiscoS300SSH,
    "cisco_tp": CiscoTpTcCeSSH,
    "cisco_viptela": CiscoViptelaSSH,
    "cisco_wlc": CiscoWlcSSH,
    "cisco_xe": CiscoIosSSH,
    "cisco_xr": CiscoXrSSH,
    "cloudgenix_ion": CloudGenixIonSSH,
    "coriant": CoriantSSH,
    "dell_dnos9": DellForce10SSH,
    "dell_force10": DellForce10SSH,
    "dell_os6": DellDNOS6SSH,
    "dell_os9": DellForce10SSH,
    "dell_os10": DellOS10SSH,
    "dell_sonic": DellSonicSSH,
    "dell_powerconnect": DellPowerConnectSSH,
    "dell_isilon": DellIsilonSSH,
    "dlink_ds": DlinkDSSSH,
    "endace": EndaceSSH,
    "eltex": EltexSSH,
    "eltex_esr": EltexEsrSSH,
    "enterasys": EnterasysSSH,
    "ericsson_ipos": EricssonIposSSH,
    "extreme": ExtremeExosSSH,
    "extreme_ers": ExtremeErsSSH,
    "extreme_exos": ExtremeExosSSH,
    "extreme_netiron": ExtremeNetironSSH,
    "extreme_nos": ExtremeNosSSH,
    "extreme_slx": ExtremeSlxSSH,
    "extreme_tierra": ExtremeTierraSSH,
    "extreme_vdx": ExtremeNosSSH,
    "extreme_vsp": ExtremeVspSSH,
    "extreme_wing": ExtremeWingSSH,
    "f5_ltm": F5TmshSSH,
    "f5_tmsh": F5TmshSSH,
    "f5_linux": F5LinuxSSH,
    "flexvnf": FlexvnfSSH,
    "fortinet": FortinetSSH,
    "generic": GenericSSH,
    "generic_termserver": TerminalServerSSH,
    "hp_comware": HPComwareSSH,
    "hp_procurve": HPProcurveSSH,
    "huawei": HuaweiSSH,
    "huawei_smartax": HuaweiSmartAXSSH,
    "huawei_olt": HuaweiSmartAXSSH,
    "huawei_vrpv8": HuaweiVrpv8SSH,
    "ipinfusion_ocnos": IpInfusionOcNOSSSH,
    "juniper": JuniperSSH,
    "juniper_junos": JuniperSSH,
    "juniper_screenos": JuniperScreenOsSSH,
    "keymile": KeymileSSH,
    "keymile_nos": KeymileNOSSSH,
    "linux": LinuxSSH,
    "mikrotik_routeros": MikrotikRouterOsSSH,
    "mikrotik_switchos": MikrotikSwitchOsSSH,
    "mellanox": MellanoxMlnxosSSH,
    "mellanox_mlnxos": MellanoxMlnxosSSH,
    "mrv_lx": MrvLxSSH,
    "mrv_optiswitch": MrvOptiswitchSSH,
    "netapp_cdot": NetAppcDotSSH,
    "netgear_prosafe": NetgearProSafeSSH,
    "netscaler": NetscalerSSH,
    "nokia_sros": NokiaSrosSSH,
    "oneaccess_oneos": OneaccessOneOSSSH,
    "ovs_linux": OvsLinuxSSH,
    "paloalto_panos": PaloAltoPanosSSH,
    "pluribus": PluribusSSH,
    "quanta_mesh": QuantaMeshSSH,
    "rad_etx": RadETXSSH,
    "raisecom_roap": RaisecomRoapSSH,
    "ruckus_fastiron": RuckusFastironSSH,
    "ruijie_os": RuijieOSSSH,
    "sixwind_os": SixwindOSSSH,
    "sophos_sfos": SophosSfosSSH,
    "supermicro_smis": SmciSwitchSmisSSH,
    "tplink_jetstream": TPLinkJetStreamSSH,
    "ubiquiti_edge": UbiquitiEdgeSSH,
    "ubiquiti_edgerouter": UbiquitiEdgeRouterSSH,
    "ubiquiti_edgeswitch": UbiquitiEdgeSSH,
    "ubiquiti_unifiswitch": UbiquitiUnifiSwitchSSH,
    "vyatta_vyos": VyOSSSH,
    "vyos": VyOSSSH,
    "watchguard_fireware": WatchguardFirewareSSH,
    "zte_zxros": ZteZxrosSSH,
    "yamaha": YamahaSSH,
    "zyxel_os": ZyxelSSH,
}

————————————————
版权声明:本文为CSDN博主「lishengdong_1995」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lishengdong_1995/article/details/124745923

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要批量备份华为、H3C交换机配置,可以使用 Python 的 Paramiko 模块来实现。以下是实现步骤: 1. 安装 Paramiko 模块 可以使用 pip 安装 Paramiko 模块:`pip install paramiko` 2. 编写 Python 脚本 ```python import paramiko # 定义交换机信息 switches = [ {'hostname': '192.168.1.1', 'username': 'admin', 'password': '123456', 'brand': 'huawei'}, {'hostname': '192.168.1.2', 'username': 'admin', 'password': '123456', 'brand': 'h3c'} ] # 遍历交换机列表 for switch in switches: # 连接交换机 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect(switch['hostname'], username=switch['username'], password=switch['password']) # 根据品牌执行备份命令 if switch['brand'] == 'huawei': # 华为交换机备份命令 command = 'save configuration to tftp 192.168.1.3 VR-Mgmt-all-backup.cfg' elif switch['brand'] == 'h3c': # H3C交换机备份命令 command = 'backup startup-configuration to 192.168.1.3' # 执行备份命令 stdin, stdout, stderr = ssh.exec_command(command) # 输出备份结果 print(f"{switch['hostname']} backup {'successful' if not stderr.read() else 'failed'}") # 关闭连接 ssh.close() ``` 以上代码中,我们定义了一个 `switches` 列表,其中包含了多个交换机的信息,包括主机名、用户名、密码和品牌。然后遍历列表,根据品牌执行相应的备份命令,并输出备份结果。最后关闭连接。 在华为交换机备份命令中,我们使用了 `save configuration to tftp` 命令将配置备份到 TFTP 服务器上,需要提前在 TFTP 服务器上安装和配置 TFTP 服务。在 H3C交换机备份命令中,我们使用了 `backup startup-configuration to` 命令将配置备份到指定地址上。 注意:在执行 SSH 连接时,需要确认 SSH 服务已经启动,并且需要在防火墙中允许 SSH 服务通过。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值