Eu quero que todos os novos arquivos adicionados a ~ / Downloads (e subpastas) sejam verificados com clamscan .
Ao usar o Firefox em outros sistemas operacionais / máquinas, percebi que os arquivos baixados às vezes são automaticamente verificados. Embora eu esteja executando especificamente uma versão home-roll-based baseada no Debian nesta máquina, a solução deve funcionar para outras distribuições GNU / Linux, em particular a família de distribuições baseada no Slackware onde eu também gostaria de implementá-la.
Baseado em este post "script-para-monitor-pasta- for-new-files " Eu encontrei o que foi respondido anteriormente aqui, eu tenho o seguinte que não parece funcionar muito bem (eu corri e, em seguida, fiz um arquivo usando thunar o gerenciador de arquivos xfce e sem pop-ups apareceu.):
#!/bin/bash
PATH_TO_WATCH="$(pwd)"
inotifywait -m /$PATH_TO_WATCH -e create -e moved_to |
while read path action file; do
CLAMSCAN_OUTPUT="$(clamscan $file)"
DIALOG_TEXT= "The file '$file' appeared in directory '$path' via '$action'. Clamscan was run on $file, generating the following output: $OUTPUT"
echo $DIALOG_TEXT
zenity --notification --text=$DIALOG_TEXT
done
Estou usando o zenity para formar a mensagem pop-up porque, pelo que posso dizer, xdialog foi descontinuado de acordo com um comentário aqui . Para referência, uma cópia da página de manual inotifywait está aqui , e esta página de manual de informações atualizadas também pode ser útil (um post referente à inotifywait que encontrei aqui tinha linkado a ela).
- Como posso corrigir isso para que seja executado?
- Isso é seguro? Estou piorando as coisas executando 24/7 um script de sistema como este?
- Existe alguma chance de que a saída seja executada / devo fazer alguma forma de regex no
$CLAMSCAN_OUTPUT
ou $DIALOG_TEXT
para proteger o sistema de saída malformada?
- (Eu sei que isso é aberto, então ignore se isso te incomoda) É este o caminho "errado" / existe um método mais seguro recomendado?
Atualizar
Acontece que zenity
também estava falhando.
Depois que eu tentei terminá-lo, na verdade eu obtive a saída echo
. O erro parece ser semelhante ao descrito no link e link . Também é reproduzível em uma nova instalação oficial do Xubuntu 14.04lts que acabei de testar. É lamentável, pois --notification
não é intrusivo, enquanto --error
exige interação do usuário.
Com base nas sugestões do @Anthon e do @JigglyNaga para melhorá-lo, o seguinte é o novo script:
#~ This script watches recursively for changes in a folder and then scans new files/folders.
#!/bin/bash
#~ which folder to watch, here the current directory is used
PATH_TO_WATCH="$(pwd)"
#~ While notification would be better, not used because of bug similar to "Debian Bug report logs - #716717"
#~ ZENITY_OUTPUT_METHOD="--notification"
ZENITY_OUTPUT_METHOD="--error"
#~ Initial notification stating the script is now active.
INIT_OUTPUT="A scanning script is now waiting on '$PATH_TO_WATCH'"
echo $INIT_OUTPUT
zenity $ZENITY_OUTPUT_METHOD --text="'$INIT_OUTPUT'"
#~ Recursively wait for new files/folders then loop through the list and scan them
inotifywait -r -m /$PATH_TO_WATCH -e create -e moved_to |
while read path action file; do
PRESCAN_OUTPUT="Now scanning '$file' which appeared in directory '$path' via '$action'."
echo $PRESCAN_OUTPUT
zenity $ZENITY_OUTPUT_METHOD --text="'$PRESCAN_OUTPUT'"
#~ Wait 5 seconds to scan, just in case it is still being created.
sleep 5s
#~ Scan the new file/folder and save the output to display
CLAMSCAN_OUTPUT=$(clamscan "$file")
DIALOG_TEXT="Clamscan was run on $file, generating the following output: $CLAMSCAN_OUTPUT"
#~ Tell user files have been scaned and show results
echo $DIALOG_TEXT
zenity $ZENITY_OUTPUT_METHOD --text="'$DIALOG_TEXT'"
done