diff options
author | akira <akira@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-13 07:02:18 +0000 |
---|---|---|
committer | akira <akira@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2004-05-13 07:02:18 +0000 |
commit | 3c103830d71d539f730fdcfbf71f13e5c876a0c2 (patch) | |
tree | d8756119c63b45ad183e64411ba663d19c1aba9d /lib/net | |
parent | 30a9fd3f174000f4bb456a2d7470a25da58cddef (diff) |
* lib/net/telnet.rb (Net::Telnet::login): "options" can specify
regexps for login prompt and/or password prompt.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@6305 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/net')
-rw-r--r-- | lib/net/telnet.rb | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/net/telnet.rb b/lib/net/telnet.rb index 1df488ca0b..05691de0f7 100644 --- a/lib/net/telnet.rb +++ b/lib/net/telnet.rb @@ -704,27 +704,31 @@ module Net # the host should not echo). If a block is passed in, this received # data is also yielded to the block as it is received. def login(options, password = nil) # :yield: recvdata + login_prompt = /[Ll]ogin[: ]*\z/n + password_prompt = /Password[: ]*\z/n if options.kind_of?(Hash) username = options["Name"] password = options["Password"] + login_prompt = options["LoginPrompt"] if options["LoginPrompt"] + password_prompt = options["PasswordPrompt"] if options["PasswordPrompt"] else username = options end if block_given? - line = waitfor(/login[: ]*\z/n){|c| yield c } + line = waitfor(login_prompt){|c| yield c } if password line += cmd({"String" => username, - "Match" => /Password[: ]*\z/n}){|c| yield c } + "Match" => password_prompt}){|c| yield c } line += cmd(password){|c| yield c } else line += cmd(username){|c| yield c } end else - line = waitfor(/login[: ]*\z/n) + line = waitfor(login_prompt) if password line += cmd({"String" => username, - "Match" => /Password[: ]*\z/n}) + "Match" => password_prompt}) line += cmd(password) else line += cmd(username) |