def get_info(host, *, users=None, connection=None): log.debug("Getting info about '{}'".format(host)) user, host = connection.ssh_user, connection.ssh_host data = OrderedDict() data["ssh_user"] = user data["ssh_host"] = host data["ssh"] = "{}@{}".format(user, host) data["whoami"] = ssh_cmd(connection, "whoami") systeminfo = ssh_cmd(connection, "systeminfo") if systeminfo: data["os"] = "windows" data["systeminfo"] = parse_systeminfo(systeminfo) data["package_tags"] = ["x86_64", "msi"] data["arch"] = "x86_64" agent = r'& "C:\Program Files\Cfengine\bin\cf-agent.exe"' data["agent"] = agent data["agent_version"] = parse_version( ssh_cmd(connection, '{} -V'.format(agent))) else: data["os"] = "unix" data["uname"] = ssh_cmd(connection, "uname") data["arch"] = ssh_cmd(connection, "uname -m") data["os_release"] = os_release( ssh_cmd(connection, "cat /etc/os-release")) data["agent_location"] = ssh_cmd(connection, "which cf-agent") data["policy_server"] = ssh_cmd(connection, "cat /var/cfengine/policy_server.dat") agent = r'/var/cfengine/bin/cf-agent' data["agent"] = agent data["agent_version"] = parse_version( ssh_cmd(connection, "{} --version".format(agent))) data["bin"] = {} for bin in ["dpkg", "rpm", "yum", "apt", "pkg"]: path = ssh_cmd(connection, "which {}".format(bin)) if path: data["bin"][bin] = path log.debug("JSON data from host info: \n" + pretty(data)) return data
def get_info(host, *, users=None, connection=None): log.debug("Getting info about '{}'".format(host)) user, host = connection.ssh_user, connection.ssh_host data = OrderedDict() data["ssh_user"] = user data["ssh_host"] = host data["ssh"] = "{}@{}".format(user, host) data["whoami"] = ssh_cmd(connection, "whoami") systeminfo = ssh_cmd(connection, "systeminfo") if systeminfo: data["os"] = "windows" data["systeminfo"] = parse_systeminfo(systeminfo) data["package_tags"] = ["x86_64", "msi"] data["arch"] = "x86_64" agent = r"& 'C:\Program Files\Cfengine\bin\cf-agent.exe'" data["agent"] = agent version_cmd = powershell('{} -V'.format(agent)) data["agent_version"] = parse_version(ssh_cmd(connection, version_cmd)) else: data["os"] = "unix" data["uname"] = ssh_cmd(connection, "uname") data["arch"] = ssh_cmd(connection, "uname -m") data["os_release"] = os_release( ssh_cmd(connection, "cat /etc/os-release")) tags = [] if data["os_release"]: distro = data["os_release"]["ID"] major = data["os_release"]["VERSION_ID"].split(".")[0] platform_tag = distro + major # Add tags with version number first, to filter by them first: tags.append(platform_tag) # Example: ubuntu16 if distro == "centos": tags.append("el" + major) # Then add more generic tags (lower priority): tags.append(distro) # Example: ubuntu if distro == "centos": tags.append("rhel") tags.append("el") else: redhat_release = ssh_cmd(connection, "cat /etc/redhat-release") if redhat_release: # Examples: # CentOS release 6.10 (Final) # Red Hat Enterprise Linux release 8.0 (Ootpa) before, after = redhat_release.split(" release ") distro = "rhel" if before.lower().startswith("centos"): distro = "centos" major = after.split(".")[0] tags.append(distro + major) tags.append("el" + major) if "rhel" not in tags: tags.append("rhel" + major) tags.append(distro) if "rhel" not in tags: tags.append("rhel") tags.append("el") data["package_tags"] = tags data["agent_location"] = ssh_cmd(connection, "which cf-agent") data["policy_server"] = ssh_cmd(connection, "cat /var/cfengine/policy_server.dat") agent = r'/var/cfengine/bin/cf-agent' data["agent"] = agent data["agent_version"] = parse_version( ssh_cmd(connection, "{} --version".format(agent))) data["bin"] = {} for bin in ["dpkg", "rpm", "yum", "apt", "pkg"]: path = ssh_cmd(connection, "which {}".format(bin)) if path: data["bin"][bin] = path log.debug("JSON data from host info: \n" + pretty(data)) return data