¡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!
Respuestas:
Para responder mi propia pregunta:
1.Script no se estaba ejecutando porque necesitaba
sudo
derechos para ejecutarse.Solución a esto:
¡Haz que este script sea
sudo
ejecutable!EDITAR archivo de sudoers usando
sudo visudo
Después de la línea 25 (es decir
%sudo ALL=(ALL)
) Agregue estousername ALL=(ALL) NOPASSWD: /home/username/my_script.sh
Ahora podemos usar
sudo
en este script sin que se nos solicite la contraseña de sudopero 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!
fuente
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.
fuente
Mira esto, sepia .
fuente