script python pour mise à jour de raspi OS
#!/usr/bin/env python3 # coding=UTF-8 # Information de version # ---------------------------------------------------------------------------- Minor_Version = "005" Major_Version = "1" Date_version = "29/09/2021" NomScript = "update" # ---------------------------------------------------------------------------- # import des modules # ---------------------------------------------------------------------------- import sys import os import time import subprocess SEP="------------------------------------------------------------------------------\n" DIR='/home/pi/scripts/logs/' # ---------------------------------------------------------------------------- # procédure config # ---------------------------------------------------------------------------- def config(): global LOG LOG = "%s%s.log" % (DIR,NomScript) DateFR = time.strftime('%d/%m/%Y %H:%M:%S') txt = "Update du %s\n%s" % (DateFR,SEP) fichier = open(LOG, "w") fichier.write(txt) fichier.close() os.chmod(LOG, 0o666) # ---------------------------------------------------------------------------- # procédure Log # ---------------------------------------------------------------------------- def Logs(txt): fichier = open(LOG, "a") fichier.write(txt) fichier.close() # ---------------------------------------------------------------------------- # procédure update # ---------------------------------------------------------------------------- def execute(cmd): var = subprocess.getoutput(cmd) return var # ---------------------------------------------------------------------------- # procédure eeprom # ---------------------------------------------------------------------------- def eeprom(): var = execute('sudo rpi-eeprom-update') return var # ---------------------------------------------------------------------------- # procédure clean # ---------------------------------------------------------------------------- def clean(): print("Clean") var = execute('sudo apt clean') print (var) var = execute('sudo apt-get autoremove -y') print (var) # ---------------------------------------------------------------------------- # procédure upgrade # ---------------------------------------------------------------------------- def upgrade(): print("upgrade") var = execute('sudo apt full-upgrade -y | grep -P "\d\K mis à jour"') liste = var.split("\n") nb = len(liste) ret = liste[nb-1].split(".") return (ret[0]) # ---------------------------------------------------------------------------- # procédure update # ---------------------------------------------------------------------------- def update(): var = execute("sudo apt update") liste = var.split("\n") nb = len(liste) ret = liste[nb-1].split(".") return (ret[0]) # ---------------------------------------------------------------------------- # Procédure main # ---------------------------------------------------------------------------- def main(): debut = time.time() config() ret = update() Logs("%s\n" % (ret)) fini = ret.find('Tous les paquets') if fini<0: ret = upgrade() Logs("%s\n" % (ret)) clean() txt = "%s%s\n%s" % (SEP,eeprom(),SEP) Logs(txt) duree = time.time()- debut minutes = time.localtime(duree)[4] secondes = time.localtime(duree)[5] text = "Durée: %i min %i sec\n" %(minutes,secondes) Logs(text) # ---------------------------------------------------------------------------- # début du script # ---------------------------------------------------------------------------- if __name__ == "__main__": main()
Puis rendre le script executable.
Et entrer dans un terminal la commande /chemin/update.py et voici le résultat:
Update du 26/02/2022 12:46:57 ------------------------------------------------------------------------------ Tous les paquets sont à jour ------------------------------------------------------------------------------ BOOTLOADER: up to date CURRENT: mar 08 fév 2022 17:24:46 UTC (1644341086) LATEST: mar 08 fév 2022 17:24:46 UTC (1644341086) RELEASE: stable (/lib/firmware/raspberrypi/bootloader/stable) Use raspi-config to change the release. VL805_FW: Dedicated VL805 EEPROM VL805: up to date CURRENT: 000138a1 LATEST: 000138a1 ------------------------------------------------------------------------------ Durée: 0 min 10 sec
et voici la ligne de crontab pour executer le script toutes les nuits à 4 heure 30:
30 4 * * * /home/pi/scripts/py/update.py
291