Files
aaPanel/script/sync_time.py
T
Jack a24f2e23c6 Update to 7.25.0
1. Added Mail Marketing Automation trigger tasks
2. Added Mail Marketing Groups Import, Export, Merge
3. Added Mail Marketing Subscribers to support paste import
4. Added Mail Marketing Template Import Export Duplicate
5. Added Mail server add timed automatic reply
6. Added HTTPS Protection function for Website (disables automatic HTTP to HTTPS redirection when enabled)
7. Optimize Website Interface Button Integration
8. Optimize the response speed of WP Toolkit interface
2025-03-13 17:52:26 +08:00

84 lines
2.5 KiB
Python

import os
import sys
import time
import traceback
try:
import requests
except:
os.system("btpip install requests")
import requests
try:
import ntplib
except:
os.system("btpip install ntplib")
import ntplib
from datetime import datetime
try:
import pytz
except:
os.system("btpip install pytz")
import pytz
def sync_server_time(server, zone):
try:
print("Getting time from {}...".format(server))
client = ntplib.NTPClient()
response = client.request(server, version=3)
timestamp = response.tx_time
tz = pytz.timezone(zone)
time_zone = datetime.fromtimestamp(timestamp, tz)
local_time = datetime.now()
offset = timestamp - time.time()
print("Local time:", local_time)
print("Server time:", time_zone)
print("Time offset:", offset, "seconds")
import os
print("Syncing time...")
os.system('date -s "{}"'.format(time_zone))
return True
except Exception as e:
print("Failed to retrieve time from {}!".format(server))
# print(traceback.format_exc())
return False
server_list = ['cn.pool.ntp.org', '0.pool.ntp.org', '2.pool.ntp.org']
if __name__ == '__main__':
area = sys.argv[1].split('/')[0]
zone = sys.argv[1].split('/')[1]
print("Current time zone setting:{}".format(sys.argv[1]))
if not zone:
exit()
os.system('rm -f /etc/localtime')
os.system("ln -s '/usr/share/zoneinfo/" + area + "/" + zone + "' '/etc/localtime'")
flag = 0
for server in server_list:
if sync_server_time(server, sys.argv[1]):
flag = 1
print("|-Synchronized time successfully!")
break
if flag == 0:
try:
print("Getting time from {}...".format('http://www.bt.cn'))
r = requests.get("http://www.bt.cn/api/index/get_time")
timestamp = int(r.text)
tz = pytz.timezone(sys.argv[1])
time_zone = datetime.fromtimestamp(timestamp, tz)
local_time = datetime.now()
offset = timestamp - time.time()
print("Local time:", local_time)
print("Server time:", time_zone)
print("Time offset:", offset, "秒")
print("Syncing time...")
os.system(f"date -s '{time_zone}'")
flag = 1
print("|-Synchronized time successfully!")
except:
print(traceback.format_exc())
if flag == 0:
print("|-Synchronization time error!")