2016-09-03 6 views
1

キーボード入力を読み込んで変数を割り当て、Snortログで満たされた現在のディレクトリ内で固定文字列grepを再帰的に実行し、自動的に実行するperlスクリプトまたはbashスクリプトを作成します。一致したファイルをtcpdumpし、その出力をgrepし、指定された行を端末に出力します。どのようにこれがうまくいくのか、誰にも良い考えがありますか?ここでPerlスクリプトから文字列と印刷用のgrepディレクトリへ

は、私は、スクリプトから必要な方法論の例を次に示します。

ステップ1:キーボード入力を読み込み、文字列という名前の変数に割り当てます。

ステップ2コマンド:grepの-Fr "$文字列"

ステップ2出力:snort.log.1470609906は

ステップ3のコマンドと一致する:tcpdumpの-r snort.log.1470609906を| grepの-F "$文字列" C-10

ステップ3出力:

s="google.com" 
grep -Frl "$s" | \ 
    while IFS= read -r x; do 
     tcpdump -r "$x" | grep -F "$s" -C10 
    done 
+2

なぜPerlですか?なぜgrepを使用しないのですか? – melpomene

+1

プロセスを自動化しようとしています。私は、perl grep.pl "google.com"のようなものを入力して、すべてが舞台裏で動作するようにしたいと考えています。 – CodingNovice

答えて

2

ここにいることを行い、いくつかのbashのコードですシェルでちょうど十分簡単に​​:

str="google.com" 
find . -type f -name 'snort.log.*' -exec grep -FlZ "$str" {} + | 
xargs -0 -I {} sh -c 'tcpdump -r "{}" | grep -F '"$str"' -C10' 
+0

ありがとう非常にredneb。グロップする前に入力に基づいて "google.com"変数を作成する方法はありますか? – CodingNovice

+0

@perlnewb私は自分のコードを更新しました。 – redneb

+0

私はキーボード入力から割り当てられた変数を意味しました。私は次のようにしましたが、ファイル名として入力した文字列を読み取ろうとしているようです。#!/ bin/bash read -p "検索する固定文字列を入力してください:"文字列 grep -Frl "$ string" | \ \t IFS =読み取り-r xの間。 do \t \t tcpdump -r "$ x" grep -F "$ string" -C 10 \t done – CodingNovice

0

はperlの約IDKのが、あなたはそれを行うことができます。

Snort log

+1

これはまさに私がエドを必要としていたものです。ありがとう! – CodingNovice

関連する問題