Ruby 1.8.7 リファレンスマニュアル > ライブラリ一覧 > net/telnetライブラリ > Net::Telnetクラス
クラスの継承リスト: Net::Telnet < SimpleDelegator < Delegator < Object < Kernel
このクラスは telnet のクライアント機能を提供します。
このクラスは接続に利用している ソケットオブジェクト(通常は TCPSocket)のメソッドを すべて利用することができます(SimpleDelegator を用いて います)。 これによって、IO#close で接続を 閉じたり、IO#sysread で Net::Telnet#waitfor を 使わずにデータを直接読むことができます。
telnet でリモートホストにログインしてシェル経由で コマンドを実行することを考えてみましょう。 これを Net::Telnet で実現するためには、 まず Net::Telnet.new に "Host" オプションを 与えてオブジェクトを作り、 Net::Telnet#login で ユーザ名とパスワードを送ってログインし、 Net::Telnet#cmd でコマンドを 実行、最後に IO#close で接続を閉じます。 Net::Telnet#waitfor, Net::Telnet#print, Net::Telnet#puts, Net::Telnet#write などと いったメソッドはより複雑なことをする場合にのみ使ってください。
Net::Telnet のオブジェクトは SMTP や HTTP のような telnet で ないサービスにも利用できます。この場合には Net::Telnet.new に "Port" オプションを与えることで ポートを指定する必要があるでしょう。また、 "Telnetmode" オプションに false を 渡すことで telnet のコマンド列を解釈しないように しなければなりません。Net::Telnet#login は普通 うまく動かないので、認証をプログラマ自身が実装 する必要があります。
通信プロトコルによっては、Net::Telnet.new に"Prompt" を渡しておいて Net::Telnet#cmd をうまく動作させることが できるかもしれません。 また、Net::Telnet#cmd を呼ぶごとに "Match" を 指定しても同様のことができます。 また、Net::Telnet#puts や Net::Telnet#waitfor を 直接使ってやりとりすることもできます。 それでうまくいかない場合は、 IO#sysread を直接呼ぶ必要があるかもしれません。
Net::Telnet.new には "Proxy" オプションで指定した オブジェクトを通して通信をすることができます。 "Proxy" オプションに Net::Telnet のオブジェクトを 渡した場合には、通信路が共用されます。Socket のような読み書き可能な IO オブジェクトを渡した場合には、 そのオブジェクトを通してやり取りが行われます。 この機能はユニットテストをする場合などに便利でしょう。
ログインしてコマンドを送る例、リモートホストから返ってきた文字列は すべて標準出力に表示する
require 'net/telnet' # リモートホスト "foobar" に接続 # タイムアウトは 10 秒 localhost = Net::Telnet.new("Host" => "localhost", "Timeout" => 10) # ログインし、プロンプトが出るまで待ち合わせる telnet.login("your name", "your password") {|c| print c} # ls コマンドを実行し、実行後、プロンプトが出るまで待ち合わせる telnet.cmd("ls") {|c| print c} # sleep で 5 秒 telnet.cmd("sleep 5 && echo foobar &") {|c| print c} STDOUT.flush # <- これがないとここまで処理が来てることがわかりにくい # 前のコマンドの出力を待ち合わせる telnet.waitfor(/foobar\Z/) {|c| print c} # ログインセッションの終了 telnet.cmd("exit") {|c| print c} telnet.close
POP サーバにメールが来ているかどうかを見る。リモートホストからきた文字列は すべて標準出力に表示
require 'net/telnet' # リモートホスト(POPサーバ) "foobar" に接続 # ポート番号は110(POPのwell-knownポート)、 # "Telnetmode" は off (telnet用の特殊なバイト列を解釈しない)、 # Prompt (コマンドの区切り) は POP の仕様により /^\+OK/n とする pop = Net::Telnet::new("Host" => "foobar", "Port" => 110, "Telnetmode" => false, "Prompt" => /^\+OK/n) # 認証をする # Net::Telnet#login は使えない(ログインのコマンドが異なる)ので # Net::Telnet#cmd でユーザ名とパスワードを送る pop.cmd("user " + "your_username") { |c| print c } pop.cmd("pass " + "your_password") { |c| print c } # list コマンドで来ているメールを表示する pop.cmd("list") { |c| print c } # 終了する pop.close
定義 | 説明 | |
---|---|---|
new(opts) -> Net::Telnet
|
Telnet オブジェクトを生成します。 |
定義 | 説明 | |
---|---|---|
binmode(mode=nil) -> bool|()
|
引数を指定しない場合には"Binmode"の値を返します。 引数を与えた場合は"Binmode"の値を変更します。 |
|
binmode=(mode)
|
"Binmode" を設定します。これは改行文字の変換をするかどうかを意味します。 |
|
cmd(opts) -> String
|
コマンドをホストに送ります。 |
|
login(opts, password=nil) -> String
|
指定したユーザ名とパスワードでログインします。 |
|
preprocess(string) -> String
|
ホストから受け取った文字列の前処理をします。 |
|
print(string) -> ()
|
ホストに文字列を送ります。 |
|
puts(string) -> ()
|
改行を付加した文字列をホストに送ります。 |
|
sock -> IO
|
リモートホストに接続している IO オブジェクトを返します。 |
|
telnetmode(mode=nil) -> bool|()
|
引数を指定しない場合には"Telnetmode"の値を返します。 引数を与えた場合は"Telnetmode"の値を変更します。 |
|
telnetmode=(mode)
|
"Telnetmode" を設定します。これは telnet の特殊なバイト列を解釈するかどうかを 意味します。 |
|
waitfor(opt) -> String|nil
|
指定した正規表現にマッチする文字列がホストから来るまでデータを読み込みます。 |
|
write(string) -> ()
|
ホストに文字列を送ります。 文字列に変換は一切施しません。 |
marshal_dump
marshal_load
method_missing
respond_to?
::IgnoreBacktracePat
==
===
=~
__id__
__send__
_dump
class
dclone
display
enum_for
eql?
equal?
extend
freeze
frozen?
hash
initialize
initialize_copy
inspect
instance_eval
instance_exec
instance_of?
instance_variable_defined?
instance_variable_get
instance_variable_set
instance_variables
is_a?
method
methods
nil?
pretty_inspect
pretty_print
pretty_print_cycle
pretty_print_inspect
pretty_print_instance_variables
private_methods
protected_methods
public_methods
remove_instance_variable
singleton_method_added
singleton_method_removed
singleton_method_undefined
singleton_methods
taint
tainted?
tap
to_a
to_ary
to_hash
to_int
to_io
to_proc
to_regexp
to_s
to_str
to_yaml
to_yaml_properties
to_yaml_style
untaint
__getobj__
__setobj__
clone
定義 | 説明 | ライブラリ |
---|---|---|
preprocess(string)
|
net/telnets | |
ssl
|
net/telnets | |
ssl?
|
net/telnets | |
waitfor(options)
|
net/telnets |