<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>chen248283935 (饕餮之怒)</title>
    <link>https://ruby-china.org/chen248283935</link>
    <description/>
    <language>en-us</language>
    <item>
      <title>ruby telnet 如何进行 Yes/No 这种条件的判断</title>
      <description>&lt;blockquote&gt;
&lt;p&gt;Login authentication&lt;/p&gt;

&lt;p&gt;(Username|Password):&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;如上，Username 的地方可能是 Username，也有可能直接是 Password
原来想用一个正则表达式，然后使用 waitfor 进行匹配，如下图&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;reg_input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/(user(.*?):|id)|(password|mima|login:)/i&lt;/span&gt;
&lt;span class="n"&gt;telnet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Net&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="no"&gt;Telnet&lt;/span&gt;&lt;span class="o"&gt;::&lt;/span&gt;&lt;span class="n"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Host"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;ip&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   &lt;span class="s2"&gt;"Timeout"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"Port"&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt; &lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;input&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;telnet&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;waitfor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reg_input&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="n"&gt;tip&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;
     &lt;span class="n"&gt;information&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;tip&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt;   
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后使用$1,$2看是否匹配，来选择不同的分支。
发现匹配中$1,$2都为 nil，应该如何区分 telnet 中出现的不同情况呢？&lt;/p&gt;</description>
      <author>chen248283935</author>
      <pubDate>Wed, 04 Sep 2013 11:35:12 +0800</pubDate>
      <link>https://ruby-china.org/topics/13878</link>
      <guid>https://ruby-china.org/topics/13878</guid>
    </item>
    <item>
      <title>关于 ruby 匹配正则的问题</title>
      <description>&lt;blockquote&gt;
&lt;p&gt;Nmap scan report for 58.247.129.154
Host is up (0.10s latency).
Not shown: 86 closed ports
PORT     STATE    SERVICE
21/tcp   open     ftp
22/tcp   open     ssh
23/tcp   open     telnet
25/tcp   filtered smtp
80/tcp   filtered http
110/tcp  filtered pop3
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
443/tcp  filtered https
445/tcp  filtered microsoft-ds
3128/tcp filtered squid-http
3389/tcp filtered ms-wbt-server
5800/tcp filtered vnc-http
5900/tcp filtered vnc&lt;/p&gt;

&lt;p&gt;Nmap scan report for 119.6.85.71
Host is up (0.096s latency).
Not shown: 89 closed ports
PORT     STATE    SERVICE
22/tcp   open     ssh&lt;br&gt;
23/tcp   open     telnet
80/tcp   open     http 
135/tcp  filtered msrpc
139/tcp  filtered netbios-ssn
443/tcp  open     https
445/tcp  filtered microsoft-ds
3128/tcp filtered squid-http
3389/tcp filtered ms-wbt-server
5800/tcp filtered vnc-http
5900/tcp filtered vnc
Device type: WAP
Running: Cisco IOS 12.X 
OS CPE: cpe:/h:cisco:aironet_ap1250 cpe:/o:cisco:ios:12.4
OS details: Cisco Aironet 1250 WAP (IOS 12.4)
Network Distance: 12 hops&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;关于以上的文本，想匹配出每一个 IP 的信息，然后找出开放端口的情况，存在一个数组里面，最后想要匹配出来的形式如下&lt;/p&gt;

&lt;p&gt;[ [119.6.85.71],[[21],[22],[23]]]   ,    [119.6.85.71], [ [22],[23],[80],[443] ] ]&lt;/p&gt;

&lt;p&gt;自己使用 2 次 scan 配合 reg 实现了这种形式。&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;flog&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;File&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"temp.txt"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;log&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;IO&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;read&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;flog&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;force_encoding&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"gb2312"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;reg&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/(\d+\.\d+\.\d+\.\d+)(.*?)(?=\d+\.\d+\.\d+\.\d+|\z)/im&lt;/span&gt;
&lt;span class="n"&gt;reg_port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sr"&gt;/(\d+)\/(tcp|udp)\s+open\s+(\w+)/i&lt;/span&gt;
&lt;span class="n"&gt;format_logs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;scan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reg&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;ip_log&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
    &lt;span class="n"&gt;ip_log&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;scan&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;reg_port&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;each&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt;&lt;span class="n"&gt;port&lt;/span&gt;&lt;span class="o"&gt;|&lt;/span&gt;
        &lt;span class="nb"&gt;p&lt;/span&gt; &lt;span class="n"&gt;port&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;   
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但觉得 2 次 scan,reg 的效率太低了，有一次 scan，然后书写一个 reg 实现吗？&lt;/p&gt;</description>
      <author>chen248283935</author>
      <pubDate>Fri, 30 Aug 2013 14:59:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/13753</link>
      <guid>https://ruby-china.org/topics/13753</guid>
    </item>
    <item>
      <title>哈希中默认值为数组,使用变量作为 key,出现查找不到的情况</title>
      <description>&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;hash&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="no"&gt;Hash&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;new&lt;/span&gt;&lt;span class="p"&gt;([])&lt;/span&gt;
&lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;"test"&lt;/span&gt;

&lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;to_s&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;  &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="s2"&gt;"------------------------------&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nb"&gt;print&lt;/span&gt; &lt;span class="nb"&gt;hash&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;结果
[1, 22, 3, 4, 5]&lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;{}&lt;/p&gt;

&lt;p&gt;为什么单纯的查看 hash 中没有这个值，要指定 hash[key] 才能看到结果？&lt;/p&gt;</description>
      <author>chen248283935</author>
      <pubDate>Wed, 28 Aug 2013 11:46:36 +0800</pubDate>
      <link>https://ruby-china.org/topics/13690</link>
      <guid>https://ruby-china.org/topics/13690</guid>
    </item>
    <item>
      <title>如何知道 ruby 中某一个函数抛出的所有异常？</title>
      <description>&lt;p&gt;在官方文档中有关于这一块的介绍吗？没有找到&lt;/p&gt;</description>
      <author>chen248283935</author>
      <pubDate>Mon, 26 Aug 2013 02:41:31 +0800</pubDate>
      <link>https://ruby-china.org/topics/13619</link>
      <guid>https://ruby-china.org/topics/13619</guid>
    </item>
    <item>
      <title>ruby 中 OptionParser 如何指定多个字母代表一个参数</title>
      <description>&lt;p&gt;想用 -sB 代表百度，-sG 代表 google，思路如下，实际上有错误。
使用 OptionParser 应该如何实现呢&lt;/p&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:sB&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
&lt;span class="n"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'-sB'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'--baidu'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'search with baidu'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
     &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:sB&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt; 

&lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:sG&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;false&lt;/span&gt;
&lt;span class="n"&gt;opts&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'-sG'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'--google'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s1"&gt;'search with google'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt;
     &lt;span class="n"&gt;options&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="ss"&gt;:sG&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kp"&gt;true&lt;/span&gt;
&lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;</description>
      <author>chen248283935</author>
      <pubDate>Tue, 06 Aug 2013 14:37:07 +0800</pubDate>
      <link>https://ruby-china.org/topics/13098</link>
      <guid>https://ruby-china.org/topics/13098</guid>
    </item>
    <item>
      <title>读取文件中的 url 地址出现 EOFError</title>
      <description>&lt;p&gt;文件存放 url 地址，依次读取，正常的测试：输出每一行，是没问题的。
但采用下述代码在 41 行的时候出现 EOFError 错误
查看了一下，uri 和 http 建立正常
在 response = http.request request 出错&lt;/p&gt;

&lt;p&gt;是什么原因呢&lt;/p&gt;

&lt;p&gt;ruby:2.0.0.0p&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@file.each_line do |line|
        count +=1 
        puts "count:#{count} #{line}"
        url = line.chomp
        uri=URI(url)
        puts url.unpack("H*")
        uri += "/web.config"
        begin
        http = Net::HTTP.start(uri.host,uri.port)
        request = Net::HTTP::Get.new uri 
        response = http.request request
        status = response.code
        if( "404" != status ) then
                puts "#{status} || #{uri}"
        end 
        rescue Errno::ETIMEDOUT
                puts "error:ETIMEOUT"
        end 
end 

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;错误提示：&lt;/p&gt;

&lt;p&gt;count:41 &lt;a href="http://www.ahkytb.com" rel="nofollow" target="_blank"&gt;http://www.ahkytb.com&lt;/a&gt;
687474703a2f2f7777772e61686b7974622e636f6d
/home/april/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/2.0.0/net/protocol.rb:153:in `read_nonblock': end of file reached (EOFError)&lt;/p&gt;</description>
      <author>chen248283935</author>
      <pubDate>Tue, 30 Jul 2013 10:36:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/12891</link>
      <guid>https://ruby-china.org/topics/12891</guid>
    </item>
  </channel>
</rss>
