PK œqhYî¶J‚ßF ßF ) nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/
Dir : /proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/states/ |
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64 IP: 209.182.202.254 |
Dir : //proc/self/root/opt/saltstack/salt/lib/python3.10/site-packages/salt/states/win_snmp.py |
""" Module for managing SNMP service settings on Windows servers. """ def __virtual__(): """ Load only on minions that have the win_snmp module. """ if "win_snmp.get_agent_settings" in __salt__: return True return (False, "win_snmp module could not be loaded") def agent_settings(name, contact, location, services=None): """ Manage the SNMP sysContact, sysLocation, and sysServices settings. :param str contact: The SNMP contact. :param str location: The SNMP location. :param str services: A list of selected services. Example of usage: .. code-block:: yaml snmp-agent-settings: win_snmp.agent_settings: - contact: Test Contact - location: Test Location - services: - Physical - Internet """ ret = {"name": name, "changes": {}, "comment": "", "result": None} ret_settings = {"changes": dict(), "failures": dict()} if not services: services = ["None"] # Filter services for unique items, and sort them for comparison purposes. services = sorted(set(services)) settings = {"contact": contact, "location": location, "services": services} current_settings = __salt__["win_snmp.get_agent_settings"]() for setting in settings: if str(settings[setting]) != str(current_settings[setting]): ret_settings["changes"][setting] = { "old": current_settings[setting], "new": settings[setting], } if not ret_settings["changes"]: ret["comment"] = "Agent settings already contain the provided values." ret["result"] = True return ret elif __opts__["test"]: ret["comment"] = "Agent settings will be changed." ret["changes"] = ret_settings return ret __salt__["win_snmp.set_agent_settings"](**settings) new_settings = __salt__["win_snmp.get_agent_settings"]() for setting in settings: if settings[setting] != new_settings[setting]: ret_settings["failures"][setting] = { "old": current_settings[setting], "new": new_settings[setting], } ret_settings["changes"].pop(setting, None) if ret_settings["failures"]: ret["comment"] = "Some agent settings failed to change." ret["changes"] = ret_settings ret["result"] = False else: ret["comment"] = "Set agent settings to contain the provided values." ret["changes"] = ret_settings["changes"] ret["result"] = True return ret def auth_traps_enabled(name, status=True): """ Manage the sending of authentication traps. :param bool status: The enabled status. Example of usage: .. code-block:: yaml snmp-auth-traps: win_snmp.auth_traps_enabled: - status: True """ ret = {"name": name, "changes": {}, "comment": "", "result": None} vname = "EnableAuthenticationTraps" current_status = __salt__["win_snmp.get_auth_traps_enabled"]() if status == current_status: ret["comment"] = f"{vname} already contains the provided value." ret["result"] = True elif __opts__["test"]: ret["comment"] = f"{vname} will be changed." ret["changes"] = {"old": current_status, "new": status} else: ret["comment"] = f"Set {vname} to contain the provided value." ret["changes"] = {"old": current_status, "new": status} ret["result"] = __salt__["win_snmp.set_auth_traps_enabled"](status=status) return ret def community_names(name, communities=None): """ Manage the SNMP accepted community names and their permissions. :param str communities: A dictionary of SNMP communities and permissions. Example of usage: .. code-block:: yaml snmp-community-names: win_snmp.community_names: - communities: TestCommunity: Read Only OtherCommunity: Read Write """ ret = {"name": name, "changes": dict(), "comment": "", "result": None} ret_communities = {"changes": dict(), "failures": dict()} if not communities: communities = dict() current_communities = __salt__["win_snmp.get_community_names"]() # Note any existing communities that should be removed. for current_vname in current_communities: if current_vname not in communities: ret_communities["changes"][current_vname] = { "old": current_communities[current_vname], "new": None, } # Note any new communities or existing communities that should be changed. for vname in communities: current_vdata = None if vname in current_communities: current_vdata = current_communities[vname] if communities[vname] != current_vdata: ret_communities["changes"][vname] = { "old": current_vdata, "new": communities[vname], } if not ret_communities["changes"]: ret["comment"] = "Communities already contain the provided values." ret["result"] = True return ret elif __opts__["test"]: ret["comment"] = "Communities will be changed." ret["changes"] = ret_communities return ret __salt__["win_snmp.set_community_names"](communities=communities) new_communities = __salt__["win_snmp.get_community_names"]() # Verify that any communities that needed to be removed were removed. for new_vname in new_communities: if new_vname not in communities: ret_communities["failures"][new_vname] = { "old": current_communities[new_vname], "new": new_communities[new_vname], } ret_communities["changes"].pop(new_vname, None) # Verify that any new communities or existing communities that # needed to be changed were changed. for vname in communities: new_vdata = None if vname in new_communities: new_vdata = new_communities[vname] if communities[vname] != new_vdata: ret_communities["failures"][vname] = { "old": current_communities[vname], "new": new_vdata, } ret_communities["changes"].pop(vname, None) if ret_communities["failures"]: ret["comment"] = "Some communities failed to change." ret["changes"] = ret_communities ret["result"] = False else: ret["comment"] = "Set communities to contain the provided values." ret["changes"] = ret_communities["changes"] ret["result"] = True return ret