在网络界瞎混这么多年,对路由器的认识一直很渣:功能强大的网络设备。支持强大OSPF、BGP、MPLS ×××等网络路由协议,却很少关注对它的日常运维。直到后来接触到linux,发现linux强大的脚本编程功能。学过linux之后再回来看路由器,特别是思科的IOS,顿悟:IOS就是尼玛的linux再次开发的,更确切的说应该叫它Unix-like。

既然,linux可以支持强大的脚本编程,如shell编程、python等实现系统的自动化监控、自动化执行任务,那作为unix-like的IOS路由器是否也可以呢?如果可以实现,是不是就不需要定期做巡检采集配置文件、CPU利用率等重要信息备份工作了呢?

答案是肯定的,万能的互联网告诉我有一种叫expect的语言可以实现这个功能。对于这个语言简单解释下:expect是一种交互式语言,通过expect期待一个内容,然后用send下发要执行的命令。这么说有点抽象,下面会举例说明。(通过shell编程来实现telnet/ssh,无法实现自动登录及自动执行其他命令。如果哪位大侠觉得可以,跪求方法。)

------------------------------------------------废话分割线------------------------------------------------------------------------------

例一:实现思科ASR9K路由器配置文件的自动备份(华三、华为网络设备也支持)

1、需要:linux主机一台&TFTP服务器一台(windows也可以),必须和路由器路由可达

2、思路:①写expect脚本 ②写crontab

3、步骤分解

一、写expect脚本实现设备自动登录,并上传配置文件到TFTP服务器

登录到linux主机:

vim asr9010.exp                   //创建并编辑一个expect文件,后缀名可写成.exp

下面是asr9010.exp脚本内容:

1  #!/usr/bin/expect              //说明该脚本使用expect语言执行     2  #backup device configuration to tftp server          //注释     3  set username getlog                                            //创建变量username,赋值getlog     4  set password 123456                                          //创建变量password。这两个变量用于路由器的登录     5  set getlog "show running-config | file tftp://1.11.111.111/asr9010-huiyuan.cfg"

//设置变量getlog,赋值内容为路由器上需要操作的一条命令,即:上传配置文件到TFTP服务器     6  spawn telnet 1.11.111.112    //使用spawn创建一个进程,并执行telnet指令     7  sleep 1                                 //为避免命令执行过快,休眠1秒         8  expect "username:"             //若出现username:     9  send "$username\n"            //输入变量username的值,即getlog,就是路由器登录的用户名    10  sleep 1    11  expect "password:"    12  send "$password\n"           //这里输入登录密码    13  send "$getlog\n"                  //进入系统之后,执行变量getlog的值,即那一长串命令    14  send "exit\n"                        //退出系统    15  expect eof                            //检测执行结束

16  exit                                        //执行结束,关闭进程

用./asr9010.exp就可以执行该脚本(记得修改执行权限),运行过程会直接显示到屏幕上。

到TFTP上看下执行路径下就可以看到这个备份的配置文件啦(就不截图了),如果哪天不幸路由器数据丢失,可直接通过TFTP直接get配置文件到路由器进行数据恢复。

二、在linux主机上配置crontab,实现定期自动执行asr9010.exp脚本

crontab -e 进入crontab编辑模式

0 5 * * 1 /home/devicelog/asr9010.exp      //每周一早上凌晨5点准时执行/home/devicelog/目录下的asr9010.exp脚本,大功告成。再也不用傻乎乎的手动备份数据了。

--------------------------------------------------------我是一条分割线-------------------------------------------------------------

例二:自动备份路由器上的重要配置如:静态路由,并将备份内容以邮件附件形式发送到指定邮箱。且,附件命名要求带当天日期,如route-20151105.txt

PS:方法与例一类似,就是需要在linux主机上配置邮件发送功能,expect结合bash、crontab可以共同完成。

时间有点晚,就不仔细写了。直接上效果图:

睡之前再废话一句:执行expect脚本时可以只用>重定向功能,这样就不会在屏幕上输出一大堆内容。当需要对输出的内容做过滤时,重定向到文件后可以用sed\grep\awk对其进行再次利用筛选。反正,linux就是只怕想不到没有做不到的。

再再废话一句:像思科一些IOS已经支持很多linux常用命令:egrep、vim、sort、uniq,etc。

linux路由信息自动丢失,浅谈用expect实现路由器自动备份数据相关推荐

  1. linux系统pkl,(网摘)Linux新手必看:浅谈如何学习linux

    地址:http://www.eimhe.com/bbs/viewthread.php?tid=53256&extra=page=1> Linux新手必看:浅谈如何教习linux 一.起步 ...

  2. c语言乐学编程作业答案,信息乐学|浅谈C语言

    原标题:信息乐学|浅谈C语言 一大波C语言的干货正在靠近 刚刚成为大学生的小萌新们,经过两个多月的学习,你们对大学的多彩生活是否还满意?全新的学习方式你们是否还适应?然而,新鲜劲还没过,第一件让你们头 ...

  3. 手机热点设置虚拟服务器,以三款路由器为例,浅谈手机热点中继路由器的设置方法...

    以三款路由器为例,浅谈手机热点中继路由器的设置方法 2017-01-23 22:37:04 43点赞 328收藏 36评论 前言 各位值友,新年好! 这篇文章写一点路由使用心得.在此之前,我和许多人一 ...

  4. Linux位置无关代码实现,浅谈位置无关代码

    原标题:浅谈位置无关代码 引言 最近参与的一个项目涉及到了二进制重写相关的问题,也因此看了几篇相关工具的论文.与之前曾经一直想做的动态装载有不少重合,因此在此做一个整理. 本文主要整理了动态库装载地址 ...

  5. Linux系统分区和挂载浅谈

    好久没有写BLOG了,之前出差了2个月,都没怎么看书,也没有太多时间写.回来后一个月人也有点放松.现在开始还是得继续努力啊.不废话了,下面就介绍下Linux系统的分区和挂载 一 Linux的安装 Li ...

  6. linux分区mapper,Linux系统/dev/mapper目录浅谈

    Linux系统的一般的文件系统名称类似于/dev/sda1或/dev/hda1,但是今天在进行系统维护的时候,利用df -h 命令敲出了/dev/mapper/VolGroup-lv_root和/de ...

  7. Linux先发送条件变量,浅谈Linux条件变量的使用

    Linux线程同步之间存在多种机制,条件变量是一种类似操作系统里提到的生产者-消费者算法的同步机制,允许线程以无竞争的方式等待特定条件的发生. 示例伪代码: void* Thread1(void){ ...

  8. 通俗易懂浅谈一下服务器异地容灾备份

    最近关于服务器异地容灾备份等话题热度逐渐上升,服务端的网络.机房硬件等一旦出现故障,将有可能导致大规模的服务瘫痪,商城订单下降等,进而对公司造成经济损失. 服务端灾备不仅是运维人员的工作,前后端开发人 ...

  9. 浅谈打造泛在电力物联网大数据平台-Susie 周

    1.大数据技术在物联网产业中的应用价值 现如今,物联网的架构主要包括:感知层.网络层和应用层.感知层能够采集信息.识别物体等感知功能,从而形成大量数据.比如微博每天评论功能可以达到1.2亿条评论,上传 ...

最新文章

  1. php读取txt并写入数据库,php读取txt文件组成SQL并插入数据库的方法
  2. js原理之执行上下文
  3. oracle19c 安装权限_oracle 19c 安装
  4. ASP.NET Core 使用 Hangfire 定时任务
  5. 12年前的 Linux bug 复活,DNS 缓存投毒攻击重现
  6. excel 图表制作--趋势线误差线
  7. 数据库设计-逻辑结构设计
  8. 计算机网络强制100M,网络连通性故障分析与排除二例
  9. 关于163邮箱,上传附件,本地验证文件大小的问题。
  10. MATLAB平台文字识别算法实现
  11. Quasi-globally Optimal and Near/True Real-time Vanishing Point Estimation in Manhattan World 论文阅读学习
  12. vs2019如何关闭自动更新
  13. C# 屏蔽Ctrl Alt Del 快捷键方法+屏蔽所有输入
  14. 计算机学培训后的心得体会,计算机培训学习心得感想
  15. C++串口同步和异步的读取与串口设备编程
  16. 外键和内键.个人理解
  17. 计算机绪论知识点,第一章 绪论
  18. [分析]欢乐时光源码
  19. 编程小知识之 Dithering
  20. git学习(九) 把本地仓库同步到github

热门文章

  1. 版本信息文件、虚拟环境创建
  2. 微信 Tinker 负责人张绍文关于 Android 热修复直播分享记录
  3. Quartz1.X中CronTrigger第一次启动的问题
  4. 对顶层生存空间的考虑---及蜷缩在内层的EJB
  5. vector机器人 VECTOR’S CUBE 矢量的立方体
  6. linux dbus-daemon进程 消息转发 简介
  7. linux shell mkpasswd 生成随机密码
  8. linux ssh 远程登陆 报错 software caused connection abort 解决方法
  9. golang float string int 相互转换 保留小数位
  10. tomcat 和 jdk 版本 对应关系