Não marque isso como duplicado, pois é uma pergunta diferente!
Estou tentando executar um script sempre que um pendrive estiver conectado ao meu sistema. Eu segui essa e essa pergunta. E está funcionando, mas ainda existem alguns problemas.
Este é o meu arquivo de regras do udev:
ACTION=="add", ATTRS{idVendor}=="8564", ATTRS{idProduct}=="1000", RUN+="/usr/local/my_script.sh"
e este é o meu script:
#!
/ bin / bash
env> /tmp/env.out
cp -r / media / * nome do dispositivo * / * ~ / test /
Eu tenho 2 perguntas:
1.Quando eu conecto meu script de dispositivo usb é executado porque um arquivo env.out é gerado em / tmp, mas os dados do dispositivo usb não são copiados para o diretório de teste , se eu executar o script manualmente, ele funcionará bem! Por quê??
2.Como tornar meu arquivo de regras mais geral para que funcione em qualquer dispositivo USB conectado sem saber seu ID?
Minha idéia por trás disso é copiar todos os dados do dispositivo USB conectado ao meu computador automaticamente, quando estiver conectado.
Agradeço antecipadamente!
Respostas:
Para responder minha própria pergunta:
1.Script não estava sendo executado porque precisava de
sudo
direitos para ser executado.Solução para isso:
Torne este script
sudo
executável!EDIT sudoers arquivo usando
sudo visudo
Após a linha 25 (ou seja
%sudo ALL=(ALL)
) Adicione issousername ALL=(ALL) NOPASSWD: /home/username/my_script.sh
Agora podemos usar
sudo
esse script sem ser solicitada a senha do sudomas pode causar alguns problemas de segurança, consulte este link
2.Responda à minha segunda pergunta:
Para fazer esse script funcionar em qualquer dispositivo USB conectado, altere o arquivo de regras para este
ACTION=="add", ATTRS{idVendor}=="
****
", ATTRS{idProduct}=="****
", RUN+="/usr/local/my_script.sh"o asterik (*) diz que isso deve ser feito para todos os dispositivos USB conectados!
É isso aí! Verifique se o script é executável e conecte seu USB !!
Apreciar!
fonte
Tente substituir o til pelo caminho completo para o diretório inicial. Não sei se isso vai funcionar, mas você diz que o script funciona quando você o executa diretamente, mas quando é executado automaticamente, não: Isso me faz pensar que o problema pode estar relacionado ao fato de ele ser executado por um usuário diferente. quando é executado automaticamente, e o til resolve para valores diferentes para usuários diferentes.
fonte
Dê uma olhada nisso, choco .
fonte