雑記/2008-03-27

雑記

rubyでclamdと通信 bookmark

以下、即興ですがclamavをデーモンで動作させた時に
rubyでリモートから利用するためのプログラムです。
(例外処理とかは気にしないで只書いただけのソースです)
後ほど、ライブラリとして利用できる形にしたいと思います。

  1. #!/usr/local/bin/ruby -Ku
  2.  
  3. require( 'socket' );
  4.  
  5. recv     = nil;
  6. TCPSocket.open( ARGV[ 0 ] , ARGV[ 1 ] ) { | socket |
  7.                                 socket.sync     = true;
  8.                                 socket.print "SESSION\r\n";
  9.                                 socket.print "PING\r\n";
  10.                                 socket.print "STREAM\r\n";
  11.                                 socket.print "END\r\n";
  12.                                 recv = socket.sysread( 256 );
  13.                                 if( recv.chomp! == "PONG" )
  14.                                   recv     = socket.sysread( 256 );
  15.                                   if( recv.chomp! =~ /PORT (\d+)/ )
  16.                                     TCPSocket.open( ARGV[ 0 ] , $1 ) { | inSocket |
  17.                                                                        inSocket.binmode();
  18.                                                                        data     = nil;
  19.                                                                        File.open( ARGV[ 2 ] ) { | file |
  20.                                                                                  file.binmode();
  21.                                                                                  data     = file.read;
  22.                                                                                               }
  23.                                                                        inSocket.puts( data );
  24.                                                                      }
  25.                                     recv     = socket.sysread( 1024 );
  26.                                     if( recv.chomp! =~ /^stream: (.+)$/ )
  27.                                       print $1,"\n";
  28.                                     end
  29.                                   end
  30.                                 end
  31.  
  32.                               }
 

実行結果
[ken@hoge ruby]$ ./clamavclient.rb hoge01 3310 ./eicar.com
Eicar-Test-Signature FOUND

 
 

カテゴリ: 雑記 プログラム