Ruby 1.9.3 リファレンスマニュアル > ライブラリ一覧 > net/telnetライブラリ > Net::Telnetクラス > new

singleton method Net::Telnet.new

new(opts) -> Net::Telnet
new(opts) {|message| ... } -> Net::Telnet

Telnet オブジェクトを生成します。

このときリモートホストへの接続も行います("Proxy"を指定しない場合)。 opts には Telnet オブジェクトに設定する以下のオプションをハッシュで指定します。 オプションは省略時にはそれぞれ右に示すデフォルト値が適用されます。

"Host"       => "localhost"
"Port"       => 23
"Prompt"     => /[$%#>] \z/n
"Timeout"    => 10  # 接続待ちタイムアウト値(sec)
"Waittime"   => 0   # Prompt を待ち合わせる時間。この値を nil にしてはいけません
"Binmode"    => false
"Telnetmode" => true
"Output_log" => nil # ログの出力ファイル名
"Dump_log"   => nil # 出力ファイル名
"Proxy"      => nil # Net::Telnet または IO のオブジェクトを指定する

それぞれの意味は以下の通りです。

"Host" 接続するホストのホスト名もしくはIPアドレスを文字列で指定します。 デフォルトは "localhost" です。

"Port" 接続するポート番号です。デフォルトは23です。

"Binmode" これを偽にすると、改行を変換します。ホストへの LF は CRLF に変換され、ホストからの CRLF は LF に変換されます。 これを真にすると、変換をしません。この変換は Net::Telnet#binmode でも無効化できます。 ホストへ送る文字列の変換は Net::Telnet#putsNet::Telnet#puts に適用され、Net::Telnet#write には適用され ません。改行の変換に関しては telnet の SGA と BIN オプションにも 影響されることに注意してください。

"Prompt" コマンドライン上のプロンプトを表わす正規表現を指定します。 これはホストからの出力が終了し、ホストが新しい入力を 待っているかどうかを判断するために必要となります。

"Output_log" 接続状態メッセージや受け取った通信を記録する ファイル名を指定します。通常の Telnet セッションでは、ログには サーバ側からエコーされたクライアントからの入力を含みます。 エコーがないようなプロトコルの場合はクライアントからの入力は ログに含まれません。ログは指定したファイルの後ろに追記されます。 デフォルトではログは出力されません。

"Dump_log" "Output_log"と同様にログを出力するファイル名を指定します。 ただしこのログは hexdump 形式 (1行に 16byte の 16進文字列と、 対応する ASCII 文字列)。ログの各行の1行目には以下のような文字が 付加されます。 ステータスメッセージの前には「#」、 クライアントからサーバへの通信の前には「>」、 サーバからクライアントへの通信の前には「<」が出力されます。

生成されたインスタンスは TCPSocket あるいは "Proxy" で指定したオ ブジェクトが持つメソッドを受け付けます(SimpleDelegatorにより delegateされる).

"Telnetmode" これに真を指定した場合には、ホストからの通信 を解釈して telnet の特殊なバイト列をエスケープします。 Net::Telnet#putsNet::Telnet#print で送られる文字列も エスケープされます。Net::Telnet#write ではエスケープされません。 Net::Telnet を telnet プロトコル以外(SMPTやPOPなど)で利用したい 場合には、この値を偽にしてエスケープを止めてください。この 値は Net::Telnet#telnetmode でも指定できます。

"Timeout" 接続時やホストからのデータの読み込みを待つときに、 ここで指定した秒数でタイムアウト(TimeoutErrorが発生)します (Net::Telnet#loginNet::Telnet#waitforNet::Telnet#cmdで 有効になります)。デフォルトは10(秒)です。 falseを指定することでタイムアウトが無効になります。その場合には 接続できない場合には connect(2) で Errno::ETIMEOUT が出て 止まります(通常数分待つことになりますが)が、 それ以外の点ではホストからデータが来ないといつまでも待ちつづけることに なります。

"Waittime" は Net::Telnet#waitfor メソッドの "Waittime" のデフォ ルト値になります。Net::Telnet#waitfor メソッドのプロンプト待ち合わせの処理は、リモートホストからの出力が "Prompt" で指定した正規表現にマッチしてから "Waittime" 秒待っても出力がないかどうかで判断されます。 "Prompt" で指定した正規表現が本当のプロンプト以外の文字列にマッチしてしまう場合に この値が意味を持ちます。 Net::Telnet#waitfor メソッドは Net::Telnet#cmdNet::Telnet#login の内部でも使用されています。 デフォルトは0(秒)で、正規表現にマッチしたら直ちに待合せ処理に入ります。

"Proxy" ホストに直接接続するかわりにこれで指定したオブジェクトを 経由して通信します。IOオブジェクトか Net::Telnet のオブジェクト を指定しなければなりません。Net::Telnetオブジェクトを指定した場合には それが持っているソケットを経由して通信します。IOオブジェクトを 指定した場合には、それを直接使って通信します。それ以外のオブジェクトを 指定するとエラーとなります。

ブロックを指定した場合、サーバに繋ぐときに 表示されるステータスメッセージをそのブロックに渡します。 通常は、接続前に

"Trying #{ホスト名} ...\n"

接続後に

"Connected to #{ホスト名}.\n"

という文字列がブロックに渡されます。

[PARAM] opts:
各種オプションを指定します。全てのオプションをデフォルト値で指定したい場合には、{}(空のハッシュ)を指定してください。
[EXCEPTION] TimeoutError:
接続時にタイムアウトすると発生します。タイムアウトの時間はオプションで指定します。
class Net::Telnet