前言:
目前小伙伴们对“开启telnet和tftp”大致比较看重,姐妹们都需要剖析一些“开启telnet和tftp”的相关资讯。那么小编也在网络上搜集了一些关于“开启telnet和tftp””的相关内容,希望各位老铁们能喜欢,看官们一起来了解一下吧!作为一名专业的运维,我们必须确保公司的网络在出现故障的时候能够第一时间恢复,当然,这取决于你有没有及时的做好备份,所以,配置文件的备份相当重要。
一般常用的交换机,如思科的可以使用命令copy startup-config tftp:
H3C的可以使用backup startup-configuration to
目前比较新的交换机IOS还能使用系统自带的命令设置计划任务,但是网络设备型号众多,每个版本的配置又不尽相同,当网络规模达到一定数量,这些设置就显得较为繁琐,手动备份又不太现实。
之前在笔记本上面使用SecureCRT结合VBS脚本的方式定期对网络设备进行半自动备份,效果还是不错的,最近更换了电脑,又想着需要重新设置,较为麻烦,而且不能实现全自动备份,所以这次打算换一种方式,通过网上查找资料,决定采用Centos+Expect的方式进行备份,实现的思路就是使用expect脚本,再通过Centos里面的crontab计划任务命令定期执行,自动将配置文件上传指定的TFTP服务器上归档保存。
本次案例用到的CentOS版本是CentOS Linux release 7.2.1511
TFTP服务器为群辉NAS,开启了TFTP服务,并且需要开启了telnet服务
1、群辉设置部分
开启TFTP服务,开启telnet服务
开启服务后,测试下是否能通过telnet登录,登录成功
2、Centos设置部分
Centos系统的安装请自行百度,这边就不做详细说明,我们主要来讲expect的安装和使用方法
A、首先我们需要在Centos中通过yum来安装expect,使用命令yum intsall expect
yum install expect
B、实验中我们使用的是telnet服务来连接网管交换机,所以需要安装telnet服务
yum install telnet
安装完成后我们在/root/expectFiles的目录下新建了3个文件,需要对文件赋予执行权限,这里我直接chmod 777 所有的文件
如下图
172.16.1.66.expect #交换机的备份脚本
mkdir.expect #新建以年-月-日命名的文件夹
move.expect #将备份完成的文件转移到对应的文件夹
下面是3个文件里面的详细脚本
172.16.1.66.expect
#! /usr/bin/expectset host "172.16.1.66" #定义目标交换机地址set username "cisco" #定义目标交换机登录用户名set password "XXXX" #定义目标交换机登录密码spawn telnet $host #telnet到目标交换机expect "Username:" #匹配返回的字符串"Username"send "$username\r" #发送定义好的登录用户名并回车expect "Password:" #匹配返回的字符串"Password"send "$password\r" #发送定义好的登录密码send "copy startup-config t\r" #发送备份命令到交换机 X.X.X.X为TFTP服务器的地址expect "Address or name" #匹配返回的字符串send "\r" #回车确认expect "Destination"send "\r"expect "172"send "quit\r"interact #结束脚本
mkdir.expect
#! /usr/bin/expect set host "X.X.X.X" #定义TFTP服务器IPset username "admin"set password "XXXX" #TFTP服务器telnet登录密码set path "/volume1/Department/IT/Public/TFTP"spawn telnet $hostexpect "XXX login" #匹配返回的TFTP名称send "$username\r"expect "Password:"send "$password\r"expect "admin@XXX"send "cd /volume1/Department/IT/Public/TFTP\r"expect "admin@XXX"send "mkdir `date +%Y-%m-%d`\r" #使用mkdir命令新建以年-月-日命名的文件夹expect "admin@AHYNAS01"send "exit\r"interact
move.expect
#! /usr/bin/expect set host "X.X.X.X"set username "admin"set password "XXXX"set path "/volume1/Department/IT/Public/TFTP"spawn telnet $hostexpect "XXX login"send "$username\r"expect "Password:"send "$password\r"expect "admin@XXX"send "cd /volume1/Department/IT/Public/TFTP\r" #进入对应的TFTP路径expect "admin@XXX"send "mv $path/172.*.* $path/`date +%Y-%m-%d`\r" #使用mv命令将TFTP目录下的备份文件全部转移到新创建的以日期命名的文件夹内expect "admin@XXX"send "exit\r"interact
脚本编写完毕后逐个运行一遍脚本看看是否能够正常执行
[root@localhost expectFiles]# ./172.16.1.66.expect[root@localhost expectFiles]# ./mkdir.expect [root@localhost expectFiles]# ./move.expect
成功运行,备份文件已经自动备份并转移到对应的文件夹内
然后我们再使用crontab -e来创建计划任务,每天晚上1点钟执行备份,1点05分执行创建文件夹,1点06分执行备份文件归档,同时将日志追加到对应的log文件中,以便排错。
[root@localhost expectFiles]# crontab -e #新增计划任务[root@localhost expectFiles]# crontab -l00 1 * * * /root/expectFiles/mkdir.expect >>/root/expectFiles/log.txt05 1 * * * /root/expectFiles/172.16.1.66.expect >>/root/expectFiles/log2.txt06 1 * * * /root/expectFiles/move.expect >>/root/expectFiles/log3.txt
Except的简单用法
1. [#!/usr/bin/expect]
这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的bash、windows下的cmd是一类东西。
注意:这一行需要在脚本的第一行。
2. [set timeout 30]
基本上认识英文的都知道这是设置超时时间的,现在你只要记住他的计时单位是:秒 。timeout -1 为永不超时
3. [spawn ssh -l username 192.168.1.1]
spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。所以不要用 “which spawn“之类的命令去找spawn命令。好比windows里的dir就是一个内部命令,这个命令由shell自带,你无法找到一个dir.com 或 dir.exe 的可执行文件。
它主要的功能是给ssh运行进程加个壳,用来传递交互指令。
4. [expect “password:”]
这里的expect也是expect的一个内部命令,有点晕吧,expect的shell命令和内部命令是一样的,但不是一个功能,习惯就好了。这个命令的意思是判断上次输出结果里是否包含“password:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的30秒
5. [send “ispass\r”]
这里就是执行交互动作,与手工输入密码的动作等效。
温馨提示: 命令字符串结尾别忘记加上“\r”,如果出现异常等待的状态可以核查一下。
6. [interact]
执行完成后保持交互状态,把控制权交给控制台,这个时候就可以手工操作了。如果没有这一句登录完成后会退出,而不是留在远程终端上。如果你只是登录过去执行
Crontab用法
在以上各个字段中,还可以使用以下特殊字符:
“*”代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
“/”代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
“-“代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
“,”分散的数字(不一定连续),如1,2,3,4,7,9。
其他问题大家可以留言,我们一起探讨!
标签: #开启telnet和tftp