From: Bob Gustafson Date: 2003-09-12T01:43:47+09:00 Subject: Re: Ruby in Systems Administration There is always Expect [root@hoho2 pty]# pwd /usr/local/src/ruby/ruby-1.8.0/ext/pty [root@hoho2 pty]# cat expect_sample.rb # # sample program of expect.rb # # by A. Ito # # This program reports the latest version of ruby interpreter # by connecting to ftp server at netlab.co.jp. # require 'pty' require 'expect' fnames = [] PTY.spawn("ftp ftp.netlab.co.jp") do |r_f,w_f,pid| w_f.sync = true $expect_verbose = true r_f.expect(/^Name.*: /) do w_f.print "ftp\n" end if !ENV['USER'].nil? username = ENV['USER'] elsif !ENV['LOGNAME'].nil? username = ENV['LOGNAME'] else username = 'guest' end r_f.expect('word:') do w_f.print username+"@\n" end r_f.expect("ftp> ") do w_f.print "cd pub/lang/ruby\n" end r_f.expect("ftp> ") do w_f.print "dir\n" end r_f.expect("ftp> ") do |output| for x in output[0].split("\n") if x =~ /(ruby.*\.tar\.gz)/ then fnames.push $1 end end end begin w_f.print "quit\n" rescue end end print "The latest ruby interpreter is " print fnames.sort.pop print "\n" [root@hoho2 pty]# >I was just wondering if anyone had some really cool uses for Ruby in Systems >Administration. Some examples of what I would consider to be really cool is >stuff like using drb or webrick to poll system status, gather inventory >information, etc. Useful ways to interact with multiple systems. Ways to >push system changes out to hundreds of servers. Etc, etc... I know there's >some stuff on the wiki ( http://www.rubygarden.org/ruby?RealWorldRuby ) as >well. >