Linux下利用Crond和Expect定时登陆交换机执行任务

1、Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。expect等待输出中输出特定的字符,通常是一个提示符,然后发送特定的响应。

例:在/root下建立test.exp,执行命令:expect   /root/test.exp

#!/usr/bin/expect -f

#这一行告诉操作系统脚本里的代码使用那一个shell来执行。这里的expect其实和linux下的#bash、windows下的cmd是一类东西。
#注意:这一行需要在脚本的第一行。

set timeout 10

#设置默认超时时间(秒),如果在给定的时间内没有输入,则会超时并返回一个默认的响应。
#file name: test.exp
#Usages: shutdown ports
#Version: v1.1
#By Create mark
#Date: 2013-3-6

 

spawn telnet 172.21.1.1


#spawn是进入expect环境后才可以执行的expect内部命令,如果没有装expect或者直接在默认的SHELL下执行是找不到spawn命令的。它主要的功能是给ssh运行进程加个壳,用来传递交互指令。

expect "login:"

#这里的expect也是expect的一个内部命令,expect的shell命令和内部命令是一样的,但不是一个功能。判断上次输出结果里是否包含“login:”的字符串,如果有则立即返回,否则就等待一段时间后返回,这里等待时长就是前面设置的10秒

send "用户名\r"

#执行交互动作,与手工输入密码的动作等效。


expect "password"
send "密码\r"
#sleep 1000
send "enable ports 1:6\r"
send "exit\r"
send "y\r"
expect eof
exit

2、Crond

crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分锺会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类:
1、系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2、个人执行的工作:某个用户定期要做的工作,例如每隔10分钟检查邮件服务器是否有新信,这些工作可由每个用户自行设置

/etc/cron.deny

该文件中所列的用户不允许使用Crontab命令

/etc/cron.allow

该文件中所列的用户允许使用Crontab命令

/var/spool/cron/

是所有用户的crontab文件

/var/spool/cron/crontabs
/var/spool/cron/crontabs
Crontab命令的格式为:crontab –l|-r|-e|-i [username],其参数含义如表一:

-l     显示用户的Crontab文件的内容
-ri    删除用户的Crontab文件前给提示
-r    从Crontab目录中删除用户的Crontab文件
-e    编辑用户的Crontab文件

用户所建立的Crontab文件存于/var/spool/cron中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,
格式如下:* * * * *

第一段       代表分钟 0—59

第二段       代表小时 0—23

第三段       代表日期 1—31

第四段       代表月份 1—12

第五段       代表星期几,0代表星期日 0—6

名称 : crontab
使用权限 : 所有使用者
使用方式 :
crontab [ -u user ] file
crontab [ -u user ] { -l | -r | -e }
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
餐数 :
-e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
-r : 删除目前的时程表
-l : 列出目前的时程表
时程表的格式如下 :
f1 f2 f3 f4 f5 program

其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,... 时表示第 a, b, c,... 分钟要执行,f2 为 a, b, c,... 时表示第 a, b, c...个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 :
每月每天每小时的第 0 分钟执行一次 /bin/ls :
0 7 * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup

你可能感兴趣的:(linux,crontab,crond,expect,自动登陆交换机)