D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
opt
/
saltstack
/
salt
/
lib
/
python3.10
/
site-packages
/
salt
/
modules
/
Filename :
win_ntp.py
back
Copy
""" Management of NTP servers on Windows .. versionadded:: 2014.1.0 """ import logging import salt.utils.platform log = logging.getLogger(__name__) # Define the module's virtual name __virtualname__ = "ntp" def __virtual__(): """ This only supports Windows """ if not salt.utils.platform.is_windows(): return (False, "Module win_system: module only works on Windows systems") return __virtualname__ def set_servers(*servers): """ Set Windows to use a list of NTP servers CLI Example: .. code-block:: bash salt '*' ntp.set_servers 'pool.ntp.org' 'us.pool.ntp.org' """ service_name = "w32time" if not __salt__["service.status"](service_name): if not __salt__["service.start"](service_name): return False server_cmd = [ "W32tm", "/config", "/syncfromflags:manual", "/manualpeerlist:{}".format(" ".join(servers)), ] reliable_cmd = ["W32tm", "/config", "/reliable:yes"] update_cmd = ["W32tm", "/config", "/update"] for cmd in server_cmd, reliable_cmd, update_cmd: __salt__["cmd.run"](cmd, python_shell=False) if not sorted(list(servers)) == get_servers(): return False __salt__["service.restart"](service_name) return True def get_servers(): """ Get list of configured NTP servers CLI Example: .. code-block:: bash salt '*' ntp.get_servers """ cmd = ["w32tm", "/query", "/configuration"] lines = __salt__["cmd.run"](cmd, python_shell=False).splitlines() for line in lines: try: if line.startswith("NtpServer:"): _, ntpsvrs = line.rsplit(" (", 1)[0].split(":", 1) return sorted(ntpsvrs.split()) except ValueError as e: return False return False