centos7自动化备份华为思科交换机配置

1、安装tftp-server、 xinetd、expect

yum install tftp-server xinetd expect
systemctl restart xinetd.service
chkconfig tftp on
chkconfig xinetd on
service xinetd start

2.创建脚本文件

mkdir /home/Network_Config_Backup
cat >>/home/Network_Config_Backup/start.sh<<END
#!/bin/bash
#使用该脚本前需要安装tftp,xinetd,expect
#取时间戳
BACKUP_DATA=`date +%Y%m%d`
#创建时间戳的备份目录
mkdir -p /home/Network_Config_Backup/$BACKUP_DATA

#TFTP服务根目录授权
chmod 777 /home/Network_Config_Backup/$BACKUP_DATA

#修改TFTP根目录
sed -i "s/Network_Config_Backup\/......../Network_Config_Backup\/$BACKUP_DATA/" /etc/xinetd.d/tftp
echo
echo
echo
echo ------------------------------------------------------------
echo 
echo          该脚本适用于Cisco、Huawei、H3C 网络设备使用 
echo          Cisco使用tftp方式将配置文件上传到服务器 
echo          Huawei、H3C使用窗口记录方式获取配置信息 
echo 
echo ------------------------------------------------------------
echo
echo 备份文件存放位置: /home/Network_Config_Backup/$BACKUP_DATA
echo
echo
echo
service xinetd restart
sleep 4

#账号密码及IP地址存放在user.passwd中,通过awk获取所有IP并存放在数组IPADDR(大写)
DEVICENAME=(`cat /home/Network_Config_Backup/user.passwd | awk '{print $1}'`)

#for循环,取出所有设备名称devicename(小写)
for devicename in ${DEVICENAME[@]} 
do
#输出备份开始时间戳
echo "`date +%H:%M:%S` 开始备份$devicename"

#根据设备名称devicename取出相应交换机的IP地址、用户、密码
IPADDR=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $3}'`)
USERNAME=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $4}'`)
PASSWORD=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $5}'`)
TABLE=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $2}'`)

if [ $TABLE = Cisco ]
then
/usr/bin/expect >> /dev/null << EOF
        set timeout 10
        spawn telnet $IPADDR
        expect "*sername:"
        send "$USERNAME\r"
        expect "*assword:"
        send "$PASSWORD\r"
        expect {
        "*>" {
                send "enable\r"
                expect "*assword:"
                send "$PASSWORD\r"
                expect "*#"
                send "copy running-config tftp:\r"
                expect "*remote host*"
                send "192.168.*.*\r"
                #此处为ftp的服务地址
                expect "*filename*"
                send "$devicename\n"
                expect "*!*"
                send "\n"
        }
        "*#" {
                send "copy running-config tftp:\r"
                expect "*remote host*"
                send "192.168.48.250\r"
                expect "*filename*"
                send "$devicename\n"
                expect "*!*"
                send "\n"
        }
}
EOF
elif [ $TABLE = Huawei -o H3C ]
then
/usr/bin/expect >> /dev/null << EOF
set timeout 10
        log_file /home/Network_Config_Backup/$BACKUP_DATA/$devicename
        spawn telnet $IPADDR
        expect "*ogin:"
        send "$USERNAME\r"
        expect "*assword:"
        send "$PASSWORD\r"
        expect "*>"
        send "display current-configuration\r"
        while (1) {
        expect {
        "*--- More ----" { send " " }
        "return" { break }
        }
        }
EOF
fi
sleep 3

#判断备份目录中是否存在$devicename,如果存在则检查文件内是否存在字符串end或者return。如果文件不存在视为备份失败,如果不存在end或者return视为备份失败
if [ -f "/home/Network_Config_Backup/$BACKUP_DATA/$devicename" ];then
        grep -E "^end$|^return$" /home/Network_Config_Backup/$BACKUP_DATA/$devicename
        if [ $? -eq 0 ];then
                echo "$devicename $IPADDR 备份成功"
                echo "$devicename $IPADDR 备份成功" >> /home/Network_Config_Backup/$BACKUP_DATA/log
                echo "-------------------------------"
        else
                echo "$devicename $IPADDR 备份失败"
                echo "$devicename $IPADDR 备份失败" >> /home/Network_Config_Backup/$BACKUP_DATA/log
                echo "-------------------------------"
        fi
else
        echo "$devicename $IPADDR 备份失败"
        echo "$devicename $IPADDR 备份失败" >> /home/Network_Config_Backup/$BACKUP_DATA/log
        echo "-------------------------------"
fi

done
END

3.添加交换机信息文件

cat >>/home/Network_Config_Backup/user.passwd<<END
*设备名 品牌 IP地址 用户名 密码*
sw1 Cisco 192.168.4.1 user password
END

4.修改tftp储存目录

[root@localhost Network_Config_Backup]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /home/Network_Config_Backup/20221016 -c
                                #-c允许该文件下创建文件
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
service xinetd start

5.运行脚本

bash /home/Network_Config_Backup/start.sh
#/home/Network_Config_Backup/ 下查看备份文件

参考至:https://blog.csdn.net/fsk2684/article/details/86757040

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值