summaryrefslogtreecommitdiff
path: root/lib/net
diff options
context:
space:
mode:
authorakira <akira@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-05-13 07:02:18 +0000
committerakira <akira@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-05-13 07:02:18 +0000
commit3c103830d71d539f730fdcfbf71f13e5c876a0c2 (patch)
treed8756119c63b45ad183e64411ba663d19c1aba9d /lib/net
parent30a9fd3f174000f4bb456a2d7470a25da58cddef (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.rb12
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)