Installation 4.4.6 et changement de date?

Bonjour à tous
Je viens de refaire une install propre de Jeedom sur un débian fraîchement installé (11).
J’ai un script d’installation auto qui exécute le script d’installation jeedom, puis restaure ma sauvegarde qui fonctionne depuis des années.
Pendant l’installation, il m’affiche un pourcentage de l’avancement de l’installation en fonction de la date actuelle et du temps que je donne (150 secondes)
Au bout de quelques secondes, la date actuelle est apparement changée et revient en arrière de 20/25 secondes ce qui fait bugguer mon compteur.
Ce n’est pas vraiment important en soi, mais je m’interroge sachant que ça ne faisait pas ça avant et que mon debian était bien à l’heure, qu’est-ce qui expliquerait ce changement ?
Merci

Personne n’a une idée ?

Bonjour
Sans voir ton script je vois pas comment on pourrait te répondre

Voici le script en question, je passe la declaration de variables, et des fonctions bidon d’affichage, qui, a mon avis n’ont rien a voir avec le problème. Les fonctions sont utilisées dans plein d’autres installateurs et fonctionnent sans ce « souci ». Le but du script est d’afficher ligne par ligne l’execution de commandes, ainsi que leurs résultats.
La seule partie qui concerne spécifiquement jeedom c’est la fin :

#!/bin/bash
#...
function start
{
	play "$@" &
	PID=${!}
	disown
}
function stop
{
	OPTIND=1
	local INFO=""
	local TEXTE=""
	local NETWORK=0
	local RESULTAT=0
	while getopts ":r:n:" OPTION
	do
		case "$OPTION" in
			r)
				RESULTAT="$OPTARG"
			;;
			n)
				NETWORK="$OPTARG"
			;;
		esac
	done
	if [ "$RESULTAT" -eq 0 ]
	then
		TEXTE="OK"
	else
		ERREUR=1
		TEXTE="$(red "ERREUR")     "
	fi
	if [ "$NETWORK" -eq 1 ] && [[ "$IP" =~ ${REGEX[IP]} ]]
	then
		INFO=" : $IP"
	fi
	kill "$PID" >/dev/null 2>&1
	ligne "\n" "$(cat ${TEMP[TEXTE]})$INFO" "`echo -ne "${TEXTE}"`"
	delete
}
function play
{
	OPTIND=1
	local TIME=0
	local TEXTE=""
	local FICHIER=""
	while getopts ":t:f:w:" OPTION
	do
		case "$OPTION" in
			t)
				TEXTE="$OPTARG"
				echo "$OPTARG" > "${TEMP[TEXTE]}"
			;;
			f)
				FICHIER="$OPTARG"
			;;
			w)
				TIME="$OPTARG"
				NOW=$(date +%s)
				echo $NOW > "${TEMP[NOW]}"
				echo $(($NOW+$TIME)) > "${TEMP[END]}"
			;;
		esac
	done
	while true
	do
		for FRAME in "${DOTS[@]}"
		do
			if [ -z "$FICHIER" ] && [ "$TIME" -eq 0 ]
			then
				ligne "\r" "$TEXTE" "${FRAME}"
			else
				RESTE=""
				COMPTEUR=0
				if [ "$TIME" -gt 0 ]
				then
					NOW=$(date +%s)
					END=$(cat ${TEMP[END]})
					START=$(cat ${TEMP[NOW]})
					DIFFERENCE=$(($NOW-$START))
					PERCENT=$(echo "$DIFFERENCE*100/$TIME" | bc -l | cut -d '.' -f1)
					COMPTEUR=$(($END-$NOW))
				fi
				if [ ! -z "$PERCENT" ] && [ "$PERCENT" -gt 0 ] && [ "$PERCENT" -le 100 ]
				then
					if [ "$COMPTEUR" -gt 0 ]
					then
						RESTE=$(countdown $COMPTEUR)
					fi
					ligne "\r" "$TEXTE" "${PERCENT}% ${RESTE}"
				else
					ligne "\r" "$TEXTE" "${FRAME}"
				fi
			fi
			sleep 0.5
		done
	done
}
function execute
{
	TIME=0
	QUIET=0
	FILE=""
	TEXTE=""
	NETWORK=0
	RESULTAT=0
	COMMANDES=()
	if [ "$ERREUR" -eq 0 ]
	then
		while getopts ":qnt:c:f:w:" OPTION
		do
			case "$OPTION" in
				q)
					QUIET=1
				;;
				n)
					NETWORK=1
				;;
				t)
					TEXTE="$OPTARG"
				;;
				c)
					COMMANDES+=("$OPTARG")
				;;
				f)
					if [[ ! -z "$OPTARG" ]]
					then
						FILE="$OPTARG"
					fi
				;;
				w)
					if [[ ! -z "$OPTARG" ]]
					then
						TIME="$OPTARG"
					fi
				;;
			esac
		done
		[ "$QUIET" -eq 0 ] && start \
			-t "$TEXTE" \
			-f "$FILE" \
			-w "$TIME"
		for CMD in "${COMMANDES[@]}"
		do
			eval "$CMD" >/dev/null 2>&1
			RESULTAT=$(($RESULTAT+$?))
		done
		[ "$QUIET" -eq 0 ] && stop \
			-r "$RESULTAT" \
			-n "$NETWORK"
	else
		while getopts ":t:" OPTION
		do
			case "$OPTION" in
				t)
					TEXTE="$OPTARG"
				;;
			esac
		done
		echo "$TEXTE" > "${TEMP[TEXTE]}"
		stop -r 1
		REBOOT=0
	fi
	OPTIND=1
}
#...
execute -t "Installation de jeedom" -w 150 \
	-c "wget -qO- https://raw.githubusercontent.com/jeedom/core/V4-stable/install/install.sh | bash"
execute -t "Restauration de la sauvegarde" \
	-c "wget -qO ${FOLDER[HTML]}/backup/backup.tar.gz $URL/jeedom/backup.tar.gz" \
	-c "php ${FOLDER[HTML]}/install/restore.php"
#...

Et du coup, voici le log de la partie qui déconne, au bout de X secondes, la variable NOW qui contient le timestamp local, passe de 1718823117 a 1718823086 et donc recule de 31 secondes, je ne comprends donc pas comment c’est possible.

++ printf '| %-82s | %-11s |\r' 'Installation de jeedom' '10% (2m14)'

++ sleep 0.5

++ for FRAME in "${DOTS[@]}"

++ '[' -z '' ']'

++ '[' 150 -eq 0 ']'

++ RESTE=

++ COMPTEUR=0

++ '[' -f '' ']'

++ '[' 150 -gt 0 ']'

+++ date +%s

++ NOW=1718823117 #valeur avant que ça revienne en arriere

+++ cat /tmp/tmp/end

++ END=1718823251

+++ cat /tmp/tmp/now

++ START=1718823101

++ DIFFERENCE=16

+++ bc -l

+++ cut -d . -f1

+++ echo '16*100/150'

++ PERCENT=10

++ COMPTEUR=134

++ '[' '!' -z 10 ']'

++ '[' 10 -gt 0 ']'

++ '[' 10 -le 100 ']'

++ '[' 134 -gt 0 ']'

+++ countdown 134

+++ ZERO=

+++ MINUTES=2

+++ RESTANT=14

+++ '[' 2 -eq 0 ']'

+++ '[' 14 -eq 0 ']'

+++ '[' 14 -lt 10 ']'

+++ echo '(2m14)'

++ RESTE='(2m14)'

++ ligne '\r' 'Installation de jeedom' '10% (2m14)'

++ printf '| %-82s | %-11s |\r' 'Installation de jeedom' '10% (2m14)'

++ sleep 0.5

++ for FRAME in "${DOTS[@]}"

++ '[' -z '' ']'

++ '[' 150 -eq 0 ']'

++ RESTE=

++ COMPTEUR=0

++ '[' -f '' ']'

++ '[' 150 -gt 0 ']'

+++ date +%s

++ NOW=1718823086 # valeur erronée ?

+++ cat /tmp/tmp/end

++ END=1718823251

+++ cat /tmp/tmp/now

++ START=1718823101

++ DIFFERENCE=-15 # et du coup difference négative

+++ echo '-15*100/150'

+++ bc -l

+++ cut -d . -f1

++ PERCENT=-10

++ COMPTEUR=165

++ '[' '!' -z -10 ']'

++ '[' -10 -gt 0 ']'

++ ligne '\r' 'Installation de jeedom' ...

++ printf '| %-82s | %-11s |\r' 'Installation de jeedom' ...

Merci pour votre aide !

Bonjour
La seul raison que je vois c’est que la machine est pas à l’heure et donc jeedom lors de la restoration force une synchronisation avec le ntp et la remet à l’heure

J’ai aussi pensé à ça en premier, mais avant toute installation, je synchronise l’heure de chaque serveur.
Et je suis « presque » sûr que ça ne le faisais pas avant ces dernières mise à jour.
Yaurait il une ancienne version du script du dinstall que je vérifie ?

Tout le code et l’historique est sur le git :wink:

J’ai déjà regardé mais je n’ai rien trouvé.
J’ai même essayé de mettre une boucle dans le script qui écrit l’heure du serveur toutes les secondes et y’a pas d’erreur ou de décalage dedans, donc ce n’est pas un changement de date/heure le souci

Si c’est pas l’heure qui change qui change alors c’est un soucis dans ton script car je vois absolument pas comment jeedom pourrait modifier les variables de ton script (de ce que je comprends c’est ce qui arrive)

C’est aussi ce que j’ai pensé mais ce script fonctionne pour plein d’autres installations, c’est pour ça que je mettais jeedom en cause. Comme je source le reste, est-ce que justement c’est pas jeedom qui « écrase » une de mes variables ?

Faudrait regarder le script d’installation mais je pense pas, peut etre juste changer le nom des variable dans ton script

Bon j’ai modifié le nom de variable, pareil.
J’ai refait une boucle propre qui écrit la date du serveur toutes les secondes et finalement je constate bien qu’à chaque fois, je ne sais pas où ni comment, la date du serveur recule de 30 secondes.
Pourtant je fais à chaque fois sur chaque clone de debian un : timedatectl set-timezone « Europe/Paris »
Et suite au « bug » si je remets à jour la date elle reste identique. Bref j’aimerai tellement comprendre ce qui se passe

Là je saurais pas te dire ça dépasse un peu le support que je fais sur jeedom.

Je comprends. Si un expert bash passe par là, je veux bien comprendre mon problème :sunglasses:

Non je pense que c’est à vous à vous arranger par rapport à l’existant jeedom. Vous semblez compétant par rapport au script (sauf s’il vient de ChatGPT) donc je suis confiant vis à vis de votre analyse.

Oui oui c’est moi qui ai écrit chaque ligne du script :wink:
Je ne mets rien en cause sur jeedom, je comprends bien que ce n’est du tout une priorité pour vous.
J’aimerais juste comprendre ce qui se passe c’est tout. Sachant qu’encore une fois le script plus haut installe une douzaine d’autres serveurs self-hosted et seul Jeedom présente ce souci, c’est tout :wink:

pour nous ? qui ?

Pour les développeurs, ceux qui aident les autres à régler les soucis plus importants, etc

oh si on aide tout le monde :wink:

mais votre demande est très poussée et spécifique, il faudrait identifier l’endroit exact qui pose problème en debuggant votre script et ça y’a que vous qui pouvez le faire…

c’est probablement un ajustement ntp, comme disait mips, regardez l’historique du script install.php pour voir ce qui change et qui pourrait avoir changé

Je vais faire ça oui, l’idée du post c’était de savoir si quelqu’un n’avait pas d’idée en fonction d’un truc qui a récemment changé :wink: merci en tout cas