diff --git a/bin/tmux-chrony-timediff b/bin/tmux-chrony-timediff deleted file mode 100755 index 0cfce9f..0000000 --- a/bin/tmux-chrony-timediff +++ /dev/null @@ -1,50 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- - -import math -import subprocess -import sys - -# ╰─○ chronyc tracking -# Reference ID : 192.53.103.108 (ptbtime1.ptb.de) -# Stratum : 2 -# Ref time (UTC) : Mon Oct 30 09:48:39 2017 -# System time : 0.000000000 seconds fast of NTP time -# Last offset : +0.000054065 seconds -# RMS offset : 42.973133087 seconds -# Frequency : 421.567 ppm fast -# Residual freq : +0.013 ppm -# Skew : 0.218 ppm -# Root delay : 0.017120 seconds -# Root dispersion : 0.001280 seconds -# Update interval : 238.4 seconds -# Leap status : Normal - -KEY_SYSTEM_TIME = 'System time' -KEY_PARSED_OFFSET = 'Parsed offset' - -def get_stats(): - stats = {} - for line in subprocess.check_output(['/usr/bin/chronyc', 'tracking']).decode('utf-8').split('\n'): - line_parts = line.split(' : ') - if len(line_parts) != 2: - continue - desc, cont = line_parts - stats[desc.strip()] = cont.strip() - - offset_parts = stats[KEY_SYSTEM_TIME].split(' ') - offset = float(offset_parts[0]) * (1 if offset_parts[2] == 'fast' else -1) - stats[KEY_PARSED_OFFSET] = offset - - return stats - -def main(): - stats = get_stats() - - if math.fabs(stats[KEY_PARSED_OFFSET]) > 1.0: - print('{:.2f}s diff'.format(stats[KEY_PARSED_OFFSET])) - - return 0 - -if __name__ == '__main__': - sys.exit(main()) diff --git a/bin/tmux-timediff b/bin/tmux-timediff new file mode 100755 index 0000000..bd4933d --- /dev/null +++ b/bin/tmux-timediff @@ -0,0 +1,66 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import math +import re +import subprocess +import sys + +# # timedatectl timesync-status +# Server: 2001:638:610:be01::108 (ptbtime1.ptb.de) +# Poll interval: 17min 4s (min: 32s; max 34min 8s) +# Leap: normal +# Version: 4 +# Stratum: 1 +# Reference: PTB +# Precision: 1us (-20) +# Root distance: 167us (max: 5s) +# Offset: +1.086ms +# Delay: 11.524ms +# Jitter: 445us +# Packet count: 5 +# Frequency: +99.341ppm + +KEY_OFFSET = 'Offset' +KEY_PARSED_OFFSET = 'Parsed Offset' + +mult = { + 's': 1.0, + 'ms': 1.0 / 1000.0, + 'us': 1.0 / 1000000.0, +} + + +def get_stats(): + stats = {} + for line in subprocess.check_output(['timedatectl', 'timesync-status']).decode('utf-8').split('\n'): + line_parts = line.split(': ', 2) + if len(line_parts) != 2: + continue + desc, cont = line_parts + stats[desc.strip()] = cont.strip() + + groups = re.search(r'^([+-])([0-9.]+)([a-z]+)$', + stats[KEY_OFFSET]).groups() + offset = float(groups[1]) + offset = offset * mult[groups[2]] + + if groups[0] == '-': + offset = offset * -1 + + stats[KEY_PARSED_OFFSET] = offset + + return stats + + +def main(): + stats = get_stats() + + if math.fabs(stats[KEY_PARSED_OFFSET]) > 1.0: + print('{:.2f}s diff'.format(stats[KEY_PARSED_OFFSET])) + + return 0 + + +if __name__ == '__main__': + sys.exit(main())