cClaude.rocks ☕ Le blog

[Nouvelles technologies du libre, sciences et coups de gueule…]

Menu
đŸ˜€ Ce billet a Ă©tĂ© Ă©ditĂ© le : 2021-11-23

Petite astuce rapide pour mettre Ă  jour votre Raspberry PI Ă  la bonne date et Ă  la bonne heure quand plus rien ne va.


ඏ

Les versions rĂ©centes de Raspbian et de Raspberry PI OS gĂšrent, par dĂ©faut, l’heure Ă  l’aide de timedatectl. timedatectl fait partie de systemd

La configuration par dĂ©faut attend que la synchronisation de l’heure se fasse au travers du protocole ntp (« Net Time Protocol »).

Lorsque votre machine n’est pas à l’heure, il n’est pas possible de faire des mises à jours ou d’installer de nouveaux paquets.

Vous pouvez rĂ©soudre cela Ă  l’aide d’une commande du type :

sudo timedatectl set-ntp False
sudo timedatectl set-time "Fri 2021-10-08 12:01:06 CEST"
sudo timedatectl set-ntp True

Le principe est d’exĂ©cuter les commandes en tant qu'administrateur de la machine et de commencer par dĂ©sactiver la synchronisation ntp.

Notez que le format suivant est valide, mais qu'il ne prend pas en compte le décalage horaire.

sudo timedatectl set-ntp False
sudo timedatectl set-time "2021-10-08 12:01:06"
sudo timedatectl set-ntp True

Le plus gros problÚme qui vous reste à résoudre étant de donner une chaßne pour la date correcte.

Pour vous donner une idée, je vous propose de regarder ce que vous retournent les 3 commandes suivantes :

timedatectl status ; date ; date -u

Vous obtiendrez quelque chose comme suit :


               Local time: jeu. 2021-10-14 16:13:41 CEST
           Universal time: jeu. 2021-10-14 14:13:41 UTC
                 RTC time: jeu. 2021-10-14 14:13:41
                Time zone: Europe/Paris (CEST, +0200)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
jeu. 14 oct. 2021 16:13:41 CEST
jeu. 14 oct. 2021 14:13:41 UTC


               Local time: Thu 2021-10-14 16:13:17 CEST
           Universal time: Thu 2021-10-14 14:13:17 UTC
                 RTC time: n/a
                Time zone: Europe/Paris (CEST, +0200)
System clock synchronized: yes
              NTP service: inactive
          RTC in local TZ: no
Thu 14 Oct 2021 04:13:17 PM CEST
Thu 14 Oct 2021 02:13:17 PM UTC

Et cela devrait vous permettre de bricoler quelque chose d’adapter à l’heure en cours.

Vous pouvez Ă©galement utiliser ce site https://www.unixtimestamp.com/ pour avoir l’heure actuelle au bon format.

Dans l’hypothùse d’une automatisation depuis une machine Linux ayant la bonne date/heure, vous pouvez construire la date à l’aide de :

date +'%Y-%m-%d %H:%M:%S %Z'

Et pour mettre à jour Ce qui vous permet de faire un truc du genre :

function update_remote_date {
  local -r ip="$1"
  local -r user="${2:-pi}"

  echo "Locale date: $( date +'%Y-%m-%d %H:%M:%S %Z' )"
  local cdate=
  cdate="$( date +'%Y-%m-%d %H:%M:%S' )"
  echo "Local date: ${cdate}"
  ssh "${user}@${ip}" "sudo timedatectl set-ntp False ; sudo timedatectl set-time '${cdate}' ; sudo timedatectl set-ntp True ; echo 'Remote date: $( date +'%Y-%m-%d %H:%M:%S %Z' )'"
}

update_remote_date '192.168.1.86'

ඏ

Pour aller un peu plus loin

  • A qui demandez-vous l'heure ?

    A qui demandez-vous l’heure ?

    La configuration de timedatectl ce trouve dans le fichier :

    cat /etc/systemd/timesyncd.conf
    

    Le contenu par défaut sous Raspberry Pi OS est :

    
    #  This file is part of systemd.
    #
    #  systemd is free software; you can redistribute it and/or modify it
    #  under the terms of the GNU Lesser General Public License as published by
    #  the Free Software Foundation; either version 2.1 of the License, or
    #  (at your option) any later version.
    #
    # Entries in this file show the compile time defaults.
    # You can change settings by editing this file.
    # Defaults can be restored by simply deleting this file.
    #
    # See timesyncd.conf(5) for details.
    
    [Time]
    #NTP=
    #FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
    #RootDistanceMaxSec=5
    #PollIntervalMinSec=32
    #PollIntervalMaxSec=2048
    
    

    Il sert principalement à définir à qui la machine demande l'heure.

  • Comment c'est passĂ© la synchronisation ?

    Comment c’est passĂ© la synchronisation ?

    Pour afficher l’état de la derniĂšre synchronisation, utilisez :

    timedatectl timesync-status
    

    Pour suivre ce qu’il se passe :

    timedatectl timesync-status --monitor
    

    Pour voir les logs :

    journalctl --unit=systemd-timesyncd.service --no-pager
    

኿


â„č 2006 - 2024 | 🏠 Accueil du domaine | 🏡 Accueil du blog