文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>懒人有懒招:expect

懒人有懒招:expect

时间:2010-10-17  来源:amazingjxq1

  因为运行的机器上面连接某些对应的数据库,编译与运行的机器不是同一台。这样一来,从写好程序到运行就是这样:首先将写好的程序scp到编译机上。然后登录到编译机上,执行make等命令。最后再执行scp将编译好的可执行文件上传到运行机上面。中间的过程要输入3次密码,输入的命令也比较多。这样一来有很多时间都浪费在输入上面,影响工作效率。

  expect脚本可以很好的处理这个问题。expect用于处理需要交互的情形。比如需要输入密码等等。其实expect可以用在很多地方,只要是能够自动进行交互而不用人为干扰的操作都可以,没有做不到,只有想不到。

  下面的是完成上述操作的expect脚本:

 

#!/usr/bin/expect -f

set timeout -1
set file [lindex $argv 0]
set compile_path [lindex $argv 1]
set run_path [lindex $argv 2]

spawn scp $file user@compile_host:$compile_path
expect "*password: "
send "mypass\r"

spawn ssh user@compile_host
expect "*'s password: "
send "mypass\r"
expect "*-bash-3.00*"
send "cd $compile_path; make -f makefileimport; scp binary user@run_host:$run_path\r"
expect "*'s password: "
send "mypass\r"
expect "*-bash-3.00*"
send "exit\r"
interact

 

  这是一种迫不得已的方法,最好的还是用ssh key来避免输入密码。这样一来密码都是明文保存在脚本当中,不安全。当然可以借助expect输入上面的那些命令。登录ssh的expect脚本可以完成登录之后首先执行某些操作的功能,为了改变登录之后的提示符,可以在脚本中加上执行". .my_bashrc"的操作,这样登录之后显示的提示符就是自己设定的,避免更改/etc/profile文件。同样也可以登录之后进入到某个目录等等。发现有的哥们是把/etc/passwd里面的home路径给改了来达到目的的,因为我们都用的是一个用户,这样自己方便了,但会影响他人。推荐还是用expect脚本完成。

  工欲善其事,必先利其器。expect可以节省我们很多的时间。

相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载