[PYTHON] Je souhaite être informé de l'environnement de connexion lorsque RaspberryPi se connecte au réseau

J'ai acheté un Raspberry Pi 4. Donc, j'ai mis Arch Linux dans la carte SD.

Je n'ai pas acheté la LED séparément cette fois, mais elle fonctionnera dans son état d'origine, mais il y a un problème.

** Il est difficile de vérifier où vous êtes connecté **

Fondamentalement, DHCP est utilisé et il n'y a pas de moniteur, il est donc difficile d'aller vérifier l'adresse IP, qu'il s'agisse d'une connexion filaire ou d'une connexion sans fil. Donc, cette fois, comme le titre l'indique, j'ai décidé de «me procurer les informations de connexion lorsque la connexion réseau est établie».

Résumé

Informations environnementales

Code que j'ai écrit

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)

Notification d'achèvement

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

Histoire de Network Manager

Qu'est-ce que Network Manager

C'est un démon (+ outil) pour gérer diverses choses liées à la connexion réseau. Il gère les SSID et se connecte automatiquement aux SSID déjà enregistrés.

Il y a aussi systemd-networkd etc., mais pour le moment, j'utilise actuellement ceci.

Fonction de répartition de Network Manager

Maintenant, NetworkManager a une fonction dispatcher qui vous permet" d'exécuter une commande pour diviser le réseau en événement ". Dans les exemples publiés sur le Wiki d'ArchLinux, des exemples tels que «Désactiver le sans fil lors d'une connexion filaire (+ vice versa)» et «Continuer à établir une connexion VPN lors de la connexion à un réseau spécifique» sont écrits. Je suis. Cette fois, en me référant à ces scripts, j'ai créé le script ci-dessus qui "déclare le SSID et l'adresse IP utilisés au canal Slack spécifié lors de la connexion au réseau".

Ce que le répartiteur reçoit

Autant que je sache en l'utilisant réellement, Disptcher transmettra les informations suivantes lors de l'exécution de la commande.

Aligner les informations et la répartition

Organisez où obtenir les informations et le comportement en fonction des conditions que vous souhaitez déclencher.

Maintenant que vous avez les informations dont vous avez besoin, vous pouvez écrire le code. Veuillez vous référer au code indiqué en premier.

Supplément

Le script est appelé directement, alors n'oubliez pas de shebang et d'accorder les autorisations d'exécution.

URLs

Recommended Posts

Je souhaite être informé de l'environnement de connexion lorsque RaspberryPi se connecte au réseau
Je veux exécuter l'interface graphique Python au démarrage de Raspberry Pi
J'ai envoyé les données de Raspberry Pi à GCP (gratuit)
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi
Utilisez Rasppie pour résoudre le problème de connexion Wi-Fi mobile insuffisante
Je souhaite utiliser Python dans l'environnement de pyenv + pipenv sous Windows 10
J'ai essayé de créer un environnement Ubuntu 20.04 LTS + ROS2 avec Raspberry Pi 4
Je veux empêcher le haut-parleur connecté au Raspberry Pi (jessie) d'être bonked lorsque le système d'exploitation est redémarré (script Python)
Je veux grep le résultat de l'exécution de strace
Je veux bien comprendre les bases de Bokeh
Je souhaite augmenter la sécurité de la connexion SSH
Quand j'ai essayé de faire une communication socket avec Raspberry Pi, le protocole était différent
J'ai parlé à Raspberry Pi
Je souhaite utiliser uniquement le traitement de normalisation SudachiPy
Je veux obtenir des informations sur le fonctionnement de Yahoo Route
Je souhaite désactiver les interruptions sur le Raspberry Pi (≒ DI / EI)
Je veux déterminer l'authenticité d'un élément du tableau numpy
Changer le message affiché lors de la connexion à Raspberry Pi
Keras Je veux obtenir la sortie de n'importe quelle couche !!
Je veux connaître la légende du monde des technologies informatiques
Notez ce que vous voulez faire à l'avenir avec Razpai
Je veux obtenir le nom de la fonction / méthode en cours d'exécution
Lorsque je démarre l'environnement virtuel de conda, l'invite de bash s'effondre
[Pytorch] Je souhaite attribuer manuellement les paramètres d'entraînement du modèle
Je veux lire la version html de la version "OpenCV-Python Tutorials" OpenCV 3.1
Je veux sortir le début du mois prochain avec Python
Je veux vérifier la position de mon visage avec OpenCV!
Lors de la génération d'un grand nombre de graphiques avec matplotlib, je ne souhaite pas afficher le graphique à l'écran (environnement jupyter)
Je veux connaître la population de chaque pays du monde.
Consigner périodiquement les valeurs des capteurs d'environnement Omron avec Raspberry Pi
À propos de l'erreur que j'ai rencontrée en essayant d'utiliser Adafruit_DHT à partir de Python sur Raspberry Pi
Je veux éviter les problèmes de saisie lors du débogage de l'exemple de vérification des compétences de Paiza dans un environnement local tel que Jupyter [Python]
Je veux afficher le nombre de num_boost_round lorsque early_stopping est appliqué à l'aide du rappel XGBoost (non atteint)
Je souhaite résoudre le problème de fuite de mémoire lors de la sortie d'un grand nombre d'images avec Matplotlib
J'ai fait un package npm pour obtenir l'ID de la carte IC avec Raspberry Pi et PaSoRi
Je souhaite séparer le traitement entre le temps de test et l'environnement de production
[J'ai touché le Raspberry Pi (1)] J'ai résumé les opérations de base de Minecraft Pi Edition (2015.5.23 pré-version)
Je ne veux pas l'admettre ... Représentation dynamique du système de Neural Network
Remarque: je souhaite faire de la domotique avec Home Assistant + Raspberry Pi + capteur # 1
Remarque Python: lorsque vous souhaitez connaître les attributs d'un objet
J'ai essayé d'améliorer la précision de mon propre réseau neuronal
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
Lorsque vous souhaitez modifier l'en-tête HTTP du client de test de Flask
Je souhaite trier une liste dans l'ordre des autres listes
Lorsque ssh de Raspeye 4 est très lent, il est bon de désactiver IPv6
Je veux exprimer mes sentiments avec les paroles de Mr. Children
Je veux analyser les sentiments des gens qui veulent se rencontrer et trembler
Je veux prédire le succès des joueurs NBA utilisant le SDK Qore
Je souhaite laisser une commande arbitraire dans l'historique des commandes de Shell
Je souhaite arrêter la suppression automatique de la zone tmp dans RHEL7
Enregistrement des valeurs du capteur d'environnement Omron avec Raspberry Pi (type USB)
Python: je souhaite mesurer proprement le temps de traitement d'une fonction
Je veux épingler Spyder à la barre des tâches
Je veux sortir froidement sur la console
Je veux gérer la rime part1
Je veux gérer la rime part3