def METHOD_NAME(
    self,
    host: TargetHost,
    community_string: str,
    command: str,
    agent_binary_downloaded: Event,
    options: SNMPOptions,
) -> Tuple[bool, bool]:
    """
    Exploit the host using SNMP using the provided community string
    :param host: The host to exploit
    :param community_string: The community string to use
    :param command: The command to execute
    :param agent_binary_downloaded: An event that will be set when the agent binary is
        downloaded
    :param options: The SNMP options
    :return: A tuple of two booleans: the first indicates whether the exploitation was
        successful, and the second indicates whether the propagation was successful
    """
    exploitation_message = ""
    exploitation_success = True
    timestamp = time()
    try:
        self._exploit(host.ip, community_string, command)
    except Exception as err:
        logger.exception(f"Attempt to exploit {host.ip} failed due to error: {err}")
        exploitation_message = f"{err}"
        exploitation_success = False
    propagation_success = self._evaluate_propagation_success(
        exploitation_success, agent_binary_downloaded, options.agent_binary_download_timeout
    )
    self._publish_exploitation_event(
        host, timestamp, exploitation_success, exploitation_message
    )
    self._publish_propagation_event(host, timestamp, propagation_success)
    return exploitation_success, propagation_success