Re hello;
Peut-être une piste pour faire cela automatiquement: une commande à lancer en root (pour être autorisé à changer le fuseau horaire).
Surement possible de la mettre dans un script bash pour pouvoir le lancer automatiquement au démarrage, ou alors dans une tache cron si on change de fuseau horaire toutes les 5 minutes (...).
C'est surement à améliorer pour éviter de passer par des fichiers temporaires, je n'ai pas assez cherché comment récupérer la sortie d'une commande pour l'utiliser dans la suivante.
Enfin, à tester si le site utilisé renseigne toujours la "tiimezone" dans une syntaxe comprise par la commande timedatectl.
Le site utilisé pour obtenir la "timezone" selon l'IP est:
https://ipinfo.io/
--- 1/ On récupère son contenu qu'on enregistre dans un fichier ipinfo.html:
[root@linux z_tmp]# wget -O ipinfo.html ipinfo.io
Son contenu est:
[root@linux z_tmp]# more ipinfo.html
{
"ip": "xx.xx.xxx.xx",
"city": "Issy-les-Moulineaux",
"region": "Île-de-France",
"country": "FR",
"loc": "48.8210,2.2772",
"org": "AS3215 Orange S.A.",
"postal": "92130",
"timezone": "Europe/Paris",
"readme": "https://ipinfo.io/missingauth"
}
[root@linux z_tmp]#
--- 2/ On récupère les valeurs de ce fichier qu'on écrit dans le fichier stepA.txt:
awk '{print $2}' ipinfo.html > stepA.txt
Ce qui donne:
[root@linux z_tmp]# more stepA.txt
"xx.xx.xxx.xx",
"Issy-les-Moulineaux",
"Île-de-France",
"FR",
"48.8210,2.2772",
"AS3215
"92130",
"Europe/Paris",
"https://ipinfo.io/missingauth"
[root@linux z_tmp]#
--- 3/ On récupère la neuvième ligne qui contient la "timezone" et on l'écrit dans le fichier stepB.txt:
awk 'NR==9' stepA.txt > stepB.txt
Ce qui donne:
[root@linux z_tmp]# more stepB.txt
"Europe/Paris",
[root@linux z_tmp]#
--- 4/ On extrait la chaine de caractères entre les guillemets, qu'on écrit dans le fichier stepC.txt:
[root@linux z_tmp]# awk -F'\"' '{print $2}' stepB.txt > stepC.txt
Ce qui donne:
[root@linux z_tmp]# more stepC.txt
Europe/Paris
[root@linux z_tmp]#
--- 5/ Et enfin, on envoie ce paramètre dans la commande timedatectl:
more stepC.txt | awk -F: '{ "timedatectl set-timezone "$1""}'
On peut exécuter toutes ces commandes l'une après l'autre dans une seule ligne en les enchainant avec des "&&" (ou bien mettre ces commandes dans un script):
[root@linux z_tmp]# timedatectl
Local time: lun. 2019-12-23 20:04:25 CET
Universal time: lun. 2019-12-23 19:04:25 UTC
RTC time: lun. 2019-12-23 19:04:25
Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@linux z_tmp]#
[root@linux z_tmp]# timedatectl set-timezone America/New_York
[root@linux z_tmp]#
[root@linux z_tmp]# timedatectl
Local time: lun. 2019-12-23 14:05:06 EST
Universal time: lun. 2019-12-23 19:05:06 UTC
RTC time: lun. 2019-12-23 19:05:07
Time zone: America/New_York (EST, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@linux z_tmp]#
[root@linux z_tmp]# wget -O ipinfo.html ipinfo.io && awk '{print $2}' ipinfo.html > stepA.txt && awk 'NR==9' stepA.txt > stepB.txt && awk -F'\"' '{print $2}' stepB.txt > stepC.txt && more stepC.txt | timedatectl set-timezone "$(cat stepC.txt)"
--2019-12-23 14:05:37-- http://ipinfo.io/
Résolution de ipinfo.io (ipinfo.io)… 216.239.34.21, 216.239.38.21, 216.239.36.21, ...
Connexion à ipinfo.io (ipinfo.io)|216.239.34.21|:80… connecté.
requête HTTP transmise, en attente de la réponse… 200 OK
Taille : 262 [application/json]
Sauvegarde en : « ipinfo.html »
ipinfo.html 100%[=================================================>] 262 --.-KB/s ds 0s
2019-12-23 14:05:38 (5,90 MB/s) — « ipinfo.html » sauvegardé [262/262]
[root@linux z_tmp]#
[root@linux z_tmp]# timedatectl
Local time: lun. 2019-12-23 20:05:46 CET
Universal time: lun. 2019-12-23 19:05:46 UTC
RTC time: lun. 2019-12-23 19:05:46
Time zone: Europe/Paris (CET, +0100)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
[root@linux z_tmp]#