Я использую Python Popen, чтобы выполнить команду и записать результат в переменную:
av_proc = Popen(
[
CLAMSCAN_PATH,
"--stdout",
"-d",
AV_DEFINITION_PATH,
blob_full_path
],
stderr=STDOUT,
stdout=PIPE,
env=av_env
)
communicateArray = av_proc.communicate()
claimav_output = communicateArray[0].decode('utf-8')
logging.info("clamAV output {}".format(claimav_output))
logging.info("clamAV output Type {}".format(type(claimav_output)))
Печатные строки журнала:
[3/1/19 6:38:01 AM] clamAV output LibClamAV Warning: **************************************************
[3/1/19 6:38:01 AM] LibClamAV Warning: *** The virus database is older than 7 days! ***
[3/1/19 6:38:01 AM] LibClamAV Warning: *** Please update it as soon as possible. ***
[3/1/19 6:38:01 AM] LibClamAV Warning: **************************************************
[3/1/19 6:38:01 AM] /home/admin/Desktop/blob_folder/test2: Worm.Mydoom.I FOUND
[3/1/19 6:49:28 AM] clamAV output Type <class 'str'>
Моя цель - извлечьИмя вируса в этом выводе, которое является 'Worm.Mydoom.I'.
Выход всегда будет в следующем формате:
Filepath: Detection_Name FOUND
Я написал следующий скрипт на Python для извлечения имени обнаружения:
matchObj = re.match(r'(?<=:\s)\S+(?=\s+FOUND)', claimav_output)
logging.info("matchObj Type {}".format(type(matchObj)))
logging.info(matchObj.group())
logging.info(matchObj)
К сожалению, это не работает.может кто-то указать мне на ошибку в моем коде.Вот ошибка, которую я вижу в логах:
[3/1/19 6:38:01 AM] clamAV output Type <class 'str'>
[3/1/19 6:38:01 AM] CLAIMAV Parsing claimav output to extract any scan resullt
[3/1/19 6:38:01 AM] matchObj Type <class 'NoneType'>
[3/1/19 6:38:01 AM] 'NoneType' object has no attribute 'group'
[3/1/19 6:38:01 AM] Something went wrong