浅谈用expect实现路由器自动备份数据-创新互联

在网络界瞎混这么多年,对路由器的认识一直很渣:功能强大的网络设备。支持强大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就可以执行该脚本(记得修改执行权限),运行过程会直接显示到屏幕上。

浅谈用expect实现路由器自动备份数据

到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实现路由器自动备份数据

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

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

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

分享名称:浅谈用expect实现路由器自动备份数据-创新互联
本文地址:https://www.cdcxhl.com/article12/sphdc.html

成都网站建设公司_创新互联,为您提供微信公众号移动网站建设虚拟主机面包屑导航关键词优化营销型网站建设

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

外贸网站建设