Execução de um script ao conectar o dispositivo USB

10

Por favor, não marque isso como duplicado, pois esta é uma pergunta diferente!

Estou tentando executar um script sempre que um pendrive é conectado ao meu sistema. Eu segui este e esta questão E está funcionando, mas ainda há 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/*device-name*/* ~/test/

Eu tenho duas perguntas:

1.Quando conecto meu script de dispositivo usb é executado porque um arquivo env.out é gerado em / tmp , mas os dados do dispositivo usb são não copiado para o diretório de teste , se eu executar o script manualmente, ele funcionará bem! Por quê?

2.Como posso tornar meu arquivo de regras mais geral para que ele funcione para qualquer dispositivo USB que esteja conectado sem saber seu ID?

Minha ideia é copiar todos os dados do dispositivo USB conectado para o meu computador automaticamente, quando ele estiver conectado.

Obrigado em avançado!

    
por Null pointer 07.01.2014 / 09:19

3 respostas

6

Para responder minha própria pergunta:

1. O script não estava em execução porque precisava de sudo de direitos para ser executado.

Solução para isso:

Faça este script sudo executável!

EDIT sudoers file usando

sudo visudo

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

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

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

mas pode causar alguns problemas de segurança, por isso consulte este link

2. Responder à minha segunda pergunta:

Para fazer com que este script funcione para qualquer dispositivo USB que esteja conectado, altere o arquivo de regras para este

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

asterik (*) informa que isso deve ser feito para cada dispositivo USB conectado!

É isso! Certifique-se de que o script é executável e conecte seu USB !!

Aprecie!

    
por Null pointer 09.01.2014 / 11:40
0

Tente substituir o til pelo caminho completo para o seu diretório pessoal. Eu não sei se isso vai funcionar, mas você diz que o script funciona quando você o executa diretamente, mas quando ele é executado automaticamente, não funciona: isso me faz pensar que o problema pode estar relacionado a ele ser executado por um diferente. usuário quando ele é executado automaticamente e o til é resolvido com valores diferentes para usuários diferentes.

    
por Toby 1 Kenobi 07.01.2014 / 10:16
0

Dê uma olhada nisso, choco .

    
por animaletdesequia 09.01.2014 / 12:19

Tags