Executando um script ao conectar um dispositivo USB


12

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!


você não está apenas tentando fazer isso? askubuntu.com/questions/474/...
virtualxtc

@virtualxtc Obrigado por esta sugestão! Mas quero saber o que há de errado com essa abordagem?
Ponteiro nulo

você pode me dizer o que há de errado com meu script? Por que não está funcionando?
Ponteiro nulo

Além disso, apenas um aviso - aprendi da maneira mais difícil que perguntas específicas como essa geralmente são mais adequadas para superusuário do que askubuntu.
Virtualxtc

Se esse fosse o problema das permissões, ele teria aparecido quando tentei executá-lo manualmente, não é?
Ponteiro nulo

Respostas:


8

Para responder minha própria pergunta:

1.Script não estava sendo executado porque precisava de sudodireitos para ser executado.

Solução para isso:

Torne este script sudoexecutável!

EDIT sudoers arquivo usando

sudo visudo

Após a linha 25 (ou seja %sudo ALL=(ALL)) Adicione isso

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

Agora podemos usar sudoesse script sem ser solicitada a senha do sudo

mas 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!


0

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.


Leia os comentários antes de responder à pergunta
Ponteiro nulo

Eu li os comentários e respondi à pergunta. Fiz algo de errado? A que comentário em particular você se refere?
Toby 1 Kenobi

Em comentários estas sugestões já foram dadas e eles não trabalho para me..that é por isso que eu disse que ler os comentários
ponteiro nulo

Ah, sim, desculpe, os últimos 5 comentários foram escondidos de mim e eu não os notei. Meu erro!
Toby 1 Kenobi

@Nullpointer: editar por favor sua pergunta e manter a informação completa na questão para que as pessoas não precisam ler os comentários ... Comentários não são parte da pergunta ... ;-)
Fabby

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.