固件不支持定时任务
在实际环境中上也有完全不支持定时任务的设备,这时需要使用自行搭建expect环境来实现我们需要的功能。expect语言是tcl语言的扩展,不管程序是交互与否,expect都能运用,可以说这样的一个小语言,驾驭起了一个庞大的系统。
以笔者手中的debian系统为例,安装expect非常容易,只要能连接互联网,自带的源中已经有编译好的expect,直接使用aptitudeinstall expect命令完成自动安装后,尝试运行expect命令,即会出现expect1.1>,这时相当于已经处在expect环境的shell 中了,类似于在Windows 系统的cmd 命令行下。
此时只要设定好脚本文件,expect将能够直接运行,假设目前有如下环境:一台名为core_switch,ip 地址为192.168.1.3的交换机,系统可以使用交互式命令copyrunning-config tftp:,tftp服务器的ip 是192.168.4.12,并且打算将配置文件命名为core_switch_config.text。那么,脚本将如下例:
#!/usr/bin/expect //给脚本设定使用expect 这个shell 来运行
spawn telnet 192.168.1.3//telnet 登陆交换机
expect“Password:“// 等待出现Password:
send “xxx\r” // 发送密码xxx
expect “core_switch>” // 输入正确的话会出现交换机名send “enable\r” // 发送enable 进入特权模式
expect “Password:“ // 特权模式需要密码,等待系统提示
send “xxx\r” // 发送enable 的密码
expect “core_switch#” // 密码正确后会进入有#的特权模式
send “copy running-config tftp:\r” // 发送备份配置命令
expect “Address of remote host” // 等待系统交互提示
send “192.168.4.12\r” // 发送远端tftp 服务器ip
expect “Destination filename” // 等待系统交互提示
send “core_switch_config.text\r” // 发送目的文件名
expect “core_switch#” // 检测完成后回到core_
switch # 状态send “exit\r” // 发送退出命令
expect eof // 脚本文件结束
例中spawn是进入expect环境后才能执行的一个内部命令,如果直接在默认的shell或bash下执行是无法执行spawn命令的。它主要的功能是给telnet 或ssh运行进程加个壳,用来传递交互指令。expect也是一个内部命令,这个命令是让系统判断前一次输出的结果里是否包含管理员设定的字符串,比如“Password”,如果有,则立即执行下一条指令。若要发送命令,别忘记在最后加上\r即为回车。
使用vi或nano命令,将脚本保存到服务器磁盘的本地文件中,该脚本必须具备执行权限,可修改权限为755,即:chmod 755scriptfilename。脚本配置完成后,直接运行/path/scriptfilename即可进行测试是否有效,可以直接看到整个脚本运行的操作过程与结果,若所有expect 与send 没有错误,整个过程完成后,配置文件也上传到了tftp服务器,tftp服务器配置不在本文讨论范围。
在这里,笔者建议将expect与tftp可以安装在一台主机上,另外为了方便查看、编辑配置文件,还可再对这台主机配置Web文件管理服务,将Web目录指向保存配置文件的目录,即能清楚的看到配置文件名称、上传日期、容量等信息,如图2所示。
从系统安全角度出发,由于tftp协议本身不具备任何管理功能,只要得知文件名便可随意获取,所以应进行适当的iptables访问控制,只允许相关网段访问,如果再对主机的Web访问服务加上验证,基本可以确保相对较安全的环境。
上文阐述了expect作用、用法与实例,那么如何实现最后一步:定时执行。在Linux系统中默认会运行cron,cron的进程负责读取定时任务并执行,用户只需要将相应的脚本写入cron配置文件中,cron便会定时执行。cron有多个调度文件,我们使用cron.d,这个目录一般在/etc下,同样需要先建立一个脚本文件,笔者设定为每天凌晨2点自动运行1次备份配置文件任务,所以cron的脚本文件为:0002***username/path/scriptfilename。
经过上文的设定后,支持定时任务的网络设备会在设定的时间将配置文件保存到tftp服务器,而不支持定时任务的网络设备,则会由expect定时登录、保存。
在目前的网络管理系统中,大多数都是针对网络设备CPU、带宽利用、响应时间或者NetFlow进行监控,几乎没有针对网络设备配置管理的系统,笔者根据实际工作需求构建的网络设备配置文件的备份环境,不仅有助于当设备出现故障时,更换设备快速恢复环境,也对误操作之后快速恢复前一天的配置起到帮助。
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。