Script para espionar o conteúdo de dispositivos USB e copiá-lo para o PC

Sempre fui um aluno inquieto, sempre querendo aproveitar oportunidades como ... por exemplo, copiar os exames do semestre do pendrive do professor ou coisa parecida. Quando eu estava no colégio (curso de informática), eu queria programar "algo" que fizesse o seguinte:

  1. Detectar quando um dispositivo USB está conectado ao computador da sala de aula
  2. Copie todo o conteúdo desse dispositivo para o computador

Isso me permitiria fazer o exame bem mais cedo, bastaria o professor conectar sua memória USB (pendrive) ao computador e pronto.

Infelizmente no meu instituto os computadores tinham Windows e ... Nunca e nunca aprendi a programar para este SO.

Porém, agora uso Linux (obviamente que não? KKK!), e com o conhecimento que pude adquirir ao longo desses anos, agora SIM! Já consigo conseguir isso com Linux 

Ou seja, programei um script simples que faz o seguinte:

1. Crie a pasta /home/.USBDRIVES/
2. Ele verifica a cada 5 segundos se há algum dispositivo USB (ou CD / DVD) conectado ao computador.
3. Caso um esteja conectado, será criada uma pasta dentro de /home/.USBDRIVES/ com o nome do USB (por exemplo: memória-2gb) e também copiará todos os arquivos .doc, .pdf, etc (aqui a lista) para esta pasta que você acabou de criar.
4. Caso não haja USB conectado, bastará aguardar 5 segundos para reiniciar a verificação que expliquei acima 

Aqui está o script e o arquivo que contém os formatos a serem copiados:

Baixe USB-Spy.zip
O script deve ser executado como root para que seu funcionamento não seja limitado. Aqui eu explico como conseguir isso

Para que o script funcione sem problemas, é melhor que seja iniciado com privilégios administrativos (root), pois é óbvio que precisa ser iniciado próximo ao computador, desta forma garantimos que se o computador for reiniciado ou desligado, quando você iniciar o script novamente ele estará lá funcionando, pronto para extrair o que quisermos de qualquer USB 

Vamos abrir um terminal ... uma vez aberto ...

1. Suponha que temos ambos os arquivos em / opt / (/opt/usb-spy.sh y /opt/usb-spy.files), devemos dar-lhe privilégios de execução:

sudo chmod +x /opt/usb-spy.sh

2. Abrimos o arquivo /etc/rc.local :

sudo nano /etc/rc.local

3. Nele escrevemos acima da linha final (sair 0) o seguinte:

/opt/usb-spy.sh &

4. Agora pressionamos [Ctrl] + [X] para salvar e sair do arquivo, pressionamos [S] ou [Y] (dependendo do idioma do sistema) e depois [Enter]. Isso será o suficiente para que as alterações que fizemos sejam salvas.

E pronto, isso será o suficiente para que o script comece como root quando ligarmos o computador.

É importante verificar se o arquivo usb-espião.arquivos está no mesmo diretório que usb-spy.sh

Agora... vou explicar um pouco sobre o funcionamento interno do script, pois sei que existem muitos amantes do Bash por aqui 

Q: Como o script sabe que um dispositivo USB está conectado?
R: No arquivo / etc / mtab de nosso sistema estão os dispositivos ou partições que estão montados em nosso sistema. Pela linha 23 do script sabe-se se existe um USB conectado ou não (tornando cat to mtab e grep media)
Q: Sim, mas Como o script sabe se cat e grep retornam alguns dados para nós ou não?
R: Por meio de um if, then, else loop que começa na linha 24.
Q: Como fazer para copiar apenas arquivos com as extensões desejadas? (.doc, .pdf, etc)
R: Usando rsync com vários parâmetros, isso está na linha 34. De forma simples, com rsync eu copio apenas os arquivos que correspondem ao filtro usb-spy.files, cada linha é um filtro, por assim dizer. Eu também passo o parâmetro --prune-empty-dirs para rsync para que não crie diretórios vazios para mim.
A propósito, algo importante. Se um dispositivo USB de 8GB (por exemplo) estiver conectado, tudo funciona corretamente, mas notei que se um dispositivo com muito mais capacidade for conectado, como 500GB ou 1TB, o processo de procura de arquivos .doc e etc. para copiá-los para o computador demorou muito tempo, então coloquei um limite de GB. Ou seja, na linha 31 eu declaro que se o dispositivo USB for menor que 16GB, então busque os arquivos e copie-os, mas se for maior que 16GB não faça nada. Se você quiser aumentar esses 16 GB em 32 GB, basta aumentar esse número da linha 31

Não há muito o que explicar, o script é muito simples de entender 

Se alguém tiver alguma dúvida ou dúvida, reclamação, ideia ou sugestão, por favor, diga e prometo ajudá-lo no máximo que puder.

Bem, eu estava pensando em colocar algo como: «este script é apenas para fins educacionais, não use com arquivos prejudiciais» …mas…que diabos!, use para o que quiser, já é hora de nós alunos termos algum tipo de vantagem contra os professores que nos oprimem 

lembranças

Várias melhorias ainda podem ser feitas no roteiro, mas ei, esse é um bom começo, eu acho, se alguém se sentir motivado a contribuir com essa causa “nobre” será um prazer 

Adicionar como fonte preferencial