1

ハッキングされたクライアントの Wordpress インストールを定期的にクリーンアップし、サイトがハッキングされた場所を追跡するのに役立つ一連のスクリプトを作成しました。私が定期的に使用している 1 つのコード スニペットは Ubuntu で問題なく動作しましたが、金曜日に Fedora に切り替えてからは、期待どおりに動作しています。コマンドは次のとおりです。

grep -Iri --exclude "*.js" "eval\s*(" * | grep -rivf ~/safeevals.txt >../foundevals.txt;

起こるはずのこと (そして、私が Ubuntu を使用していたときに実際に起こったこと): eval() 関数のすべての出現に対して、JavaScript インクルードを除くすべての非バイナリ ファイルを grep し、行ごとに否定的な一致を実行します。バニラ インストールの Wordpress での eval() 関数のすべての既知の発生に対して (そのパターンは ~/safeevals.txt にあります)。

実際に何が起こっているか: 最初の部分は正常に動作しています。個別に実行したところ、インストールで eval() のすべてのインスタンスが見つかりました。ただし、これらの結果を検索する代わりに、パイプがすべてのファイルを再検索した後、~/safeevals.txt の否定的な一致を返します (つまり、インストール内のすべてのファイルのほぼすべての行)。

2 番目の grep がパイプされたデータに作用しない理由、またはそれを修正するために何をする必要があるか考えていますか? ありがとう。

-マイケル

4

1 に答える 1

3

私のDebianボックスでテストしたばかりです:どうやら、grep -rデフォルトの引数を.. その行動が正しいかどうか、私は本当に疑問に思っています。-rとにかく、 2番目のコマンドからオプションを削除grepすると修正されると思います。

編集: $PWD への rgrep のデフォルト設定は、grep の最近の変更のようです。unix.stackexchangeに関するこのディスカッションと、上流の grep コード リポジトリのコミットへのリンクを参照してください。

于 2013-11-05T22:48:20.780 に答える