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

  • 1
  • 2
  • 下一页

相关内容