首页 > 其他分享 >定时自动备份【新增飞塔防火墙】

定时自动备份【新增飞塔防火墙】

时间:2022-12-28 09:34:49浏览次数:54  
标签:devicename Network Backup 备份 飞塔 防火墙 echo home Config

新增飞塔防火墙支持命令行导出配置随即新增两个脚本做测试(testforti,user1.passwd),同理之前的脚本

DEVICENAME=(`cat /home/Network_Config_Backup/user1.passwd | awk '{print $1}'`)
BACKUP_DATA=`date +%Y%m%d`
devicename=${DEVICENAME}
IPADDR=(`cat /home/Network_Config_Backup/user1.passwd | grep "$devicename" | awk '{print $3}'`)
echo ${IPADDR}
USERNAME=(`cat /home/Network_Config_Backup/user1.passwd | grep "$devicename" | awk '{print $4}'`)
echo ${USERNAME}
PASSWORD=(`cat /home/Network_Config_Backup/user1.passwd | grep "$devicename" | awk '{print $5}'`)
echo ${PASSWORD}
TABLE=(`cat /home/Network_Config_Backup/user1.passwd | grep "$devicename" | awk '{print $2}'`)
echo ${TABLE}

devicename=${devicename}_${BACKUP_DATA}
if [ $TABLE = Forti ]
then
/usr/bin/expect >> /dev/null << EOF
set timeout 100
        log_file /data2/SW/$devicename
        spawn ssh ${USERNAME}@$IPADDR
        expect "*assword:"
        send "$PASSWORD\r"
        expect "*#"
        send "show\r"
        while (1) {
        expect {
        "*--More--" { send " " }
        "config router multicast" { break }
        }
        }
EOF
fi
sleep 3

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

在以往的配置导出时发现飞塔配置的结尾为end但在配置中间还有N多个end,为防止混淆修改了判断以配置倒数第二行的(config router multicast)来判断,

在结果判断处新增判断(grep -E "^end$|^return$|config router multicast" /data2/SW/$devicename)。

在测试成功之后将测试的配置新增至之前的脚本中,做开始将新增的配置放置到Cisco和Huawei的下面去执行,但是在执行中最后会出现奇怪的地方,脚本识别了设备的种类,用户名地址和密码,但是在抓取命令的时候却是执行的华为的命令,经过排查也并未解决,随机我将华为和飞塔的脚本位置调换再去执行则完全成功,以下是完整的执行脚本。

#!/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

log=/data/log/start_${BACKUP_DATA}.log
#修改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
systemctl restart xinetd
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}'`)
echo ${IPADDR}
USERNAME=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $4}'`)
echo ${USERNAME}
PASSWORD=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $5}'`)
echo ${PASSWORD}
TABLE=(`cat /home/Network_Config_Backup/user.passwd | grep "$devicename" | awk '{print $2}'`)
echo ${TABLE}
devicename=${devicename}_${BACKUP_DATA}
if [ $TABLE = Cisco ]
then
/usr/bin/expect >> /home/Network_Config_Backup/$BACKUP_DATA/log  << 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 "10.20.5.5\r"
                expect "*filename*"
                send "$devicename\n"
                expect "*!*"
                send "\n"
        }
        "*#" {
                send "copy running-config tftp:\r"
                expect "*remote host*"
                send "10.20.5.5\r"
                expect "*filename*"
                send "$devicename\n"
                expect "*!*"
                send "\n"
        }
}
EOF
elif [ $TABLE = Forti ]
then
/usr/bin/expect >> /dev/null << EOF
set timeout 100
        log_file /data2/SW/$devicename
        spawn ssh ${USERNAME}@$IPADDR
        expect "*assword:"
        send "$PASSWORD\r"
        expect "*FLC-DFDC-OT-FW01 #"
        send "show\r"
        while (1) {
        expect {
        "*--More--" { send " " }
        "config router multicast" { break }
        }
        }
EOF
elif [ $TABLE = Huawei -o H3C ]
then
/usr/bin/expect >> /dev/null << EOF
set timeout 100
        log_file /data2/SW/$devicename
        spawn ssh ${USERNAME}@$IPADDR
        expect "*assword:"
        send "$PASSWORD\r"
        expect "*>"
        send "system-view\r"
        expect "*Z."
        send "user-interface vty 0 4\r"
        send "screen-length 0\r"
        send "display current-configuration\r"
        while (1) {
        expect {
        "*--- More ----" { send " " }
        "return" { break }
        }
        }
EOF
fi
sleep 3

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

done

 

标签:devicename,Network,Backup,备份,飞塔,防火墙,echo,home,Config
From: https://www.cnblogs.com/ctdd/p/17009427.html

相关文章

  • Mysql数据库备份工具xtrabackup
    安装xtrabackup工具包几个percona官方yum源http://repo.percona.com/centos/https://www.percona.com/downloads/percona-release/下载yum源https://www.percona.......
  • 有备无患!DBS高性价比方案助力富途证券备份上云
    “某中心受病毒攻击,导致服务中断,线上业务被迫暂停”“某公司员工误操作删库,核心业务数据部分丢失,无法完全找回”“由于服务器断线,某医院信息系统瘫痪近4小时,期间病人无法......
  • Linux设置每晚定时备份Oracle数据表
    先新建目录该路径:/home/oracle/backup该名称:DATA_PATHshell脚本exportORACLE_BASE=/home/oracle/appexportORACLE_HOME=$ORACLE_BASE/oracle/product/11.2.0/dbhome......
  • kylin V10 关闭防火墙
    关闭、开启防火墙方法:永久关闭:serviceufwdisable临时关闭:serviceufwstop永久启动:sudoserviceufwenable临时启动:sudoserviceufwstart具体参数可能会有出入,可......
  • Linux安装防火墙
    在虚拟机上装的centos7是最小安装方式,所以许多东西都没装,需要自己手动安装。想通过防火墙来开放3306端口,但是通过vi/etc/sysconfig/iptables发现文件不存在,网上说是没有......
  • 深信服防火墙重启后ping不通问题
    经测试,深信服在防火墙重启后会发生部分交换机及下联的服务器ping不通防火墙管理地址的情况。这个问题是因为网关交换机上关于防火墙管理地址的arp未更新导致的。华为交换......
  • Linux防火墙软件 IPtables详解
    注:搬运自微信公众号:马哥Linux运维原作者:Se7en的架构笔记(版权归原作者所有,侵删)连接跟踪(conntrack)连接跟踪是许多网络应用的基础。例如,KubernetesService、ServiceMes......
  • SQL Server——备份与恢复数据库
    为什么要进行备份?不管是任何系统都不可避免的发生一些故障、错误,而为了防止数据丢失找不到的情况,防患于未然,养成备份的好习惯是很有必要的。可以根据自己的实际情况采取具体......
  • mongodb定时备份
    1、https://www.jianshu.com/p/a9352e28e2d6  (未测试)通过centos脚步来执行备份操作,使用crontab实现定时功能,并删除指定天数前的备份具体操作:1、创建Mongodb数据......
  • Echosync 一款非常优秀的文件夹同步和备份软件
    Echosync一款优秀的文件夹同步和备份软件通过执行差异数据备份、文件同步,这样可以避免传递自上次备份以来所做的更改,Echosync能够检测到移动或重命名自上次备份的文件。......