Maintenance de sa Debian

bonjour, ce petit message pour sensibiliser les utilisateurs non informaticiens de Jeedom sur le fait que le système Debian est comme tous les autres systèmes, il expose des failles de sécurité et ses librairies sont souvent mises à jour pour corriger des bugs.

De mon côté, pour éviter la paranoïa d’aller tout le temps vérifier s’il y a des mises à jour, j’utiliser une petite mécanique très simple que je vous partage ici.

voilà donc une solution parmi tant d’autres sous la forme d’un scénario programmé :

La programmation se fait à votre convenance, j’ai réglé midi 5, ça peut se faire même plusieurs fois par jour pour les parano de la sécu

et voilà la petite ligne en shell qui devrait convenir pour debian 10 et 11

et en texte :

$output = shell_exec('LC_ALL=C apt-get upgrade -s | grep -P "\d+ upgraded" -m 1 | cut -d " " -f 1');
if ($output > 0) {
	message::add("Debian", ($output > 1?'Des':'Une').' mise'($output >1?'s':'').' à jour du système '.($output>1?'sont':'est').' disponibles');
} 

une fois ces choses faites, le centre de message de Jeedom sera alimenté d’une rubrique Debian avec les messages sur le nombre de mises à jours disponibles. Après libre à vous de les lancer ou pas :slight_smile:

cette dernière étape doit se faire à la main à mon avis pour des raisons de validation et de sécurité.

bon week-end à tous

12 « J'aime »

Tu n’as pas traité le s de disponible.

1 « J'aime »

Bonjour et merci,

J’ai ce retour dans le log du scénaro, j’imagine que c’est du fait qu’il n’y a pas de mise à jour :

[2022-08-07 10:03:33][SCENARIO] Start : Scenario lance manuellement.
[2022-08-07 10:03:33][SCENARIO] Exécution du sous-élément de type [action] : code
[2022-08-07 10:03:33][SCENARIO] Exécution d'un bloc code
[2022-08-07 10:03:36][SCENARIO] Call to undefined function  mise()
[2022-08-07 10:03:36][SCENARIO] Fin correcte du scénario
2 « J'aime »

Plutôt parce qu’il manque un point :

entre ' mise' et ($output >1?'s':'')

 
D’ailleurs @neurall, pourquoi ne pas remplacer :

if ($output > 0) {
	message::add("Debian", ($output > 1?'Des':'Une').' mise'($output >1?'s':'').' à jour du système '.($output>1?'sont':'est').' disponibles');
}

par :

if ($output == 1)
  message::add("Debian", 'Une mise à jour du système est disponible');
elseif ($output > 1)
  message::add("Debian", 'Des mises à jour du système sont disponibles');

C’est quand même plus lisible, non ?

 
Et, si je ne m’abuse, il manque un sudo apt update && avant LC_ALL=C apt-get upgrade pour réellement aller chercher les mises à jour et pas juste regarder celle qui n’ont pas encore été appliquées.

Bad

4 « J'aime »

Bonjour,

Ca fonctionne bien avec le bloc de remplacement (if... elself...) ; Merci

Je n’ai pas réussi à intégrer correctement ta 2eme proposition : intégrer apt-get update

Je viens de tester, et en effet quelque chose ne passe pas bien avec la commande en une ligne.

La totalité du code que je propose en remplacement :

message::removeAll("Debian");
shell_exec('sudo apt update');
$output = shell_exec('LC_ALL=C apt-get upgrade -s | grep -P "\d+ upgraded" -m 1 | cut -d " " -f 1');
if ($output == 1)
  message::add("Debian", '1 mise à jour du système est disponible');
elseif ($output > 1)
  message::add("Debian", $output.' mises à jour du système sont disponibles');

Tu peux test ?

5 « J'aime »

Lo,

Je viens de tester à l’instant,
Ton bloc code fonctionne parfaitement, pour info je suis avec un Debian 11,
Retour dans le centre de message → 11 mises à jour disponible

Bon dimanche,
Au plaisir,

Bonjour,

Je suis sous debian 10 et cela a fonctionné, 182 mises à jours de dispo !
Je suis sur une Smart, dois je faire ces mises à jour et si oui peux tu m’indiquer comment ?

Merci d’avance.

Bonjour,

Non.
:warning: Il est important de rappeler que sur les box officielles (smart et atlas) c’est jeedom qui s’occupe de vérifier et d’installer les mises à jours.

4 « J'aime »

Merci Mips !

@Toms, il y a encore un petit effet indésirable : si le nombre de maj n’a pas changé, ça envoie quand même un email (dans le cas de notif par email lors d’un message).

Ce code (plus complexe) devrait faire l'affaire
shell_exec('sudo apt update');
$output = shell_exec('LC_ALL=C apt-get upgrade -s | grep -P "\d+ upgraded" -m 1 | cut -d " " -f 1');
$msg = ($output == 1) ? ('1 mise à jour du système est disponible') : (trim($output).' mises à jour du système sont disponibles');
$notif = message::byPluginLogicalId('Debian', 'updates');
if ($output == 0 && $notif)
  $notif[0]->remove();
elseif ($output != 0 && $notif) {
  if ($notif[0]->getMessage() != $msg)
    $notif[0]->remove();
  message::add('Debian', $msg, '', 'updates');
} elseif ($output != 0 && !$notif)
  message::add('Debian', $msg, '', 'updates');

(Merci @Mips pour la précision, j’allais le signaler :sweat_smile:)

6 « J'aime »

Hello,
Bonne idée @neurall :+1: pour ce qui sont comme moi ,qui pense une fois la semaine des 8 jours pour regarder si il y a des mises à jour.
@Bad toujours à fond :biking_man:

1 « J'aime »

Bonjour @neurall ,

Super :+1:

Un grand merci à toi. Ces petits utilitaires génériques partagés sont toujours un super cadeau fait à la communauté.
Et merci également @Bad pour son apport.

Bonne journée à tous

1 « J'aime »

Bonjour,
Avec 182 mises à jour disponibles, j’ai plutôt l’impression qu’il y a un souci dans les mises à jour que Jeedom devrait faire.
Sur une oldstable, il n’y a plus que des majs de sécurité…

2 « J'aime »

Je n’y suis pour rien, pas la peine de me répondre ou me demander quoi que ce soit à ce sujet, je ne fait que répéter le message officiel (venant de l’équipe dont je ne fait pas partie) que l’on a déjà vu sur community :wink:

S’il y a un doute il faut voir cela avec le support.

1 « J'aime »

Fonctionne parfaitement !

Merci.

2 « J'aime »

Merci pour vos retours et améliorations. J’ai validé sur Debian 10 et 11 avant de poster. le LC_ALL pour info permet d’avoir les messages en anglais sur le système et ainsi s’épargner les tests de syntaxes en français avec les regexs.

j’avais fait une tentative de gestion du pluriel qui peut être traité de manière différente, mais bon, l’esprit est là. Par contre ça ne remontera pas les infos sans avoir fait un apt-get update first. donc on peut améliorer le call en faisant un :

LC_ALL=C apt-get update && ... la suite ou en 2 calls.

Donc voici le script php traitant les remarques précédentes où à priori un copier/coller mal venu m’a fait coller un code intermédiaire et pas le définitif :

$output = shell_exec('LC_ALL=C apt-get upgrade -s | grep -P "\d+ upgraded" -m 1 | cut -d " " -f 1');
if ($output != "") {
	message::add("Debian", ($output > 1?$output:'Une').' mise'.($output >1?'s':'').' à jour du système '.($output>1?'sont':'est').' disponible'.($output>1?'s':''));
} 

alternativement on peut mettre

if ($output > 0) {

1 « J'aime »

Hello,
Y’a un sujet intéressant ici : Comment mettre à jour debian depuis Jeedom? - #6 par freeman32

Mathieu

Bonjour,

Merci pour ce script, c’est utile/automatique !

Le script m’a donné 3 mises à jour, que faut-il faire ensuite svp ? je suis sur miniPC…
Peut-on le faire par script, faire un redémarrage automatique ?

Merci

Bonsoir @Bad

Merci pour cette précision,

Bonne soirée,
Au plaisir,