本人 ruby 新手,最近使用 expect 和 shell 写了一些脚本,想用 ruby 重写,但是不知道 ruby 中的 expect 怎么用,网上找了好久都没有结果。希望知道的大神指教一二。
我是做自动化的脚本,过程是需要安装一款软件,这款软件的安装方式类似下面这种情况:
首先解压开,然后调用其中的安装脚本后,会有如下提示:
please input install folder: /home/user (这部分需要用户输入) please input the version you choose: 2.0 (这部分需要用户输入) 。。。
类似这种形式。 我以前用 expect 脚本写的话,就每次截取上次的屏幕输出。
但是现在想转用 ruby。 不知道大家有没有用过 ruby expect,或者还有什么其它解决这类交互式安装的好方法,请麻烦告诉我一下。
或者可以贴个有类似资料的地方我自己学习。
希望大家不吝赐教,感激不尽。
目前见过的比较复杂的用 Ruby 写的安装脚本是 https://github.com/phusion/passenger/blob/master/bin/passenger-install-nginx-module
如果楼主问“Ruby 怎么写安装脚本”估计很多人答,如果问“大家使用过 ruby expect 么”那就大大缩小了回答人群了。
#!/usr/bin/env ruby
puts "please input install folder:"
install_folder = gets.chop
puts "please input the version you choose:"
version = gets.chop
实现楼主举的例子,不需要额外的库。
@rei,但是远程去操作主机实施安装命令的却需要第三方包',从楼主说 expect 来看,有可能是 telnet 到它机,或者 ssh 它机,不知道 ruby 有啥好 gem?
google 一大堆 example, 这个没办法给例子,只能根据你命令交互慢慢 debug 出来。 不过使用系统的 expect 命令应该比较简单,一般系统都自带这个命令,vps(精简版系统一般没有)。
https://github.com/abates/ruby_expect http://www.admin-magazine.com/Articles/Automating-with-Expect-Scripts
经常用 python fabric。 ruby 的话可以看看这个帖子: http://stackoverflow.com/questions/4100260/what-is-rubys-equivalent-of-pythons-fabric