2017-08-31 14 views
1

私はperlアプリケーションを持っています。私はいくつかのファイルをウイルススキャンする必要があります。Perl、ClamAV、ウイルスのストリームをスキャンする

私はClamAVモジュールとFile :: Scan :: ClamAVモジュールを使用できます。 ディスクに保存されているファイルをスキャンする必要がある場合や、ファイルがメモリにロードされている場合(何らかの変数がある場合)に動作します。

しかし、私のアプリにはフルファイルがありません。それは入力ストリーム(オープンソケット)のみを持っています。このソケットから読み取り、他の出力ストリームに書き込みます。

ClamAVで何とかストリームを渡すことはできますか?私の入力ストリームをclamavに転送し、そこからデータを読み込むのが好きですが、最後にスキャンの結果を得るのですか?

答えて

0

モジュールClamAV::Clientは、scan_stream methodでストリームをスキャンする手段を提供しているようです。私は(まだ)それを試していない

use ClamAV::Client; 

# Try using socket options from clamd.conf, or use default socket: 
my $scanner = ClamAV::Client->new(); 

# Scan a stream, i.e. read from an I/O handle: 
my $result = $scanner->scan_stream($handle); 

# $result is the name of a virus signature, or undef 
die "infected" if $result; 

注:ここでは

は、私は作品がドキュメントから一緒に困惑と考えてみましょう。

+0

私のClamAVがどこから聞いているのか分かりません。上記の私の例は、デフォルトのソケットですが、それは私のためには動作しません。私はTCP上でそれを設定していないし、それを壊したくない。だから、テスト、申し訳ありません。 – simbabque

+0

私はそれを試してみるつもりです。 –

+1

これは動作します。しかし私の場合、私はsocket_name => '/var/run/clamd.scan/clamd.sock'をクライアントのコンストラクタで設定しなければなりませんでした –

関連する問題