Guest User

Untitled

a guest
Mar 11th, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.07 KB | None | 0 0
  1. #
  2. # sample program of expect.rb
  3. #
  4. # by A. Ito #
  5. # This program reports the latest version of ruby interpreter
  6. # by connecting to ftp server at netlab.co.jp.
  7. #
  8. require 'pty'
  9. require 'expect'
  10.  
  11. uri = ARGV.shift || "ftp.ruby-lang.org"
  12. STDOUT.sync = true
  13. STDERR.sync = true
  14. $expect_verbose = false
  15. username = ENV['USER'] || ENV['LOGNAME'] || username = 'guest'
  16. versions = []
  17. login_pat = %r/^\s*name.*:\s*/io
  18. password_pat = %r/^\s*password:/io
  19. prompt_pat = %r/^\s*ftp\s*>\s*/io
  20. version_pat = %r/ruby-(\d\.\d.\d)(-[^\.]+)*\.tar\.gz/io
  21.  
  22. PTY.spawn("ftp ftp.ruby-lang.org") do |r_f,w_f,pid|
  23. w_f.sync = true
  24. r_f.expect(login_pat){ w_f.puts "ftp" }
  25. r_f.expect(password_pat){ w_f.puts "#{ username }@" }
  26. r_f.expect(prompt_pat){ w_f.puts "cd pub/ruby" }
  27. r_f.expect(prompt_pat){ w_f.puts "dir" }
  28. r_f.expect(prompt_pat) do |output|
  29. output.first.each do |line|
  30. m = version_pat.match(line)
  31. versions.push m[1] if m
  32. end
  33. end
  34. w_f.print("bye") rescue nil
  35. end
  36.  
  37. puts versions.join(',')
  38. puts "The latest ruby interpreter is <#{ versions.sort.last }>"
Add Comment
Please, Sign In to add comment