Auteur Sujet: Script de mise à l'heure automatique  (Lu 6044 fois)

0 Membres et 1 Invité sur ce sujet

vivien

  • Administrateur
  • *
  • Messages: 47 169
    • Twitter LaFibre.info
Script de mise à l'heure automatique
« le: 18 février 2014 à 17:54:20 »
Pour mettre à l'heure mes serveurs, j'utilise la crontab.

Mais je me suis dit qu'il était bête de solliciter un serveur NTP juste au changement de minute et qu'il serait pertinent d'introduire un délai aléatoire pour répartir mieux la charge.

Le code sleep $[ ( $RANDOM % 58 ) + 2 ]s fonctionne trés bien dans une invite de commande, mais pas dans la crontab, pourquoi ?

Dans la crontab, il ne cherche pas a remplacer les $ par la valeur calculée !

# mise a l'heure chaque heure entre à la première minute, entre 00:02min et 00:59min
00 * * * * sleep $[ ( $RANDOM % 58 ) + 2 ]s ; /usr/sbin/ntpdate 192.168.1.1 >>/home/log/ntpdate/ntpdate.log 2>&1

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 804
  • 73
Script de mise à l'heure automatique
« Réponse #1 le: 18 février 2014 à 18:17:51 »
Le code sleep $[ ( $RANDOM % 58 ) + 2 ]s fonctionne trés bien dans une invite de commande, mais pas dans la crontab, pourquoi ?

Dans la crontab, il ne cherche pas a remplacer les $ par la valeur calculée !

Est-ce que tu es sûr que les chaînes de caractères passées à crontab à l'emplacement des commandes sont bien exécutées avec bash ?

Tu devrais plutôt mettre le code dans un .sh, ça serait plus propre et résoudrait probablement le problème.

vivien

  • Administrateur
  • *
  • Messages: 47 169
    • Twitter LaFibre.info
Script de mise à l'heure automatique
« Réponse #2 le: 18 février 2014 à 18:29:19 »
Effectivement, c'est une incompatibilité de dash (qui a l'avantage d'être plus rapide que bash, utiliser moins de mémoire et avoir un exécutable 9 fois plus léger)

dash est utilisé par défaut sous Ubuntu / Debian pour tout ce qui est scripts.

Voici mon fichier test1.sh :
#!/bin/dash
sleep $[ ( $RANDOM % 58 ) + 2 ]s ; echo test

Cela ne fonctionne pas :
$ ./test1.sh
./test1.sh: 2: ./test.sh: Syntax error: "(" unexpected


Voici mon fichier test2.sh :
#!/bin/bash
sleep $[ ( $RANDOM % 58 ) + 2 ]s ; echo test

Cela fonctionne :
$ ./test2.sh
test

willemijns

  • Abonné FreeMobile
  • *
  • Messages: 2 681
Script de mise à l'heure automatique
« Réponse #3 le: 20 février 2014 à 22:33:36 »
Mais je me suis dit qu'il était bête de solliciter un serveur NTP juste au changement de minute et qu'il serait pertinent d'introduire un délai aléatoire pour répartir mieux la charge.

Hello,

pourquoi mettre un temps variable ? tu peux croner toutes les 3 heures au lieu de la minute non ?

vivien

  • Administrateur
  • *
  • Messages: 47 169
    • Twitter LaFibre.info
Script de mise à l'heure automatique
« Réponse #4 le: 20 février 2014 à 22:43:02 »
La je mets à jour toutes les heures (c'est vrai que c'est peut être un peu trop fréquent)

willemijns

  • Abonné FreeMobile
  • *
  • Messages: 2 681
Script de mise à l'heure automatique
« Réponse #5 le: 20 février 2014 à 23:02:42 »
La je mets à jour toutes les heures (c'est vrai que c'est peut être un peu trop fréquent)

apres est-ce qu'une requete NTP surement aussi grosse que 3 ou 4 requetes DNS le vent dans le dos va faire plomber un serveur ? j'en doute fort....

butler_fr

  • Client Bbox adsl
  • Modérateur
  • *
  • Messages: 3 607
  • FTTH orange
Script de mise à l'heure automatique
« Réponse #6 le: 21 février 2014 à 02:16:47 »
pourquoi ne pas utiliser ntpd?
c'est fait pour ça il me semble!

willemijns

  • Abonné FreeMobile
  • *
  • Messages: 2 681
Script de mise à l'heure automatique
« Réponse #7 le: 21 février 2014 à 08:40:37 »
c'est pour eviter d'avoir un daemon a gerer en plus je suppose....

vivien

  • Administrateur
  • *
  • Messages: 47 169
    • Twitter LaFibre.info
Script de mise à l'heure automatique
« Réponse #8 le: 21 février 2014 à 08:46:45 »
ntpd, c'est pour mettre en place un serveur ntp (afin que d'autres machines se mettent à l'heure)

Il y a le fichier /etc/default/ntpdate mais je n'ai pas compris quand était fait la mise à jour et où étaient les logs (vérifier si le serveur est toujours ok)

La crontab offre un autre avantage : contrôler l'heure de mise à jour. Sur des machines qui font des tests (et je ne fais aucun test la première minute de chaque heure). Le fait d'avoir un gros trafic qui sature le lien et entraîne de la gigue impacte la fiabilité de la mise à jour.

butler_fr

  • Client Bbox adsl
  • Modérateur
  • *
  • Messages: 3 607
  • FTTH orange
Script de mise à l'heure automatique
« Réponse #9 le: 21 février 2014 à 09:47:12 »
Pour moi ntpd c'est avant tout un client de mise a jour en continue de l'horloge
je ne sais si il fait aussi serveur (ce doit être paramétrable)
si tu introduis une notion aléatoire dans la mise a jour de ntpdate ça revient au même que d'utiliser ntpd non?
sauf que comme avantage ntpd calcule la dérive moyenne de ton horloge (drift) et la corrige a l' avance! (ou lorsque le réseau est hs!)

par contre quel besoin d'avoir toujours un serveur a l'heure à la ms près?

vivien

  • Administrateur
  • *
  • Messages: 47 169
    • Twitter LaFibre.info
Script de mise à l'heure automatique
« Réponse #10 le: 21 février 2014 à 09:50:12 »
Pour certains usages (capture wireshark coté client et coté serveur) c'est très important d'avoir une heure fiable à la ms prés. Sinon, c'est vrai que tant qeu cela ne décale pas trop ce n'est pas grave.

J'introduit une part de aléatoire limite (55 secondes d'aléatoire) sur un espace temps où je sais que je n'utilise pas la connexion.

butler_fr

  • Client Bbox adsl
  • Modérateur
  • *
  • Messages: 3 607
  • FTTH orange
Script de mise à l'heure automatique
« Réponse #11 le: 21 février 2014 à 10:16:25 »
ok  effectivement avec wireshark
:)