随笔 - 4  文章 - 0  评论 - 0  阅读 - 1025

定时自动备份【脚本】

建立执行脚本

vi /home/Network_Config_Backup/start.sh

复制代码
#!/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 "tftp服务器IP\r"
        expect "*filename*"
        send "$devicename\n"
        expect "*!*"
        send "\n"
    }
    "*#" {
        send "copy running-config tftp:\r"
        expect "*remote host*"
        send "tftp服务器IP\r"
expect "*filename*" send "$devicename\n" expect "*!*" send "\n" } } 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 "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$" /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 备份失败" 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
复制代码

 

chmod 777 /home/Network_Config_Backup/start.sh
新建user.passwd存放设备信息

vi /home/Network_Config_Backup/user.passwd
*设备名 品牌 IP地址 用户名 密码*

user.passwd()格式

Huawei-TEST-SW01 Huawei 192.168.1.55 admin admin12345

Cisco-TEST-SW01 Cisco 192.168.1.66 admin admin12345

 

 

 

cd /home/Network_Config_Backup

sh start.sh //执行脚本即可自动备份

修改tftp文件储存位置

复制代码
vi /etc/xinetd.d/tftp 
service tftp
{     socket_type            = dgram
      protocol               = udp
      wait                   = yes
      user                   = root
      server                 = /usr/sbin/in.tftpd
      server_args            = -s /data2/SW -c
      disable                = no
      per_source             = 11
      cps                    = 100 2
      flags                  = IPv4
}
复制代码

以上出自Cisco、华为、H3C交换机配置文件自动备份_fsk2684的博客-CSDN博客

注意

我在完成并执行定时脚本的时候日志中出现备份失败错误,查看日志发现华为的备份报错,原因是华为第一次通过ssh链接的时候会询问是否进行链接,我三次输入密码都不能进去(密码百分百正确)

解决方式是先执行以下命令,待第一次进入后下次脚本中就不会报以下错误可直接进入到输入密码步骤。

ssh admin@192.168.1.66

 

 

由于环境不同可更改部分内容例如存储位置

 

远程连接方式【telnet,ssh】

 

 

posted on   苍天当道  阅读(455)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

点击右上角即可分享
微信分享提示