shell脚本自动化备份网络设备配置教程

由于局域网内存在多台网络设备,如防火墙、路由器、交换机等,数量众多,且品牌不同,手工备份配置需要相当长的时间,现需要实现自动化导出备份配置。

经查询,该局域网内存在华为及阿尔卡特两种品牌,均支待TFTP方式导出配置文件。

评估后,利用内网已存在的LINUX服务器,搭建TFTP服务及配合expect交互软件,配合计划任务crontab实现批量采集设备配置文件。

前提条件:linux服务器与网络设备之间可以正常通信

步骤:

1.安装tftp服务器,配置TFTP目录及上传权限

2.安装expect,编写脚本

3.脚本加入计划任务执行

Debian最小化系统安装过程参考之前的教程。

一、安装TFTP服务

1.安装TFTP包

bash 复制代码
apt install -y tftp-hpa tftpd-hpa

2.修改配置文件

bash 复制代码
nano /etc/default/tftpd-hpa

3.创建TFTP目录

bash 复制代码
mkdir -p /switch_config_bak && chmod 777 /switch_config_bak

4.重启服务

bash 复制代码
systemctl restart tftpd-hpa.service

二.安装交互工具expect

bash 复制代码
apt install expect -y


三、了解华为及阿尔卡特网络设备TFTP备份配置方法

网络设备登录方法略过

华为

bash 复制代码
TFTP [服务器IP] [PUT/GET] 本机配置文件 保存的文件名
例:tftp 10.8.205.161 put vrpcfg.zip huawei_20231130.zip

AIcatel

bash 复制代码
复制 [配置文件]  tftp://[服务器IP]/保存的文件名
例:copy startup-config tftp://10.8.205.161/aicatel_20231130.cfg

四、脚本编写

自动批量配置备份及导出脚本思路:

新建iplist列表,将网络设备IP与命名描述填写进去,使用循环结构读取该列表及描述名,使用条件判断结构对IP列表进行PING检测,PING失败的记录日志,PING正常的使用expect交互工具,使用统一账号密码,telnet登录网络设备,由于存在两种品牌设备,使用指令不同,使用条件判断不同设备使用不同指令,最终实现网络设备全自动备份及导出配置文件。

注意执行过程中存在设备执行命令延迟时间控制。

脚本代码如下:

bash 复制代码
#!/bin/bash
cat iplist | while read line
do
_ipadd=`echo ${line} | awk '{print $1}'`
_desc=`echo ${line} | awk '{print $2}'`
_date=`date +"%Y-%m-%d-%H%M"`
_datelog=`date +"%Y-%m-%d"`
_tftp="10.9.101.5"
_user="admin"
_oldpass="Admin@123456"
_newpass="Admin@654321"

ping=`ping -c 1 $_ipadd | grep loss | awk '{print $(NF-4)}' | awk -F % '{print $1}'`

  if [ $ping -eq 100 ];then
      echo Fail ping $_ipadd >> ${_datelog}_result.log
   else

/usr/bin/expect <<EOF
set  time 10

sleep 2
spawn /usr/bin/telnet $_ipadd
sleep 1
send "$_user\r"
sleep 1
send "$_oldpass\r"
sleep 1
expect {
        "*#" {
                send "copy running-config startup-config\r"
                send "y\r"
                sleep 5
                send "copy startup-config tftp://$_tftp/${_desc}_${_ipadd}_${_date}.cfg\r"
                sleep 2
                send "exit\r"
        } "*>" {
                send "save\r"
                send "y\r"
                sleep 12
                send "tftp $_tftp put vrpcfg.zip ${_desc}_${_ipadd}_${_date}.zip\r"
                sleep 2
                send "quit\r"
        }
}
expect eof
EOF

pingtest=`ping -c 1 $_ipadd | grep ttl | awk '{print $(NF-1)}'` >> ${_datelog}_result.log
      echo  ping $_ipadd $pingtest >> ${_datelog}_result.log
   fi
done

脚本变量解释如图

五、iplist格式要求

创建iplist

bash 复制代码
nano iplist

格式要求,按行书写,TAB键分隔

设备IP 描述名

bash 复制代码
192.168.1.2	router
192.168.1.3	switch1
192.168.1.4	switch2

iplist格式如图所示

六、脚本的执行

最开始搭建了TFTP服务器,并配置TFTP上传目录为

bash 复制代码
/switch_config_bak

将编写好的脚本及iplist放在该目录下,赋予脚本执行权限

bash 复制代码
chmod 777 脚本名

执行脚本

bash 复制代码
sh 脚本名


七、自动修改脚本衍生(批量修改网络设备密码)

同理,仅需将条件判断部分代码修改

八、计划任务的编写

bash 复制代码
crontab --e

05 03 15 1,4,7,9 *  bash -l /switch_config_bak/swbak.sh >/dev/null 2>&1 &

至此利用脚本批量备份网络设备配置教程结束!你学会了吗?

相关推荐
qing2222222211 分钟前
Ubuntu设置程序开机自启动:基于.service文件实现
linux·运维·ubuntu
遇见火星35 分钟前
CentOS 7 停更后如何配置 YUM 源?(Vault、EPEL、第三方镜像完整指南)
linux·运维·centos
码农阿豪44 分钟前
金仓KES vs. 达梦DM:全面对比解析迁移、运维与授权成本
运维·数据库·国产
BS_Li1 小时前
【Linux系统编程】进程概念(三)进程状态
linux·运维·服务器
ejinxian1 小时前
Linux 虚拟化技术 KVM/ESXI/Docker
linux·运维·docker·qemu·openvz
黑金IT1 小时前
Appium和Detox,哪一种更好的为手机自动化
智能手机·appium·自动化
z202305082 小时前
linux之arm SMMUv3 故障和错误(4)
linux·运维·arm开发
是孑然呀2 小时前
【钉钉多元表格(自动化)】钉钉群根据表格 自动推送当天值日生信息
运维·自动化·钉钉
逐风&者2 小时前
CentsOS 7 “Could not resolve host: mirrorlist.centos.org; 未知的错误”问题解决
linux·运维·centos
VXHAruanjian8882 小时前
影刀RPA实时监控抖店DSR评分,AI预警异常波动,店铺权重稳如泰山![特殊字符]
自动化·微信小店·视频号·rpa9998·自动化电商·自动化流程机器人·自动化机器人