人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Ruby の Net::Telnet に関しての質問です。
telnetできなかった時の処理を書きたいのですが、telnetできなかった場合、
/usr/lib/ruby/1.8/net/telnet.rb:352:in `initialize': Connection refused - connect(2) (Errno::ECONNREFUSED)
from /usr/lib/ruby/1.8/net/telnet.rb:352:in `open'
from /usr/lib/ruby/1.8/net/telnet.rb:352:in `initialize'
from /usr/lib/ruby/1.8/timeout.rb:62:in `timeout' 以下略
のようなエラーで、プログラムが止まってしまいます。
もしくは、
/usr/lib/ruby/1.8/net/telnet.rb:557:in `waitfor': timed out while waiting for more data (Timeout::Error)
from /usr/lib/ruby/1.8/net/telnet.rb:742:in `login'
from telnet-test-test01.rb:13
のようなエラーです。(これは恐らくユーザ名とパスワードのミス)

if (telnetに失敗した場合)
print "telnetできませんでした"
end
のような処理を書くやり方を教えて下さい。

ちなみに Net::Telnet は現在以下のような書き方をしています。
telnet = Net::Telnet.new("Host" => "192.168.1.1") {|c| print c}
telnet.login("username", "password") {|c| print c}

よろしくお願い致します。

●質問者: RESTfulJapan
●カテゴリ:コンピュータ インターネット
✍キーワード:.new CONNECT LIB LOGiN MORE
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● mattn
●35ポイント ベストアンサー

begin/rescueでエラーハンドリングします。

begin
 telnet = Net::Telnet.new("Host" => "192.168.1.1") {|c| print c}
 telnet.login("username", "password") {|c| print c}
rescue Errno::ECONNREFUSED
 # ここでエラー処理
end
if (telnetに失敗した場合)
 print "telnetできませんでした"
end

としたい場合は上記のbegin/rescueを関数内に収め、rescueでfalseを返す物を作れば良いかと思います。


2 ● JULY
●35ポイント

逆引きRuby - 例外

例外処理で書くのが普通かな。

begin
 telnet = Net::Telnet.new("Host" => "192.168.1.1") {|c| print c}
 telnet.login("username", "password") {|c| print c}
rescue
 print "Failed\n"
end
◎質問者からの返答

ありがとうございます!

大変助かります。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ