Udev правила запуска скрипта clamscan при вставке USB-диска - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь настроить автоматическое сканирование накопителя (clamscan) при вставке внешнего USB-накопителя, используя правила udev и сценарии bash a raspberry pi.

Я написал следующие правила в / lib / udev / rules.d / 11-myrules.rules :

KERNEL=="sd*[!0-9]", ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/bin/my_usb_inserted.sh"
KERNEL=="sd*[!0-9]", ACTION=="remove", SUBSYSTEMS=="usb", RUN+="/usr/bin/turn_off_leds.sh &"

/ usr / bin /my_usb_inserted.sh

#!/bin/bash
/usr/bin/my_clamscan.sh & exit

/ usr / bin / my_clamscan.sh

#!/bin/bash
sleep 5

file="/tmp/clamscan.log"
export DISPLAY=":0.0"

if [ -f $file ]; then
        rm -f $file
fi
date > $file
echo "----------- START CLAMSCAN -----------" >> $file
/usr/bin/clamscan -r -i /media/pi/ >> $file 

if [ $? -eq 0 ]; then
    echo "----------- NO VIRUS FOUND -----------" >> $file
elif [ $? -eq 1 ]; then
    echo "----------- VIRUS FOUND -----------" >> $file
else
    echo "----------- ERRORS OCCURED -----------" >> $file
fi

exit 0

Сценарий хорошо выполняется, когда я вставляю USB-накопитель,Проблема в том, что при запуске сканирования USB-накопитель еще не подключен.Я вижу диск, смонтированный сразу после завершения скрипта.Это наверняка проблема правил Udev, но я понятия не имею, как это исправить.Я попытался добавить sleep 5 и запустить скрипт в фоновом режиме, чтобы разрешить монтирование USB-накопителя до запуска clamscan, но он не работает.

Когда я вставляю флешку, я вижу:

clamscan.log

Wed Oct  3 14:12:49 CEST 2018
----------- START CLAMSCAN -----------

udevadm monitor

monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent
KERNEL[743.611572] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2 (usb)
KERNEL[743.611812] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)
KERNEL[743.612522] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0 (scsi)
KERNEL[743.612794] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/scsi_host/host0 (scsi_host)
UDEV  [743.640904] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2 (usb)
UDEV  [743.648863] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)
UDEV  [743.654294] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0 (scsi)
UDEV  [743.660319] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/scsi_host/host0 (scsi_host)
KERNEL[744.631052] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0 (scsi)
KERNEL[744.631237] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0 (scsi)
KERNEL[744.631352] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0 (scsi_disk)
KERNEL[744.631492] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0 (scsi_device)
KERNEL[744.631896] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/scsi_generic/sg0 (scsi_generic)
KERNEL[744.633008] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0 (bsg)
KERNEL[744.634633] add      /devices/virtual/bdi/8:0 (bdi)
KERNEL[744.639142] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/block/sda (block)
UDEV  [744.640478] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0 (scsi)
UDEV  [744.642551] add      /devices/virtual/bdi/8:0 (bdi)
UDEV  [744.649485] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0 (scsi)
UDEV  [744.658436] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0 (scsi_device)
UDEV  [744.659061] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0 (scsi_disk)
UDEV  [744.663760] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/scsi_generic/sg0 (scsi_generic)
UDEV  [744.665498] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0 (bsg)

И когда сканирование завершено:

clamscan.log

Wed Oct  3 14:12:49 CEST 2018
----------- START CLAMSCAN -----------

----------- SCAN SUMMARY -----------
Known viruses: 6663263
Engine version: 0.100.0
Scanned directories: 1
Scanned files: 0
Infected files: 0
Data scanned: 0.00 MB
Data read: 0.00 MB (ratio 0.00:1)
Time: 78.549 sec (1 m 18 s)
----------- NO VIRUS FOUND -----------

PS: Clamscan должен найти вирус, так как у меня есть тествирус на моей флешке, он просто не находит вирус, потому что / media / pi не содержит точку монтирования флешки.Я запускаю ls в / media / pi во время работы clamscan, и эта папка явно пуста.После завершения clamscan диск монтируется, и / media / pi содержит содержимое моей флешки.

Затем я вижу диск, установленный в udevadm monitor

UDEV  [828.642230] add      /devices/platform/soc/3f980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/host0/target0:0:0/0:0:0:0/block/sda (block)
...