salt win8 grains.item osfullname
win8:
----------
osfullname:
Microsoft Windows 8.1 Enterprise Evaluation
salt win8 cmd.run shell='powershell' '& "C:\\Program Files\\ClamAV-x64\clamdscan.exe" -V'
win8:
ClamAV 0.98.7/21375/Tue Feb 16 05:36:54 2016
clamd
работает на виртуальной машине Ubuntu. Вот конфигурация клиента Windows (сетевой режим):
TCPAddr <clamd.server.ip.address>
TCPSocket 3310
User Administrator
и я хотел бы сканировать только файлы за последние 24 часа, используя что-то вроде этого:
salt win8 cmd.run shell='powershell' 'Get-ChildItem "C:\\Program Files\\ClamAV-x64" -Recurse | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) } | % { $_.FullName }'
win8:
C:\Program Files\ClamAV-x64\eicar.com.txt
C:\Program Files\ClamAV-x64\file_to_scan.txt
C:\Program Files\ClamAV-x64\report.txt
C:\Program Files\ClamAV-x64\scan.ps1
C:\Program Files\ClamAV-x64\sendmail.ps1
затем запишите этот список в файл:
| Out-File "C:\Program Files\ClamAV-x64\file_to_scan.txt"
и использовать -f
вариант:
salt win8 cmd.run shell='powershell' '& "C:\\Program Files\\ClamAV-x64\clamdscan.exe" -h'
win8:
ClamAV Daemon Client 0.99
By The ClamAV Team: http://www.clamav.net/about.html#credits
(C) 2007-2015 Cisco Systems, Inc.
--file-list=FILE -f FILE Scan files from FILE
но я получил эту ошибку при сканировании:
salt win8 cmd.run shell='powershell' '& "C:\\Program Files\\ClamAV-x64\clamdscan.exe" -f "C:\\Program Files\\ClamAV-x64\file_to_scan.txt"'
win8:
----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.000 sec (0 m 0 s)
ERROR: Can't access file C:\Windows\system32\config\systemprofile\ÿþC
Он всегда говорил, что не может получить доступ к странному файлу с именем ÿþC
в текущем рабочем каталоге:
salt win8 cmd.run shell='powershell' 'cd \; & "C:\\Program Files\\ClamAV-x64\clamdscan.exe" -f "C:\\Program Files\\ClamAV-x64\file_to_scan.txt"'
win8:
----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.000 sec (0 m 0 s)
ERROR: Can't access file C:\\ÿþC
Что ÿþC
? И почему он сказал это?
PS: Клиент OS X работал нормально:
clamdscan -f file_to_scan
/Users/quanta/Downloads/eicar.com.txt: Eicar-Test-Signature FOUND
----------- SCAN SUMMARY -----------
Infected files: 1
Time: 4.359 sec (0 m 4 s)
Вт 16 фев 22:54:26 ICT 2016
Получил другое странное имя файла при запуске непосредственно на виртуальной машине Windows:
PS C:\Windows\system32> & 'C:\Program Files\ClamAV-x64\clamdscan.exe' -f 'C:\Program Files\ClamAV-x64\file_to_scan.txt'
ERROR: Can't access file C:\Windows\system32\ ■C
----------- SCAN SUMMARY -----------
Infected files: 0
Total errors: 1
Time: 0.000 sec (0 m 0 s)
Что
ÿþC
?
ÿþ
это представление BOM (метка порядка байтов) в кодировке UTF-16 (LE).
И почему он сказал это?
Так как Out-File
по умолчанию использует кодировку текущей кодовой страницы системы ANSI:
-Кодирование
Задает тип кодировки символов, используемый в файле. Допустимые значения: «Unicode», «UTF7», «UTF8», «UTF32», «ASCII», «BigEndianUnicode», «Default» и «OEM». «Юникод» - это значение по умолчанию. «По умолчанию» использует кодировку текущей кодовой страницы системы ANSI.
Решение использовать -Encoding ASCII
чтобы избавиться от искаженных символов:
"C:\\Program Files\\ClamAV-x64" -Recurse | Where-Object { $_.LastWriteTime -gt (Get-Date).AddDays(-1) } | % { $_.FullName } | Out-File "C:\Program Files\ClamAV-x64\file_to_scan.txt" -Encoding ASCII'
Files\\ClamAV-x64'; & 'C:\\Program Files\\ClamAV-x64\clamdscan.exe' -f .\file_to_scan.txt"
win8:
C:\Program Files\ClamAV-x64\eicar.com.txt: Eicar-Test-Signature FOUND
C:\Program Files\ClamAV-x64\file_to_scan.txt: OK
C:\Program Files\ClamAV-x64\report.txt: OK
C:\Program Files\ClamAV-x64\scan.ps1: OK
C:\Program Files\ClamAV-x64\sendmail.ps1: OK
----------- SCAN SUMMARY -----------
Infected files: 1
Time: 5.845 sec (0 m 5 s)
ERROR: Minions returned with non-zero exit code