[PYTHON] Ich möchte über die Verbindungsumgebung benachrichtigt werden, wenn RaspberryPi eine Verbindung zum Netzwerk herstellt

Ich habe einen Raspberry Pi 4 gekauft. Also habe ich Arch Linux in die SD-Karte eingelegt.

Ich habe die LED diesmal nicht separat gekauft, aber sie wird im Originalzustand betrieben, aber es gibt ein Problem.

** Es ist schwierig zu überprüfen, wo Sie verbunden sind **

Grundsätzlich wird DHCP verwendet und es gibt keinen Monitor. Daher ist es schwierig, die IP-Adresse zu überprüfen, unabhängig davon, ob es sich um eine Kabelverbindung oder eine WLAN-Verbindung handelt. Wie der Titel schon sagt, habe ich mich dieses Mal entschlossen, "die Verbindungsinformationen von mir selbst zu erhalten, wenn die Netzwerkverbindung hergestellt ist".

Zusammenfassung

Umweltinformationen

Code, den ich geschrieben habe

py:/etc/NetworkManager/dispatcher.d/notify-connection-information.py


#!/usr/bin/env python
import json
import os
import sys
from urllib.request import urlopen


WEBHOOK_URL = 'https://hooks.slack.com/services/THISIS/SLACK/WEBHOOK'


def main(conn_id, ip_addr):
    payload = {
        'username': 'info',
        'icon_emoji': ':strawberry:',
        'text': f'*attakei-pi* has connected to {conn_id}\n IP address is `{ip_addr}`',
        'channel': '@attakei',
    }
    urlopen(WEBHOOK_URL, json.dumps(payload).encode())


if __name__ == '__main__':
    argv = sys.argv[1:]
    # if argv[0] != 'wlan0' or argv[1] != 'up':
    if argv[1] != 'up':
        sys.exit(0)
    ip_addr = os.environ['DHCP4_IP_ADDRESS']
    conn_id = os.environ['CONNECTION_ID']
    main(conn_id, ip_addr)

Abschlussbenachrichtigung

スクリーンショット 2019-12-02 18.58.02.png

Network Manager-Geschichte

Was ist Network Manager?

Es ist ein Daemon (+ Tool) zum Verwalten verschiedener Dinge im Zusammenhang mit der Netzwerkverbindung. Es verwaltet SSIDs und stellt automatisch eine Verbindung zu bereits registrierten SSIDs her.

Es gibt auch systemd-networkd usw., aber momentan benutze ich dies.

Network Manager-Versandfunktion

Jetzt verfügt NetworkManager über eine Dispatcher-Funktion, mit der Sie "einen Befehl zum Teilen des Netzwerks als Ereignis ausführen" können. In den im ArchLinux-Wiki veröffentlichten Beispielen werden Beispiele wie "WLAN beim Herstellen einer Kabelverbindung deaktivieren (+ umgekehrt)" und "VPN-Verbindung weiterhin herstellen, wenn eine Verbindung zu einem bestimmten Netzwerk hergestellt wird" beschrieben. Ich bin. Dieses Mal habe ich unter Bezugnahme auf diese Skripte das obige Skript erstellt, das "die verwendete SSID" und "IP-Adresse" für den angegebenen Slack-Kanal beim Herstellen einer Verbindung zum Netzwerk deklariert ".

Was der Dispatcher erhält

Soweit ich weiß, übergibt Disptcher bei der Ausführung des Befehls die folgenden Informationen.

Informationen ausrichten und versenden

Organisieren Sie anhand der Bedingungen, die Sie auslösen möchten, wo Sie Informationen und Verhalten erhalten.

Nachdem Sie die benötigten Informationen haben, können Sie den Code schreiben. Bitte beachten Sie den zuerst aufgeführten Code.

Ergänzung

Das Skript wird direkt aufgerufen. Vergessen Sie also nicht, Ausführungsberechtigungen zu erteilen.

URLs

Recommended Posts

Ich möchte über die Verbindungsumgebung benachrichtigt werden, wenn RaspberryPi eine Verbindung zum Netzwerk herstellt
Ich möchte Python GUI ausführen, wenn Raspberry Pi startet
Ich habe die Daten von Raspberry Pi an GCP gesendet (kostenlos)
Ich habe versucht, die Bewässerung des Pflanzgefäßes mit Raspberry Pi zu automatisieren
Verwenden Sie Rasppie, um das Problem einer unzureichenden mobilen Wi-Fi-Verbindung zu lösen
Ich möchte Python in der Umgebung von pyenv + pipenv unter Windows 10 verwenden
Ich habe versucht, mit Raspberry Pi 4 eine Umgebung von Ubuntu 20.04 LTS + ROS2 zu erstellen
Ich möchte verhindern, dass der an den Raspberry Pi (jessie) angeschlossene Lautsprecher beim Neustart des Betriebssystems bon wird (Python-Skript).
Ich möchte das Ausführungsergebnis von strace erfassen
Ich möchte die Grundlagen von Bokeh vollständig verstehen
Ich möchte die Sicherheit der SSH-Verbindung erhöhen
Als ich versuchte, eine Socket-Kommunikation mit Raspberry Pi durchzuführen, war das Protokoll anders
Ich habe mit Raspberry Pi gesprochen
Ich möchte nur die SudachiPy-Normalisierungsverarbeitung verwenden
Ich möchte Betriebsinformationen über die Yahoo-Route erhalten
Ich möchte Interrupts auf dem Raspberry Pi deaktivieren (≒ DI / EI)
Ich möchte die Authentizität eines Elements eines numpy-Arrays bestimmen
Ändern Sie die Meldung, die beim Anmelden bei Raspberry Pi angezeigt wird
Keras Ich möchte die Ausgabe einer beliebigen Ebene erhalten !!
Ich möchte die Legende der IT-Technologiewelt kennenlernen
Notieren Sie sich, was Sie in Zukunft mit Razpai machen möchten
Ich möchte den Namen der ausgeführten Funktion / Methode erhalten
Wenn ich die virtuelle Umgebung von conda starte, bricht die Eingabeaufforderung von bash zusammen
[Pytorch] Ich möchte die Trainingsparameter des Modells manuell zuweisen
Ich möchte die HTML-Version der OpenCV 3.1-Version "OpenCV-Python Tutorials" lesen
Ich möchte den Anfang des nächsten Monats mit Python ausgeben
Ich möchte die Position meines Gesichts mit OpenCV überprüfen!
Wenn ich mit matplotlib eine große Anzahl von Diagrammen generiere, möchte ich das Diagramm nicht auf dem Bildschirm anzeigen (Jupyter-Umgebung).
Ich möchte die Bevölkerung jedes Landes der Welt kennenlernen.
Protokollieren Sie die Omron-Umgebungssensorwerte regelmäßig mit Raspberry Pi
Über den Fehler, den ich beim Versuch, Adafruit_DHT von Python auf Raspberry Pi zu verwenden, festgestellt habe
Ich möchte die Mühe der Eingabe beim Debuggen von Paizas Skill-Check-Beispiel in einer lokalen Umgebung wie Jupyter [Python] sparen.
Ich möchte die Anzahl von num_boost_round anzeigen, wenn Early_stopping mithilfe des XGBoost-Rückrufs angewendet wird (nicht erreicht).
Ich möchte das Problem des Speicherverlusts bei der Ausgabe einer großen Anzahl von Bildern mit Matplotlib lösen
Ich habe ein npm-Paket erstellt, um die ID der IC-Karte mit Raspberry Pi und PaSoRi zu erhalten
Ich möchte die Verarbeitung zwischen Testzeit und Produktionsumgebung trennen
[Ich habe den Raspberry Pi (1) berührt] Ich habe die grundlegenden Funktionen der Minecraft Pi Edition (Vorabversion 2015.5.23) zusammengefasst.
Ich möchte es nicht zugeben ... Die dynamische Systemdarstellung von Neural Network
Hinweis: Ich möchte die Heimautomation mit Home Assistant + Raspberry Pi + Sensor Nr. 1 durchführen
Python Hinweis: Wenn Sie die Attribute eines Objekts kennen möchten
Ich habe versucht, die Genauigkeit meines eigenen neuronalen Netzwerks zu verbessern
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich möchte die abstrakte Klasse (ABCmeta) von Python im Detail erklären
Wenn Sie den HTTP-Header des Testclients von Flask ändern möchten
Ich möchte eine Liste in der Reihenfolge anderer Listen sortieren
Deaktivieren Sie IPv6, wenn ssh von Raspeye 4 sehr langsam ist
Ich möchte meine Gefühle mit den Texten von Mr. Children ausdrücken
Ich möchte die Gefühle von Menschen analysieren, die sich treffen und zittern wollen
Ich möchte den Erfolg von NBA-Spielern mit dem Qore SDK vorhersagen
Ich möchte einen beliebigen Befehl im Befehlsverlauf von Shell belassen
Ich möchte das automatische Löschen des tmp-Bereichs in RHEL7 stoppen
Protokollierung der Omron-Umgebungssensorwerte mit Raspberry Pi (USB-Typ)
Python: Ich möchte die Verarbeitungszeit einer Funktion genau messen
Ich möchte Spyder an die Taskleiste anheften
Ich möchte kühl auf die Konsole ausgeben
Ich möchte mit dem Reim Teil1 umgehen
Ich möchte mit dem Reim part3 umgehen