วิธีการสแกนที่เสียบเข้ากับอุปกรณ์เก็บข้อมูล usb โดยอัตโนมัติด้วย clamav


13

ฉันต้องการทำการสแกนไวรัสอัตโนมัติกับอุปกรณ์ usb ใด ๆ ที่ใช้ ClamAV ฉันใช้ Ubuntu 12.04

สิ่งที่ใกล้เคียงที่สุดที่ฉันพบคือ:

อันแรกไม่ทำงานสำหรับฉันและอันที่สองดูเหมือนว่าจะกำหนดเป้าหมายอุปกรณ์ที่รู้จัก

มีบทช่วยสอนเกี่ยวกับสิ่งที่ฉันพลาดหรือไม่? หรือฉันสามารถขอความช่วยเหลือเกี่ยวกับudevกฎที่ใช้กับอุปกรณ์เก็บข้อมูล usb ที่เพิ่มเข้ามาได้ไหม? ดูเหมือนว่าจะไม่มีอะไรทำในปัจจุบัน


คุณสามารถเขียนกฎ udev สำหรับสิ่งนี้
Barafu Albino

ลองดูอันนี้: superuser.com/questions/305723/…โดยที่ RUN + = (ตำแหน่งของไฟล์) เป็นวิธีการอ่านที่ฉันเชื่อ
ไม่มีเวลา

คำตอบ:


5

นี่คือสคริปต์อัตโนมัติ เพียงแค่เรียกใช้เป็นรูต /usr/bin/doOnUSBinsertคุณสามารถเปลี่ยนคำสั่งดำเนินการโดยการแก้ไข

#!/bin/bash
#doOnUSBinsert_0.2.sh
#Author : Totti
# Make it executable by running 'sudo chmod  x doOnUSBinsert_0.2.sh'


if ! [ -f /etc/udev/rules.d/80-doOnUSBinsert.rules ]
then        # rule not added
   cp "$0" /usr/bin/doOnUSBinsert
   chmod u x /usr/bin/doOnUSBinsert

#   echo 'SUBSYSTEM=="usb", ACTION=="add", RUN ="/path/to/script.sh"' | sudo tee     /etc/udev/rules.d/80-clamscan.rules
   echo 'SUBSYSTEM=="usb", ACTION=="add", RUN ="/usr/bin/doOnUSBinsert & "' | tee     /etc/udev/rules.d/80-doOnUSBinsert.rules
   if  [ $? -eq 0 ]
   then
     echo 'Rule Successfully added. See file "/usr/bin/doOnUSBinsert" if you wish to edit the command'
     exit 0
    else
     echo 'ERROR while adding rule'
     exit 1
   fi
fi



lfile="/tmp/doOnUSBinsert.log"     # udev
lfile2="/tmp/clamscanFromUdev.log"   # clamscan
lfile3="/tmp/doOnUSBinsert_mount.log"   # mount


main ()
{
sleep 12  # let the partitions to mount

   #cat /proc/$$/environ | tr '�' 'n' >> /tmp/udevEnvirn.txt
echo "found $ID_SERIAL"   >> "$lfile"
  cat /etc/mtab | grep "^$part_c"   >> "$lfile.3"

if [ "$ID_SERIAL"x = 'x' ]
then
 echo "Exiting on empty ID_SERIAL"   >> "$lfile"
 exit 1
fi

#Eg: ID_SERIAL --> /dev/disk/by-id/usb-sandisk....42343254343543
#i=0
echo 'searching partitions'   >> "$lfile"

for partitionPath in  $( find /dev/disk/by-id/ -name "*$ID_SERIAL*part*" )
do
  echo "current partition = $partitionPath"   >> "$lfile"
 # part[i  ]="$( readlink -f "$partition" )"        # Eg Output: /dev/sdb1     , /dev/sdb2
  part_c="$( readlink -f $partitionPath )"   
  mpoint="$( cat /etc/mtab | grep "^$part_c"  | awk '{print $2}' )"

  echo "partitionPath= $partitionPath, part = $part_c, mountpoint=  $mpoint"  >>     "$lfile"

  echo "Scaning -->  $mpoint"  >> "$lfile.2"
  ############################################
  clamscan -r --bell "$mpoint"/*  >> "$lfile.2"
  #############################################
done
}


main &
echo ______________________________________  >> "$lfile"
exit 0

ทำไมคุณถึงทำซ้ำคำตอบของคุณและทำไมคุณถึงขอให้ใครบางคนแก้ไขโพสต์?
Lynob

@ ฟิชเชอร์มันทำงานอย่างไร?
totti

ดีฉันวิ่งมันและมันจะช่วยให้SUBSYSTEM=="usb", ACTION=="add", RUN+="/usr/bin/doOnUSBinsert & " Rule Successfully added. See file "/usr/bin/doOnUSBinsert" to edit commandจึงทำงาน แต่ฉันไม่สามารถหาแฟ้มบันทึกใน / tmp
Lynob

อัปเดตรหัสแล้ว /tmp/doOnUSBinsert.log สำหรับ udev /tmp/clamscanFromUdev.log สำหรับ clamscan รันrm /etc/udev/rules.d/80-doOnUSBinsert.rulesก่อนรันสคริปต์ที่อัพเดต
totti

0

ในSystem> Preferences> Removable Drives and Mediaมีส่วนที่จะทำงานโดยอัตโนมัติโปรแกรมเมื่อมีการเสียบ USB

ที่นี่เพิ่มคำสั่งต่อไปนี้:

clamscan -r -z /media

clamscan -r -z /mediaไม่สแกนโดยอัตโนมัติฉันต้องเสียบ usb และเรียกใช้จากเทอร์มินัล ... เกี่ยวกับระบบระบบอะไร ไม่มีส่วนที่เรียกว่าsystemใน xubuntu ของฉัน
Lynob

ibusในประประเภท alacarteหรือในประเภทอาคาร หรือมันอยู่ภายใต้ปุ่มปิดเครื่อง

ฉันอยู่บน xubuntu ไม่มีเอกภาพและไม่มีขีด เดสก์ท็อป Xfce
Lynob

ไม่มีตัวเลือกดังกล่าวใน Ubuntu 15.04
TRiG
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.