kalor

导航

 

1 expect程序

 

  用的Ubuntu,本身没带expect,安装。

  sudo apt-get install expect

 

(关于expect,参见http://www.tclchina.com/article/translation/expect_tutorial/expect_1_cn.htm

   要从源码安装,参见安装 Tcl 和 Expect

 

2 写脚本 sample.script

 

   下面是简单的一个例子,把登录名和密码都显式地写在脚本里。

  1. #!/usr/bin/expect -f   
  2. #auto ssh login   
  3.   
  4. set timeout 20  
  5. spawn ssh login_name@host_name  
  6. expect “*password:”   
  7. send “123456/r”   
  8. interact  

      上面的脚本中,spawn命令激活一个Unix程序来进行交互式的运行。send命令向进程发送字符串。expect命令等待进程的某些字符串。 expect支持正规表达式并能同时等待多个字符串,并对每一个字符串执行不同的操作。expect还能理解一些特殊情况,如超时和遇到文件尾。

   如果希望脚本有一定的通用性,比如通过参数方式来输入用户名和主机地址。那么脚本可以象这样:

  
#!/usr/bin/expect -f

#auto ssh login

set timeout 20

set login_name [lindex $argv 0]
set host_name [lindex $argv 1]
set login_pwd [lindex $argv 2]
spawn ssh $login_name@$host_name

expect "*password:"

send "$login_pwd\r"

interact

 

 

   这样执行的时候$argv 0 就是输入的第一个参数, $argv 1 就是输入的第二个参数


3  给脚本加上可执行权限

 

   chmod +x sample.script

 

   如果文件默认有其它权限,建议最好设置为只能自己读取,修改和执行

   chmod 700 sample.script

   接着就可以通过执行脚本进行远程登录了 ./sample.script

 

参考资料:

expect中文教程

http://www.tclchina.com/article/translation/expect_tutorial/expect_1_cn.htm

http://www.tclchina.com/article/translation/expect_tutorial/expect_2_cn.htm

posted on 2014-04-30 18:02  kalor  阅读(349)  评论(0编辑  收藏  举报