Pushover Benachrichtigung bei USB Anschluss

Online seit Fr 08 April 2022 in Linux, Python

Kommt her, meine Kinder, und nehmt euch einen Aluhut.

Mal nicht zu Hause und besorgt, dass jemand den Computer infiltriert?

Ganz schnell und easy, so getestet auf einem Ubuntu Jammy:

sudo apt install python3-pip
pip install pyudev

Eine Datei /usr/local/sbin/pyudev_notify.py anlegen:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
#!/usr/bin/env python3

import pyudev
import http.client
import urllib

context = pyudev.Context()
monitor = pyudev.Monitor.from_netlink(context)
monitor.filter_by(subsystem='usb')

for device in iter(monitor.poll, None):
  if device.action == 'add':
    conn = http.client.HTTPSConnection("api.pushover.net:443")
    conn.request("POST", "/1/messages.json",
      urllib.parse.urlencode({
          "token": "APP_TOKEN",
          "user": "USER_TOKEN",
          "message": f"USB Change @ XY: {device}",
      }), {"Content-type": "application/x-www-form-urlencoded"})
    conn.getresponse()

Die Werte APP_TOKEN und USER_TOKEN abändern, ebenso die Nachricht anpassen.

Das Script kann natürlich wesentlich verbessert werden, es ist ziemlich roh.

Die Datei /usr/local/sbin/pyudev_notify.py noch durch chmod 700 /usr/local/sbin/pyudev_notify.py vor fremden Blicken schützen und ausführbar markieren.

Anschließend den Dienst anlegen:

Eine Datei /etc/systemd/system/pyudev_notify.service anlegen:

[Unit]
Description=pyudev_notify
After=network-online.target
Wants=network-online.target systemd-networkd-wait-online.service

[Service]
Type=simple
ExecStart=/usr/local/sbin/pyudev_notify.py

[Install]
WantedBy=multi-user.target

Nun den Dienst aktivieren und starten: systemctl enable --now pyudev_notify.service