用Linux服务器实现每天定时自动备份交换机配置文件

原文链接
http://blog.51cto.com/hatakexiu/1762996
参考
http://blog.csdn.net/zhuying_linux/article/details/6902135

作为一名网络运维工程师,如果管理的路由、交换设备比较多的话,那么你是否也会跟我一样遇到这样的问题:设备配置经常调整,尤其是接入层交换机,万一哪天忘了保存配置,而第二天就发生了交换机掉电重启,你却又忘记了以前的配置,导致了网络恢复配置时间很长。
当你遇到这样的问题或者烦恼时,你是否也会去想:如果有一种方法,可以让交换机每天自动保存一下配置该多好。你进一步去考虑,如果交换机能每天不但能自己保存配置,还能把配置上传到服务器上一份,那该多好啊。

你认真看以下内容,或许对你有些启发。

在智能化高度发达的今天,很多交换机已经能够执行每天自动保存配置的功能了。下面以华为来举例。[switch]set save-configuration backup-to-server server 192.168.1.1 transport-type ftp user admin password admin123 path /configbck
//set save-configuration 备份到服务器 服务器IP是192.168.1.1,备份方式是FTP,用户名是admin密码是admin123备份路径为/configbck//
[switch]set save-configuration delay 5 //5分钟后执行自动保存配置//
[switch]set save-configuration internal 43200 //每隔12小时循环一次//
[switch]dis saved-configuration time //能够看到之前保存配置的方式//
下图是我在FTP服务器上看到的自动保存的配置文件
wKioL1cMmeWwrjidAAAgSrF0zQg090.png
但是,交换机自动执行,并不是所有版本都支持的,也不是所有品牌都支持的,如果低版本不支持,是可以通过升级交换机的系统版本来实现的,但升级交换机系统,是需要断网的,也是有风险的。

下面,我贴一个我写好的用Linux来实现此备份的小脚本。此小脚本的功能是代替手工到交换机上保存配置,是完全登陆交换机来作的操作,不论交换机的版本高低,只要权限内能敲的命令,基本都可以实现。
脚本的执行过程是这样的:telnet到指定交换机–保存配置–通过交换机登陆到服务器–输入用户名密码–将交换机的配置文件上传到FTP服务器上。
下面是脚本内容(vi tel104.exp):

#!/usr/bin/expect 
set date [exec date "+%Y%m%d%H%M%S"]
set timeout 30
spawn telnet 192.168.0.100
expect "Password:"
send "passwordsw\r"
send "ftp 10.5.5.5\r"
send "root\r"
send "password123456\r"
send "cd /guodong/ftp/switchconf/ \r"
send " put vrpcfg.cfg  $date.192.168.0.100.cfg \r"
send "quit\r"
send "quit\r"
interact              
~

说明:1、Linux服务器上要先按装expect,否则是不能执行expect命令的。
2、Linux服务器要安装telnet,否则是不能telnet的。安装都用yum安装就可以了。
3、向交换机发送什么指令,不同的交换机是不一样的,根据需要选择要send的字符串,也就是根据需要来指定你要在交换机的输入的命令。当然不只有备份,像reload /switchport mode trunk都是可以做的。
4、至于如何搭建FTP服务器,如何更深入地使用expect,请自行百度或者google。

下面我们要做的是,创建一个crontab自动执行任务
[root@permanet ~]# crontab -e

00 01 * * * /home/expect/tel104.exp //1点0分,每日每月每周,执行绝对路径下的命令//
15 01 * * * /home/expect/tel105.exp //1点15分,每日每月每周,执行绝对路径下的命令//
30 01 * * * /home/expect/tel105.exp //1点30分,每日每月每周,执行绝对路径下的命令//
45 01 * * * /home/expect/tel106.exp //1点45分,每日每月每周,执行绝对路径下的命令//
55 01 * * * /home/expect/tel107.exp //1点55分,每日每月每周,执行绝对路径下的命令//
凌晨1点开始,每隔15分钟自动到一台指定设备保存配置文件到服务器。
这样就大功告成了。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 批量备份交换机配置文件的shell脚本可以通过使用SSH协议远程登录到交换机,并执行相应的命令来实现。 以下是一个示例的批量备份交换机配置文件的shell脚本: ```bash #!/bin/bash # 配置交换机设备的IP地址和凭据 switches=("192.168.1.1" "192.168.1.2") username="admin" password="password" backup_folder="/path/to/backup/folder" # 循环遍历所有交换机 for switch in "${switches[@]}" do # 使用SSH登录到交换机 sshpass -p $password ssh -o StrictHostKeyChecking=no -l $username $switch << EOF # 执行备份交换机配置的命令 show running-config > $backup_folder/switch_$switch.cfg # 退出交换机 exit EOF # 检查备份是否成功 if [ $? -eq 0 ]; then echo "交换机 $switch 的配置文件备份成功!" else echo "交换机 $switch 的配置文件备份失败!" fi done ``` 在这个脚本中,我们首先定义了需要备份交换机的IP地址、登录凭据和备份文件夹路径。然后,使用一个循环遍历所有的交换机。循环体内,我们使用`sshpass`命令通过SSH登录到指定的交换机,并在一个Here Document中执行备份配置文件的命令,将配置文件保存到指定的备份文件夹中。最后,通过检查命令的退出状态来判断备份是否成功,并给出相应的提示信息。 使用这个示例shell脚本,您可以根据实际情况修改交换机的IP地址和凭据,以及备份文件夹的路径,来实现批量备份交换机配置文件的功能。 ### 回答2: 批量备份交换机配置文件的Shell脚本可以使用以下方法实现: 1. 首先,创建一个用于存储备份文件的目录,可以使用`mkdir`命令创建。 ``` mkdir backup_directory ``` 2. 使用`for`循环遍历所有需要备份交换机IP地址。 ``` for ip in 192.168.1.1 192.168.1.2 192.168.1.3 do # 在这里写配置备份的命令 done ``` 3. 使用`ssh`命令登录到交换机,并执行备份配置的命令。这里可以使用`expect`工具来自动输入登录密码。 ``` ssh username@ip << EOF expect "password: " send "password\r" expect "#" send "show running-config > backup_directory/switch_config_${ip}.txt\r" expect "#" send "exit\r" EOF ``` 其中,`username`和`password`分别为登录交换机的用户名和密码。 4. 执行完备份命令后,将备份文件交换机复制到本地备份目录。 ``` scp username@ip:~/backup_directory/switch_config_${ip}.txt ~/backup_directory/ ``` 这里的`username`为登录交换机的用户名,`ip`为交换机的IP地址。 5. 最后,使用`rm`命令删除交换机上的备份文件。 ``` ssh username@ip << EOF expect "password: " send "password\r" expect "#" send "rm backup_directory/switch_config_${ip}.txt\r" expect "#" send "exit\r" EOF ``` 以上就是一个简单的批量备份交换机配置文件的Shell脚本。根据实际需要,可以调整和优化脚本中的命令和参数。 ### 回答3: 批量备份交换机配置文件的shell脚本如下: ```shell #!/bin/bash # 定义交换机IP列表 switches=("192.168.1.1" "192.168.1.2" "192.168.1.3") # 定义备份目录 backup_dir="/path/to/backup" # 遍历交换机列表 for switch in "${switches[@]}" do # 连接到交换机并执行备份命令 ssh user@$switch "copy running-config tftp backup-server $backup_dir/$switch.conf" # 检查备份结果 if [ $? -eq 0 ]; then echo "交换机 $switch 配置文件备份成功" else echo "交换机 $switch 配置文件备份失败" fi done ``` 上述脚本中,我们首先定义了一个交换机IP列表和备份目录,然后使用循环遍历每个交换机IP。在循环中,我们通过SSH连接到交换机,并执行备份命令。备份命令中的具体参数可以根据不同交换机厂商和型号进行调整。最后,我们检查备份结果并输出相应的信息。 请注意,在执行该脚本之前,请确保已经配置好SSH公钥认证以及正确配置了交换机的TFTP服务器信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值