[ruby-dev:3443] telnet.rb
From:
WATANABE Tetsuya <tetsu@...>
Date:
1998-08-05 01:20:05 UTC
List:
ruby-dev #3443
わたなべてつやです。
telnet.rb ですが、パッケットが分かれてしまうことがあるようで
うまく login できないシステム(HP-UX 10.20)があるようです。
telnet サーバが HP-UX の場合にこの現象が起きました。確認した
スクリプトは次のものです。
------------------------------
require 'telnet'
hpshowgw = Telnet.new({ "Host" => "",
"Timeout" => 10,
"Prompt" => /[$%#>] $/
})
hpshowgw.login("", "") {|c| print c }
hpshowgw.cmd("ls") {|c| print c }
hpshowgw.close
exit
------------------------------
異常パターンのパケットトレースなのですが、「ff fd 24」(サー
バ)に対して、「ff」「fc 24」と答えています。
-------------------------------- TCP Header ----------------------------------
sport: telnet --> dport: 1050 flags: PUSH ACK
seq: 0x38a6ee01 urp: 0x0 chksum: 0xdada data len: 3
ack: 0x7c161182 win: 0x8000 optlen: 0
-------------------------------- TELNET --------------------------------------
0: ff fd 24 -- -- -- -- -- -- -- -- -- -- -- -- -- ..$.............
-------------------------------- TCP Header ----------------------------------
sport: 1050 --> dport: telnet flags: ACK
seq: 0x7c161182 urp: 0x0 chksum: 0x169 data len: 0
ack: 0x38a6ee04 win: 0x7d78 optlen: 0
-------------------------------- TCP Header ----------------------------------
sport: 1050 --> dport: telnet flags: PUSH ACK
seq: 0x7c161182 urp: 0x0 chksum: 0x25f data len: 1
ack: 0x38a6ee04 win: 0x7d78 optlen: 0
-------------------------------- TELNET --------------------------------------
0: ff -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ................
-------------------------------- TCP Header ----------------------------------
sport: telnet --> dport: 1050 flags: ACK
seq: 0x38a6ee04 urp: 0x0 chksum: 0xfedf data len: 0
ack: 0x7c161183 win: 0x8000 optlen: 0
-------------------------------- TCP Header ----------------------------------
sport: 1050 --> dport: telnet flags: PUSH ACK
seq: 0x7c161183 urp: 0x0 chksum: 0x539 data len: 2
ack: 0x38a6ee04 win: 0x7d78 optlen: 0
-------------------------------- TELNET --------------------------------------
0: fc 24 -- -- -- -- -- -- -- -- -- -- -- -- -- -- .$..............
ということで、次のようなパッチを行い、動作がうまくいくことを
確認しました。採用いただけるようにお願いします。
------------------------------
--- /t/lib/ruby/telnet.rb Wed Jul 15 15:39:17 1998
+++ newtelnet.rb Wed Aug 5 10:06:11 1998
@@ -166,7 +166,7 @@
# respond to "IAC DO x" or "IAC DON'T x" with "IAC WON'T x"
str.gsub!(/([^#{IAC}])?#{IAC}[#{DO}#{DONT}](.|\n)/no){
- @sock << IAC << WONT << $2
+ @sock << IAC + WONT + $2
$1
}
------------------------------
# まつもとさん、風邪大丈夫ですか?
--
WATANABE Tetsuya HP Japan
e-mail tetsu@jpn.hp.com