2014-11-10 2 views
0

Я работаю на техническом столе для своего университета. Люди всегда приходят с globs вредоносных программ на своих macbooks (я думал, что Mac не может заразиться вирусом?). Обычный процесс - удаление плохих приложений и сортировка через файлы системы/библиотеки, чтобы найти связанные с ними plists или дополнительные плохие вещи. Этот процесс может занять много времени, поэтому я решил попробовать создать автоматизированный сценарий для удаления файлов. Я не очень хорошо знаком с bash, но это будет похоже на это.Разработка сценария Bash для удаления вредоносных программ

Проблема заключается в определении произвольной переменной, не уверенной, как это сделать.

#!/bin/bash 
TR = malware_quary 
sudo find/-name malware_quary | 
while read filename 
do 
    if(malware_quary = "*mackeeper*") 
     read -p "Are you sure you want to remove " +malware_quary+"? " -n 1 -r 
     echo 
     if [[ ! $REPLY =~ ^[Yy]$ ]] 
     then 
      cat malware_quary < ~/Desktop/log.txt 
     rm malware_quary 
     fi 
done 

Я буду продолжать добавлять, если условия для различных других вредоносных программ (т.е. трубопровода, genieo и т.д ..), пока не построили обширный файл журнала, где я могу просто запустить все результаты против него.

+2

Есть нагрузка синтаксические ошибки в вашем скрипте. Взгляните на http://shellcheck.net –

+0

Вы можете немного обмануть и использовать [Batsh] (https://github.com/BYVoid/Batsh). – GoBusto

ответ

0

Если вы не знакомы с Башем, это будет боль. Я лично рекомендовал бы сделать это на Python из-за более низкой кривой обучения и множества доступных модулей. У вас будет больше волос, когда все будет сказано и сделано, и это более портативно, чем bash.

Чтобы ответить на ваш вопрос, хотя, вы можете определить переменную как так (без пробелов):

myvar="Some value"; 

echo "I just set myvar to $myvar"; 

Быстрый сценарий Python может работать следующим образом:

import os 
files = ['file1', 'file2', 'file3'] 

for f in files: 
    print "Searching for %s" % f 
    if os.path.exists(os.path.abspath(f)): 
     print "Found %s!" % f 
     # Call function to remove (os.remove, os.rmdir, etc) 
    else: 
     print "File %s not found" % f 
+0

Удивительный! Большое спасибо. Я собираюсь продолжать возиться с bash, и если я не смогу его запустить, я планирую идти по этому маршруту. – redcrash

+0

Есть ли способ сделать что-то подобное? Файлы = glob.glob (['* file1 *', '* file2 *', '* file3 *']) На обеих сторонах файлов есть звездочки. – redcrash

+0

https://docs.python.org/2/library/glob.html Если звездочки являются подстановочными знаками, используйте их как есть. Если они должны быть фактическими персонажами, убедитесь, что вы сбежали от них сначала '' \ * filename \ * ''. –

Смежные вопросы