Ejecutar un script en la conexión del dispositivo USB

13

¡No marque esto como duplicado ya que esta es una pregunta diferente!

Estoy tratando de ejecutar un script cada vez que un pendrive está conectado a mi sistema. Seguí esta y esta pregunta. Y está funcionando, pero todavía hay algunos problemas.

Este es mi archivo de reglas de udev:

ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"

y este es mi guión:

#!/ bin / bash

env> /tmp/env.out
cp -r / media / * nombre-dispositivo * / * ~ / test /

Tengo 2 preguntas:

1.Cuando conecto el script de mi dispositivo usb se ejecuta porque se genera un archivo env.out en / tmp pero los datos del dispositivo usb no se copian en el directorio de prueba , si ejecuto el script manualmente, ¡entonces funciona bien! ¿¿Por qué??

2. ¿Cómo puedo hacer que mi archivo de reglas sea más general para que funcione para cualquier dispositivo USB que esté conectado sin conocer su ID?

Mi idea detrás de esto es copiar todos los datos del dispositivo USB conectado a mi computadora automáticamente, cuando está conectado.

¡Gracias de antemano!

Puntero nulo
fuente
¿No estás tratando de hacer esto? askubuntu.com/questions/474/…
virtualxtc
@virtualxtc ¡Gracias por esta sugerencia! Pero quiero saber ¿Qué hay de malo en este enfoque?
Puntero nulo el
¿Puedes decirme qué hay de malo en mi script? ¿Por qué no funciona?
Puntero nulo el
Además, solo un aviso: aprendí por las malas que preguntas específicas como esta generalmente son más adecuadas para el superusuario que askubuntu.
virtualxtc
Si este hubiera sido el problema de los permisos, entonces habría aparecido cuando intenté ejecutarlo manualmente, ¿no?
Puntero nulo el

Respuestas:

8

Para responder mi propia pregunta:

1.Script no se estaba ejecutando porque necesitaba sudoderechos para ejecutarse.

Solución a esto:

¡Haz que este script sea sudoejecutable!

EDITAR archivo de sudoers usando

sudo visudo

Después de la línea 25 (es decir %sudo ALL=(ALL)) Agregue esto

username ALL=(ALL) NOPASSWD: /home/username/my_script.sh

Ahora podemos usar sudoen este script sin que se nos solicite la contraseña de sudo

pero puede causar algunos problemas de seguridad, por favor consulte este enlace

2.Responda a mi segunda pregunta:

Para que este script funcione para cualquier dispositivo USB que esté conectado, cambie el archivo de reglas a este

ACTION=="add", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", RUN+="/usr/local/my_script.sh"

¡asterik (*) dice que esto debe hacerse para cada dispositivo USB conectado!

¡Eso es! ¡Asegúrate de que el script sea ejecutable y conecta tu USB!

¡Disfrutar!

Puntero nulo
fuente
0

Intente reemplazar la tilde con la ruta completa a su directorio de inicio. No sé si esto funcionará, pero usted dice que el script funciona cuando lo ejecuta directamente, pero cuando se ejecuta automáticamente no lo hace: esto me hace pensar que el problema podría estar relacionado con que lo ejecute otra persona usuario cuando se ejecuta automáticamente, y la tilde se resuelve con diferentes valores para diferentes usuarios.

Toby 1 Kenobi
fuente
Lea los comentarios antes de responder la pregunta
puntero nulo el
Leí los comentarios, luego respondí la pregunta. ¿Hice algo mal? ¿A qué comentario en particular te refieres?
Toby 1 Kenobi
En los comentarios, estas sugerencias ya se dieron y no funcionaron para mí ... por eso dije que leyera los comentarios
puntero nulo el
Ah, sí, lo siento, los últimos 5 comentarios se me ocultaron y no me di cuenta. ¡Mi error!
Toby 1 Kenobi
@Nullpointer: edite su pregunta y mantenga la información completa en la pregunta para que las personas no necesiten leer los comentarios ... Los comentarios no son parte de la pregunta ... ;-)
Fabby