• H3C交换机通过tftp自动备份配置


    二、TFTP+H3C

    TFTP(Trivial File Transfer Protocol)是一种简单的文件传输协议,通常用于在计算机网络中传输小文件,如配置文件、固件和其他小型数据文件。TFTP被设计成一种轻量级的协议,因此相对于其他文件传输协议(如FTP)而言,功能较少但更易于实现。

    安装tftp

    关闭防火墙

    systemctl stop firewalld && systemctl disable firewalld
    
    • 1

    关闭selinux

    sed -i 's/enforcing/disabled/' /etc/selinux/config && setenforce 0
    
    • 1

    通过yum安装tftp服务器

    yum -y install xinetd tftp tftp-server
    
    • 1

    安装了expect软件包,用于自动化交互式的命令行会话

    yum -y install expect
    
    • 1

    创建TFTP主目录

    mkdir -p /data/tftpboot
    
    • 1

    修改主目录权限

    chmod 777 /data/tftpboot
    
    • 1

    修改tftp主配置文件

    vi /etc/xinetd.d/tftp    
    
    • 1

    修改后的配置文件如下

    service tftp
    {
            socket_type             = dgram
            protocol                = udp
            wait                    = yes
            user                    = root
            server                  = /usr/sbin/in.tftpd
            server_args             = -s /data/tftpboot -c    
            disable                 = no
            per_source              = 11
            cps                     = 100 2
            flags                   = IPv4
    }
    
    
    server_args        = -s /data/tftpboot -c    # 注意这行,如果允许上传,一定要加上参数 -c
    disable            = no                #这行默认为yes,改成no,允许
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    启动tftp服务并设置开机自启

    systemctl start xinetd.service && systemctl enable xinetd.service
    
    
    #查看tftp是否启动
    netstat -ntlup |grep 69                 
    netstat -a |grep tftp
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    如果有启动iptables,需要放行端口

    iptables -A INPUT -p udp --dprot 69 -j ACCEPT
    
    • 1

    交换机备份

    <1>手动备份
    登录交换机,执行命令:tftp 172.16.0.10 put startup.cfg 192.168.100.1.cfg

    tftp 172.16.0.10 put startup.cfg 192.168.100.1.cfg
    
    • 1

    <2>脚本自动备份

    创建脚本文件

    mkdir -p /usr/local/src/srcipts
    cd /usr/local/src/srcipts
    vi  sw2_back.sh
    
    • 1
    • 2
    • 3

    复制粘贴以下脚本:

    #!/bin/bash
    
    # 交换机列表,每个元素格式为 "交换机IP"
    switches=(
            "192.168.100.1"
            "192.168.100.2"
            "192.168.100.3"
            "192.168.100.5"
            "192.168.100.10"
            "192.168.100.11"
            "192.168.100.12"
            "192.168.100.13"
            "192.168.100.14"
            "192.168.100.15"
            "192.168.100.16"
            "192.168.100.20"
            "192.168.100.21"
            "192.168.100.22"
            "192.168.100.23"
            "192.168.100.24"
            "192.168.100.25"
            "192.168.100.26"
            "192.168.100.27"
            "192.168.100.28"
            "192.168.100.30"
            "192.168.100.31"
            "192.168.100.40"
            "192.168.100.41"
            "192.168.100.50"
            "192.168.100.51"
            "192.168.100.52"
            "192.168.100.60"
            "192.168.100.63"
            "192.168.100.64"
            "192.168.100.65"
            "192.168.100.66"
        # 可以继续添加更多交换机
    )
    
    # TFTP服务器的信息
    tftp_server="172.16.0.10"
    backup_directory="/data/tftpboot"
    
    # 账号密码
    username="交换机ssh登录账户"
    password="登录密码"
    
    for switch_ip in "${switches[@]}"; do
        backup_filename="${switch_ip}.cfg"
    
        expect << EOF
        spawn ssh $username@$switch_ip
        expect {
            "Are you sure you want to continue connecting (yes/no)?" { send "yes\r"; exp_continue }
            "password:" { send "$password\r" }
        }
        expect "#"
        send "tftp $tftp_server put startup.cfg $backup_filename\r"
        expect {
            "100%" { exp_continue }
            "#" { send "quit\r" }
        }
        expect eof
    EOF
        # 检查备份是否成功
    #    tftp_status=$(tftp $tftp_server -c get $backup_filename $backup_directory/$backup_filename 2>&1)
    #    if [ $? -eq 0 ]; then
    #        echo "交换机 $switch_ip 备份成功"
    #    else
    #        echo "交换机 $switch_ip 备份失败: $tftp_status"
    #    fi
    done
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72

    脚本赋权

    chmod +x sw2_back.sh
    
    • 1

    手动执行脚本

    sh  sw2_back.sh
    
    • 1

    查看执行情况:
    ll /data/tftpboot/

    在这里插入图片描述
    查看172.16.0.10的备份日志
    cat /data/log/h3c/switch_log | grep 172.16.0.10
    在这里插入图片描述

    定时备份,使用Crontab 表达式做定时执行脚本
    在这里插入图片描述

    编辑cron表

    crontab -e
    
    • 1

    打开文本编辑器,添加定时任务:
    每周五凌晨1点定时执行脚本

    0 1 * * 5 sh /usr/local/src/srcipts/sw2_back.sh > /dev/null 2>&1
    
    • 1
  • 相关阅读:
    超全!Python图形界面框架PyQt5使用指南!
    面试官:这就是你理解的Java多线程基础?
    ELK 处理 Spring Boot 日志
    深入淺出 Apache Maven 的 Plugins 外掛機制
    JAVA实现用户登录错误N次后,账户暂时锁定
    向量数据库入坑指南:聊聊来自元宇宙大厂 Meta 的相似度检索技术 Faiss
    django请求生命周期流程图,路由匹配,路由有名无名反向解析,路由分发,名称空间
    Spring——三级缓存
    思维模型 奶嘴乐理论
    零基础如何学习c语言
  • 原文地址:https://blog.csdn.net/qq_39689711/article/details/134278886