Skip to content
Snippets Groups Projects
test_ntp.py 1.72 KiB
Newer Older
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2017, Florent Thiery
Checks that the server is synchronized with the configured NTP server.
import os
import sys
import subprocess
import imp

# Check that ntpd is synced
if os.path.isfile('/usr/bin/ntpq'):
    cmd = 'LANG=C ntpq -pd'
    expected = 'remote'
    ntpconf = '/etc/ntp.conf'
    ntpconf_expected = 'server '
    cmd = 'LANG=C timedatectl'
    expected = 'NTP synchronized'
    ntpconf = '/etc/systemd/timesyncd.conf'
    ntpconf_expected = 'NTP='
print('Running %s' % cmd)
status = subprocess.getoutput(cmd)
if expected not in status:
    print('NTP not working: %s' % status)
    sys.exit(1)
else:
    print('System is NTP synchronized')

os.chdir(os.path.dirname(__file__))

print('Checking NTP server conforms to conf')
if os.path.isfile('../utils.py'):
    es_utils = imp.load_source('es_utils', '../utils.py')
    conf = es_utils.load_conf()
    expected_servers = (conf.get('NTP_SERVER') or 'ntp.ubuntu.com').split(',')
    with open(ntpconf, 'r') as f:
        d = f.read()
        servers = list()
        for l in d.split('\n'):
            if l.startswith(ntpconf_expected):
                servers.append(l[len(ntpconf_expected):])
        for expected_server in expected_servers:
            if expected_server not in servers:
                print('Expected NTP server %s not found in %s, found %s instead.' % (expected_server, ntpconf, servers))
                sys.exit(1)
            else:
                print('Expected NTP server %s found in configuration (total servers: %s).' % (expected_server, len(servers)))
    print('NTP OK')
    print('Could not find envsetup conf file or not running from expected location.')
    sys.exit(1)