Como receber uma notificação por email quando um dispositivo de armazenamento USB é inserido?

27

Estamos executando mais de 600 sistemas Ubuntu em nossa empresa. É um data center, por isso temos certas políticas. Desativamos o uso de dispositivos de armazenamento em todos os sistemas Ubuntu. No entanto, gostaríamos de configurar alertas por email. Se alguém inserir dispositivos de armazenamento, receberemos um alerta por e-mail com o assunto abaixo,

Alerta por email:

STORAGE DEVICE FOUND on IP: 172.29.35.18

Nota:

  • Quanto ao sistema Windows, temos certas políticas aplicadas em nosso controlador de domínio. Portanto, não há problema com o sistema Windows.
  • Também precisamos receber alertas para o sistema Ubuntu. Qualquer maneira de realizar a tarefa acima seria ótima.

Atualizar:

  • Gostaria de esclarecer algumas coisas: se o usuário desconecta o cabo de rede e se o usuário usa usb para transferência de dados? Eu sei que não receberei nenhuma sugestão, mas mais tarde, se eles se conectarem à rede, é possível receber as notificações pendentes?
  • Alguns usa usb para carregar seus celulares, é possível receber notificações por email também?
karthick87
fonte
Eu acho que você deveria ver este post no superusuário: superuser.com/questions/305723/… Ben
Ben

Respostas:

25

A maneira de fazer isso é usar uma regra do udev que será aplicada a todos os dispositivos de armazenamento USB de qualquer fabricante. Para a parte de email, observe que o Ubuntu Desktop NÃO inclui nenhum cliente de email de linha de comando; portanto, a menos que você deseje instalar um, o script de notificação deve se comunicar diretamente por meio de comandos SMTP brutos com o servidor de email local.

ish
fonte
Isso é ótimo +1 de mim: D
karthick87
Great answer, and it gave all the output need, both email and ip
LnxSlck
@izx pedir-lhe para ter um olhar para a minha pergunta para uma atualização ..
karthick87
Talvez o script /etc/udev/rules.d/usbnotif.sh deva ser armazenado em outro lugar para evitar confusão com os arquivos de regras. Embora tecnicamente possa ficar lá.
Elomage # 1/12
@ karthick87: obrigado, vou olhar para a atualização do telefone / rede em algumas horas. A notificação por telefone não deve ser um problema, mas o atraso da notificação de rede pode exigir um servidor / cliente SMTP adequado em cada máquina que possa enfileirar mensagens até a entrega. Mas eu vou ver o que posso fazer :)
ish
18

Você pode usar o Choco ( https://apps.ubuntu.com/cat/applications/cuttlefish/ )!

Choco é um programa que pode executar ações quando ocorrem eventos. Por exemplo, você pode executar um comando quando um USB estiver conectado: insira a descrição da imagem aqui

Como trabalhar com chocos:

  1. Faça um novo reflexo no canto superior esquerdo: insira a descrição da imagem aqui
  2. Dê o nome de sua preferência, ative Activated by stimuluse clique em Nonepara selecionar um estímulo: insira a descrição da imagem aqui
  3. Clique à esquerda Hardwaree à direita USB device plugged in. Depois clique em OK. insira a descrição da imagem aqui
  4. Clique na guia de reação e clique no sinal de mais no canto inferior esquerdo: insira a descrição da imagem aqui
  5. Vá para Aplicativos-> Iniciar Aplicativo (modo avançado). Depois clique em OK. insira a descrição da imagem aqui
  6. Agora, à direita, você pode ver que pode selecionar um executável para executar com qualquer parâmetro que desejar, portanto, é necessário deixar o Cuttlefish executar na bandeja do sistema e ele executará seu comando sempre que um dispositivo USB for conectado: insira a descrição da imagem aqui

Suponho que você conheça um comando que possa usar para enviar seu email. Caso contrário, poste-o como um comentário para incluí-lo na minha resposta.

hytromo
fonte
Deseja que eu instale chocos e configure-o em todos os 600 sistemas ubuntu? Então é uma tarefa grande e difícil ..
karthick87
7
Depois de configurar chocos em um dos sistemas, você pode clonar facilmente ~/.cuttlefish. Além disso, se você marcar a inicialização automática na configuração de login do choco (você pode encontrá-lo nas preferências), poderá configurar a inicialização automática em todas as máquinas clonando ~/.config/autostart/cuttlefish.desktop.
Alex
@ karthick87, o que Alex disse. Até onde eu sei, não há algo que você possa fazer por padrão. Assim, você deve de qualquer maneira fazer algo em todos os 600 sistemas de ...
hytromo
Isso significa que, no final, você acha esse caminho confortável o suficiente, afinal?
Hytromo 27/09/12
3

De acordo com esta resposta , adicione este código a/etc/udev/rules.d/90-local.rules

ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", ATTRS{vendor}=="SanDisk ", RUN+="/usr/local/bin/usb.sh"

e no usb.sharquivo, adicione este código

#!/bin/bash
ifconfig | grep ip >>/tmp/usb.log

echo “USB inserted.” | mutt -a /tmp/usb.log -s “attachment” [email protected]

fonte


Agora vou tentar automatizá-lo, para que você possa adicionar esta regra / script em 600 sistemas Ubuntu.

    sudo echo " ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", ATTRS{vendor}=="SanDisk ", RUN+="/usr/local/bin/usb.sh" ">>/etc/udev/rules.d/90-local.rules

 #then the `usb.sh`

    sudo echo "     #!/bin/bash
        ifconfig | grep ip >>/tmp/usb.log

        echo “USB inserted.” | mutt -a /tmp/usb.log -s “attachment” [email protected] " >>/usr/local/bin/usb.sh

Este script não foi testado e o processo de automação será aprimorado.
Assim que eu configurei alguns PCs de teste.

blade19899
fonte
Este parece ser um bom +1 para mim. Teste-o e informe-me sobre o status de trabalho. Para que eu possa aplicá-lo em todos os sistemas Ubuntu ..
karthick87
Isso detectará outros dispositivos USB que não sejam fabricados pela "SanDisk"?
Takkat 26/09/12
4
Não, isso funcionará apenas para dispositivos fabricados pela Sandisk. Além disso, muttnão é instalado por padrão no Ubuntu Desktop e ifconfig | grep ipfornece uma saída nula.
Ish
1

Você poderá ver qualquer novo dispositivo USB que não apenas pegue o poder do servidor (que normalmente inclui os telefones)

Para a parte USB: como escuto eventos 'dispositivo USB inserido' no Linux, em Python?

Enviando um e-mail em python: email - Python - Como enviar um email utf-8?

Para a ethernet, use netplugd e use as instruções up ou down:
Ubuntu Manpage: netplugd - daemon de gerenciamento de hotplug de cabo de rede

Antoine Rodriguez
fonte