Script para Clamav antivirus

Imagen de migueldemalaga
0 puntos

Tengo hecho este pequeño script algo personal pero que me ha funcinado muy bien en debian con gnome 2.26.2 y ahora en Karmic no consigo que funcione bien.
Resulta que si lo ejecuto en consola desde una terminal, funciona todo bien. Si lo ejecuto con un doble clic, nautilus me da las opiones de ejecutar en consola ( la cual funciona muy bien ), mostrar. (sin comentarios), ejecutar y éste es el que funciona mal, ya que por alguna razón que desconozco cuando se ejecuta, la comprobación de que clamscan en el directorio /usr/bin/ siempre me devuelve el valor 1, lo que me supone un error ya que cuando el comando find encuentra un archivo, este devuelve como resultado un 0, y por lo que veo mi ejecucion del programa con la linea "if [ "$?" = 1 ] " lo que viene a continuacion de la línea lo interpreto como error. Parece que el resultado de la última operación "$?" no debe ser de find sino de nautilus porque sino no lo comprendo.
Es mi primer script revisado ya 3 veces ( por eso la version 1.3 ).

#!/bin/bash
# Este script pretenede dar una opcion de menús al programa clamscan
# siendo posible su escaneo de archivos seleccionando por defecto
# el escanear el directorio /home/usuario. Se creará en el directorio /home/usuario
# un archivo txt denominado "salida.txt" para el escaneo del home y "salida_archivo.txt"
# para el resto.
# Debe visualizarse en pantalla y sin opción a editar, la salida guradada en dichos
# archivos.
# Esta version corrige el código que permite salir de la aplicacion sin errores y añade
# una salida de texto para virus llamada "virus.txt". Aquí se guardan los informes con virus.
#------------------------------- Version 1.3 -----------------------------------------------
echo "Buscando clamscan"
sudo find /usr/bin -name clamscan
if [ "$?" = 1 ]
then
echo "Error. No se ha podido encontrar el programa.Instale clamav."
zenity --error --text=" No se ha encontrado el programa antivirus clamav ni tampoco clamscan. Por favor, instale clamav."
exit
else
echo "cargado programa"
fi

OPCION=$( zenity --list \
--text="Escoja una de las opciones" \
--column="*" \
--column="Opción" \
--column="Descripción" \
--radiolist \
TRUE 1 "Escaneo completo de la carpeta HOME " \
FALSE 2 "Escanear un archivo (no carpeta) " \
FALSE 3 "Escanear carpetas completas (incluso la / )" )
case "$OPCION" in
1)cd ~
echo "Escaneando.........."
clamscan -r -i ~/ >~/salida.txt # realiza un escaneo a la carpeta home y solo muestra si existen virus. se guarda en salida.txt
Defecto="$?"
echo "$Defecto <----código salida de clamscan"
case "$Defecto" in # si el resultado es 1 es que clamscan ha encontrado virus.
0)File=~/salida.txt
zenity --text-info --title=$File --filename=$File;;
1)File=~/salida.txt
zenity --text-info --title=$File --filename=$File # mostramos el resultado del escaneo.
zenity --error --text=" Cuidado se ha encontrado virus en su equipo. Revise el archivos ~/salida.txt y copiela";;
56) zenity --error --text="El archivo seleccionado no existe o está mal escrito. Revise si el nombre del archivo contiene caracteres no permitidos o no tiene acceso al mismo.";;
*) zenity --error --text="Error desconocido de clamscan";;
esac
;;
2) cd ~
File=$( zenity --file-selection \
--title="Escoja el archivo a escanear..." )
salidaError="$?"
echo "$salidaError codigo salida zenity"
if [ "$salidaError" = 1 ]
then
zenity --error --text="El usuario a cancelado el programa"
exit
else
echo "Escaneando........"
fi
clamscan "$File" >~/salida_archivo.txt # se escanea un solo archivo final y se guarda en salida_archivo.txt
echo "$? <-----código de salida de clamscan"
case "$?" in
0) Archivo=~/salida_archivo.txt
zenity --text-info --title=$Archivo --filename=$Archivo;;
1) Archivo=~/virus.txt
zenity --error --text="Cuidado se ha encontrado virus en su equipo. Revise el archivos ~/virus.txt y copiela";;
56) zenity --error --text="El archivo seleccionado no existe o está mal escrito. Revise si el nombre del archivo contiene carácteres no permitidos o no tiene acceso al mismo.";;
*) zenity --error --text="Error de origen desconocido";;
esac
;;
3) cd ~
File=$( zenity --file-selection \
--title="Escoja la carpeta a escanear..." --directory ) # aqui hemos puesto la opcion directory para solo escanear direcotios recursivos
salidaError="$?"
echo "$salidaError codigo salida zenity"
if [ "$salidaError" = 1 ]
then
zenity --error --text="El usuario a cancelado el programa"
exit
else
echo "Escaneando..........."
fi
clamscan -r -i $File > ~/salida_archivo.txt
echo "$? <-----código de salida de clamscan"
case "$?" in
0) Archivo=~/salida_archivo.txt
zenity --text-info --title=$Archivo --filename=$Archivo;;
1) Archivo=~/virus.txt
zenity --error --text="Cuidado se ha encontrado virus en su equipo. Revise el archivos ~/virus.txt y copiela";;
56) zenity --error --text="El archivo seleccionado no existe o está mal escrito. Revise si el nombre del archivo contiene carácteres no permitidos o no tiene acceso al mismo.";;
*) zenity --error --text="Error de origen desconocido";;
esac

esac

Nota:
Si quito las primera lineas referentes a la busqueda, el programa funciona bien incluso como script de nautilus....
Alguien sabe o puede decirme como reparar esas primeras lineas para que apunte a find aunque sea llamdo desde un programa o enlace...????