Raspi - Wiki

Installation de RaspiOS

Outils pour utilisateurs

Outils du site


scripts:update.py

Update en python

script python pour mise à jour de raspi OS

update.py
#!/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

47

scripts/update.py.txt · Dernière modification : 2022/03/09 14:24 de michel