web-ntp.py 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. import urllib.request
  2. import random
  3. import sys
  4. import os
  5. from datetime import datetime
  6. from datetime import timedelta
  7. import dateutil.parser
  8. import sys
  9. def cprint(*text,color="blue",space=" ",end="\n"):
  10. #return 0 #disable print dbg
  11. if not color:
  12. print(text)
  13. return 0
  14. if color == "green":
  15. txt = '\033[92m'
  16. elif color == "red":
  17. txt = '\033[0;31m\033[1m'
  18. elif color == "yellow":
  19. txt = '\033[93m\033[1m'
  20. elif color == "cyan":
  21. txt = '\033[96m'
  22. else:
  23. txt = '\033[94m'
  24. for t in text:
  25. txt += str(t ) +" "
  26. #HEADER = '\033[95m'
  27. #OKBLUE = '\033[94m'
  28. #OKCYAN = '\033[96m'
  29. #OKGREEN = '\033[92m'
  30. #WARNING = '\033[93m'
  31. #FAIL = '\033[91m'
  32. #ENDC = '\033[0m'
  33. #BOLD = '\033[1m'
  34. #UNDERLINE = '\033[4m'
  35. txt += '\033[0m'
  36. print(txt,end=end)
  37. #return txt
  38. try:
  39. sys.stdout.flush() # to grep output
  40. except BrokenPipeError as e:
  41. print("BROKEN PIPE ERROR CPRINT = EXIT")
  42. #exit()
  43. host = "http://uxsrv.de"
  44. host = "http://librelight.de"
  45. #host = "https://google.com"
  46. host += "?r={}".format(random.randint(1_000_000_000,9_000_000_000))
  47. print(sys.argv)
  48. if "-v" in sys.argv:print(host)
  49. if "-v" in sys.argv:print()
  50. import ssl
  51. #ignore cert warning ... localtime is not correct
  52. ctx = ssl.create_default_context()
  53. ctx.check_hostname = False
  54. ctx.verify_mode = ssl.CERT_NONE
  55. now = datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S')
  56. now = dateutil.parser.parse(now)
  57. now = now.replace(tzinfo=None)
  58. try:
  59. with urllib.request.urlopen(host,context=ctx) as response:
  60. #print(dir(response) )
  61. date = response.getheader("date")
  62. if "-v" in sys.argv:print("response:".ljust(20," "),date)
  63. date = dateutil.parser.parse(date)
  64. date = date.replace(tzinfo=None)
  65. delta = date-now
  66. if "-v" in sys.argv:print("delta: ".ljust(20," "),delta,type(delta))
  67. #print( timedelta(seconds=100))
  68. max_delta=timedelta(seconds=100)
  69. min_delta=timedelta(seconds=-100)
  70. print("-------")
  71. print( delta > max_delta , delta < min_delta)
  72. if delta > min_delta and delta < max_delta:
  73. cprint(delta,"delta is OK",color="green")
  74. exit()
  75. cprint(delta,"delta is to high",color="red")
  76. if "-v" in sys.argv:print("parse: ".ljust(20," "),date)
  77. date = date.strftime("%Y-%m-%d %H:%M:%S")
  78. ndate = os.popen("date").read().strip()
  79. print("current date: ".ljust(20," "),ndate)
  80. # set local linux date
  81. CMD = "/usr/bin/date -u -s '{}' > /dev/null ".format(date)
  82. print("CMD:".ljust(20," "),CMD)
  83. os.system(CMD)
  84. date = os.popen("date").read().strip()
  85. print("current date: ".ljust(20," "),date)
  86. # set hwclock
  87. date = os.popen("/usr/sbin/hwclock").read().strip()
  88. print("hwclock: ".ljust(20," "),date)
  89. date = os.popen("/usr/sbin/hwclock -w").read().strip()
  90. print("hwclock: ".ljust(20," "),date)
  91. except Exception as e:
  92. cprint("ERR",e,color="red")