def get_ActiveItemList(**kwargs): def zbx_ask_question(connection, question): connection.send(zbxQuestion) retval = connection.recv(8192) return (len(retval), retval) zbxConfig = zabbix.get_AgentConfig(**kwargs) if kwargs.get('auto_register', False): run_count = int(kwargs.get('run_count', 0)) run_delay = int(kwargs.get('run_delay', 1)) else: run_count = 0 run_delay = 1 count = 0 size = 0 zbxQuestion = 'ZBX_GET_ACTIVE_CHECKS\n{0}\n'.format(zbxConfig.zabbix_host) zbxClient = socket.socket(socket.AF_INET, socket.SOCK_STREAM) while size == 0: count += 1 zbxClient.connect((zbxConfig.zabbix_serv, int(zbxConfig.zabbix_port))) (size, content) = zbx_ask_question(zbxClient,zbxQuestion) zbxClient.close() if count > run_count: break time.sleep(1) if size == 0: return ZBX_HOST_NOTFOUND if kwargs.get('auto_register', False): if size > 8: return ZBX_HOST_DIDEXIST elif size == 8: return ZBX_HOST_REGISTER else: return ZBX_HOST_UNKNOWN if size == 8: return ZBX_HOST_NOACTIVE return [x.rsplit(':',2) for x in content.split('\n') if x != 'ZBX_EOF' and len(x) > 1]
def parse_arguments(): """ Collect and collate command line arguments. """ import argparse parser = argparse.ArgumentParser( add_help=True, description="Send one or more key/value pairs to the Zabbix server.", ) parser.add_argument( '-V', '--version', action='version', help='Display version number', version='%(prog)s v{}'.format(zabbix.__version__) ) noisey = parser.add_mutually_exclusive_group() noisey.add_argument( '-v', '--verbose', action='count', help='Verbose mode, -vv for more details (Disabled)', dest='verbose', default=0, ) noisey.add_argument( '-q', '--quiet', action='count', help='Disable all output', dest='quiet', default=0, ) parser.add_argument( '-c', '--config', action='store', help='Absolute path to the configuration file. Default is /etc/zabbix/zabbix_agentd.conf', dest='zabbix_agent_conf', nargs='?', default=argparse.SUPPRESS, metavar='<file>', ) parser.add_argument( '-z', '--zabbix-server', action='store', help='Hostname or IP address of Zabbix server', dest='zabbix_serv', nargs='?', default=argparse.SUPPRESS, metavar='<server>', ) parser.add_argument( '-p', '--port', action='store', help='Specify port number of server trapper running on the server. Default is {}'.format(zabbix.__zabbix_serv_port__), dest='zabbix_port', nargs='?', default=argparse.SUPPRESS, metavar='<server port>', type=int, ) parser.add_argument( '-s', '--host', action='store', help='Specify host name. Host IP address and DNS name will not work. Default is {}'.format(zabbix.__zabbix_node_name__), dest='zabbix_host', nargs='?', default=argparse.SUPPRESS, metavar='<hostname>', ) parser.add_argument( '-I', '--source-address', action='store', help='Specify source IP address.', dest='ip_address', nargs='?', default=argparse.SUPPRESS, metavar='<IP address>', ) sendmode_single = parser.add_argument_group('Single Item') sendmode_single.add_argument( '-k', '--key', action='store', help='Specify item key', dest='zabbix_key', nargs='?', default=argparse.SUPPRESS, metavar='<key>', ) sendmode_single.add_argument( '-o', '--value', action='store', help='Specify item value', dest='zabbix_value', nargs='?', default=argparse.SUPPRESS, metavar='<key value>', ) sendmode_multiple = parser.add_argument_group('Multiple Item') sendmode_multiple.add_argument( '-i', '--input-file', action='store', help='Load values from input file. To specify standard input, use "-"', dest='item_file', nargs='?', default=argparse.SUPPRESS, metavar='<input file>', ) sendmode_multiple.add_argument( '-T', '--with-timestamps', action='store_true', help='Load values from input file. Specify - for standard input. Each line of file contains whitespace delimited: <hostname> <key> <value>. Specify - in <hostname> to use hostname from configuration file or --host argument. All entries are sent in a sequential order top-down.', dest='with_timestamps', ) sendmode_realtime = parser.add_argument_group('Real Time Items') sendmode_realtime.add_argument( '-r', '--real-time', action='store_true', help='Send values one by one as soon as they are received. This can be used when reading from standard input.', dest='real-time', ) cliargs = {key: value for key, value in vars(parser.parse_args()).items() if value is not None} cnfargs = vars(zabbix.get_AgentConfig(**cliargs)) retval = cnfargs.copy() retval.update(cliargs) return retval