Peuit-être que ça existe tout fait, mais c’est moi marrant que de demande à CHatGPT.
Voilà un script python à faire tourner tous les jours sur Debian.
Après suffit d’ajouter un sensor MQTT dans la config côté HA sur le topic « debian/updates » pour avoir cette info.
import subprocess
import paho.mqtt.client as mqtt
# Configuration MQTT
MQTT_BROKER = "mqtt_broker_adresse" # Remplacez par l'adresse de votre broker MQTT
MQTT_PORT = 1883 # Port par défaut pour MQTT
MQTT_TOPIC = "debian/updates"
MQTT_USERNAME = "votre_utilisateur" # Remplacez par votre utilisateur MQTT
MQTT_PASSWORD = "votre_mot_de_passe" # Remplacez par votre mot de passe MQTT
# Fonction pour exécuter la commande apt update et récupérer le nombre de paquets
def get_update_count():
try:
# Exécuter la commande 'apt update'
result = subprocess.run(['apt', 'update'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
# Récupérer la sortie standard
output = result.stdout
# Diviser la sortie en lignes
lines = output.splitlines()
# Trouver la dernière ligne contenant "packages can be upgraded"
for line in reversed(lines):
if "packages can be upgraded" in line:
# Extraire le premier mot (le nombre de paquets)
return line.split()[0]
except Exception as e:
print(f"Erreur lors de l'exécution de 'apt update': {e}")
return None
# Fonction pour envoyer le message via MQTT
def send_mqtt_message(message):
try:
client = mqtt.Client()
# Configurer l'utilisateur et le mot de passe
client.username_pw_set(MQTT_USERNAME, MQTT_PASSWORD)
# Connexion au broker MQTT
client.connect(MQTT_BROKER, MQTT_PORT, 60)
# Publier le message sur le topic
client.publish(MQTT_TOPIC, message)
client.disconnect()
print(f"Message envoyé sur {MQTT_TOPIC}: {message}")
except Exception as e:
print(f"Erreur lors de l'envoi MQTT: {e}")
# Programme principal
if __name__ == "__main__":
update_count = get_update_count()
if update_count is not None:
send_mqtt_message(update_count)
else:
print("Impossible de récupérer le nombre de paquets à mettre à jour.")
Si vous savez utiliser une console linux, utiliser HA n’est pas plus compliqué,
Faut juste comprendre les principes de son fonctionnement au début et après ça roule tout seul.
Avec votre script lancé toutes les 2h par exemple:
Pour vérifier que le message est envoyé correctement, utiliser cette commande dans une autre console pour voir le message passé à chaque lancement du script:
Voici un exemple de config. pour le sensor MQTT:
Dans le fichier mqtt.yaml:
sensor:
- platform: mqtt
name: "Mises à jour Debian"
state_topic: "home/sys/<HOSTNAME>/updates" # <HOSTNAME> à remplacer par le bon
unique_id: "mise_a_jour_debian"
force_update: true
expire_after: 7500 # > 2 heures (en secondes)
Vérifier que la conf. yaml est correct dans HA dans menu « Outils de développement »: