#!/usr/bin/python

import dbus

bus = dbus.SystemBus()

clock = dbus.Interface(bus.get_object("net.connman", "/"),
					"net.connman.Clock")

properties = clock.GetProperties()

for key in properties.keys():
	if key in ["Timeservers"]:
		list = ""
		for val in properties[key]:
			list = list + val + " "
		print "%s = [ %s]" % (key, list)
	else:
		print "%s = %s" % (key, properties[key])
