Как получить уведомление по электронной почте при подключении USB-накопителя?

27

В нашей компании работает более 600 систем Ubuntu. Это дата-центр, поэтому у нас есть определенные правила. Мы отключили использование устройств хранения во всех системах Ubuntu. Однако мы бы хотели настроить оповещения по электронной почте. Если кто-то вставляет устройства хранения, мы должны получить уведомление по электронной почте с темой, как показано ниже,

Оповещение по электронной почте:

STORAGE DEVICE FOUND on IP: 172.29.35.18

Заметка:

  • Что касается системы Windows, у нас есть определенные политики, применяемые в нашем DC. Таким образом, нет проблем с системой Windows.
  • Нам также необходимо получать оповещения для системы Ubuntu. Любой способ выполнить вышеупомянутую задачу был бы великолепен.

Обновить:

  • Несколько вещей, которые я хотел бы уточнить, если пользователь отключает сетевой кабель и использует ли он USB для передачи данных? Я знаю, что я не получу никаких указаний, но позже, если они подключатся к сети, возможно ли получить эти ожидающие уведомления ??
  • Некоторые используют USB для зарядки своих мобильных телефонов, возможно ли получать по электронной почте уведомления об этом?
karthick87
источник
Я думаю, что вы должны пойти посмотреть этот пост на superuser: superuser.com/questions/305723/… Бен
Бен

Ответы:

25

Способ сделать это - использовать правило udev, которое будет применяться ко всем USB-накопителям любого производителя. Что касается электронной почты, обратите внимание, что Ubuntu Desktop НЕ включает в себя почтовый клиент командной строки, поэтому, если вы не хотите его устанавливать, сценарий уведомлений должен напрямую связываться через локальные SMTP-команды с вашим локальным почтовым сервером.

иш
источник
Это
здорово
Отличный ответ, и он дал все выходные данные, как по электронной почте, так и по IP
LnxSlck
@izx просит вас взглянуть на мой вопрос для обновления ..
karthick87
Возможно, сценарий /etc/udev/rules.d/usbnotif.sh должен храниться где-то еще, чтобы избежать путаницы с файлами правил. Хотя технически это может остаться там.
Elomage
@ karthick87: спасибо, через несколько часов посмотрю обновление телефона / сети. Уведомление по телефону не должно быть проблемой, но сетевая задержка уведомления может потребовать наличия соответствующего SMTP-сервера / клиента на каждом компьютере, который может ставить почту в очередь до доставки. Но я посмотрю , что я могу сделать :)
иш
18

Вы можете использовать Cuttlefish ( https://apps.ubuntu.com/cat/applications/cuttlefish/ )!

Каракатица - это программа, которая может выполнять действия при возникновении событий. Например, вы можете запустить команду, когда USB подключен: введите описание изображения здесь

Как работать с каракатицей:

  1. Сделайте новый Рефлекс из левого верхнего угла: введите описание изображения здесь
  2. Дайте ему название вашего предпочтения, включите его Activated by stimulusи нажмите, Noneчтобы выбрать стимул: введите описание изображения здесь
  3. Нажмите слева Hardwareи справа USB device plugged in. Затем нажмите ОК. введите описание изображения здесь
  4. Нажмите на вкладку реакции и нажмите на знак плюс в левом нижнем углу: введите описание изображения здесь
  5. Перейдите в Приложения-> Запустить приложение (расширенный режим). Затем нажмите ОК. введите описание изображения здесь
  6. Теперь, справа, вы можете видеть, что вы можете выбрать исполняемый файл для запуска с любыми параметрами, поэтому вы должны позволить Cuttlefish запускаться в системном трее, и он будет запускать вашу команду каждый раз, когда USB-устройство подключено: введите описание изображения здесь

Я предполагаю, что вы знаете команду, которую вы можете использовать для отправки вашего электронного письма. Если нет, пожалуйста, опубликуйте это как комментарий, чтобы включить его в мой ответ.

hytromo
источник
Вы хотите, чтобы я установил каракатицу и настроил ее во всех 600 системах Ubuntu? Тогда это большая и трудная задача ..
karthick87
7
После настройки каракатицы в одной из систем вы можете легко ее клонировать ~/.cuttlefish. Также, если вы отметите автозапуск при настройке входа каракатицы (вы можете найти его в настройках), вы можете настроить автозапуск на каждой машине путем клонирования ~/.config/autostart/cuttlefish.desktop.
Алекс
@ karthick87, что сказала Алекс. Насколько я знаю, по умолчанию ничего нельзя сделать. Итак, вы все равно должны что-то сделать на всех 600 системах ...
hytromo
Значит ли это, что в конце концов ты находишь этот путь достаточно удобным?
Hytromo
3

Согласно этому ответу , добавьте этот код в/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"

и в usb.shфайл, добавьте этот код

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

echo “USB inserted.” | mutt -a /tmp/usb.log -s “attachment” example@hotmail.com

источник


Теперь я попытаюсь автоматизировать его, чтобы вы могли добавить это правило / скрипт в 600 систем 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” example@hotmail.com " >>/usr/local/bin/usb.sh

Этот сценарий не проверен , и процесс автоматизации будет улучшен.
Как только я настрою несколько тестовых ПК.

blade19899
источник
Мне кажется, что это хороший +1, пожалуйста, проверьте его и дайте мне знать рабочее состояние. Так что я могу применить его во всех системах Ubuntu ..
karthick87
Будет ли это обнаруживать USB-устройства, отличные от «SanDisk»?
Таккат
4
Нет, это будет работать только для устройств, созданных Sandisk. Кроме того, muttпо умолчанию не устанавливается на Ubuntu Desktop и ifconfig | grep ipвыдает нулевой вывод.
иш
1

Вы сможете увидеть любое новое USB-устройство, которое не только захватывает мощность сервера (обычно включает в себя телефоны)

Для части USB: Как я могу прослушивать события «вставлено USB-устройство» в Linux, в Python?

Отправка электронной почты в python: электронная почта - Python - Как отправить электронную почту utf-8?

Для ethernet используйте netplugd и используйте операторы up или down:
Ubuntu Manpage: netplugd - демон управления горячим подключением сетевого кабеля

Антуан Родригес
источник