On Mon, 24 Apr 2006 13:16:57 +0200
Roman ZARAGOCI wrote:
> >> For example, I would want to scan only new files added to homes
> >> directories or by checking the modification date of files.
> >> Maybe someone has already made this sort of script ?
> >
> > If you run something like:
> >
> > find /home -mtime -2 -type f -print0 | xargs -0 clamdscan
> I've got a specific problem with my script, let me explain what it
> does :
>
> 1) # First, the script build a text file named "file1" containing all
> modified files last day
> find /home -mtime -1 -type f > /tmp/file1
>
> 2) # Then, the command grep excludes all lines containing "mail" (to
> not scan mail files - too long and already scan by another soft)
> grep -v mail /tmp/file1 > /tmp/file2
>
> 3) # Because clamdscan needs a single line as parameter to specify
> files/repertories to scan, I apply this :
> while read line; do echo -e "\"$line\" \c"; done < file2
>
> So, the file named "file2" contains a single line with this format :
> "/home/first file" "/home/second file" ...
> I add a double-quote to scan files with spaces.
>
> But when I do :
> while read line; do echo -e "\"$line\" \c"; done < file2 | xargs -0
> clamdscan
> clamdscan replies :
>
> [...] "/home/tbigo/some file.exe" "/home/updvir/update.ini"
> "/home/updvir/dat-4746.zip" : File name too long
Your scripting skills are somewhat flaky :) This is not an exemplary
method/script, but should give you a general idea, keeping the general
context of your script.
#/bin/sh
find /home -mtime -1 -type f > /tmp/file1;
filelist=`grep -v mail /tmp/file1`;
{
for x in ${filelist}
do
clamdscan ${x}
done
}
#End of file
The above has no particular semantics or such, but gives a basis to
work from.
Matt
p.s: Before anyone starts pointing out problems with the above quick
script, it was not meant to be a scripting reference, just a vague
guideline/concept :)
_______________________________________________
http://lurker.clamav.net/list/clamav-users.html