plugin.add_cmdlineoption("-s", "", "sensorid", "(comma separated list of) sensor id(s), no spaces", default=None)
plugin.add_cmdlineoption(
    "-m", "", "maxage", "maximum age of data files (default: 900 seconds/15 minutes)", type="int", default=900
)
plugin.add_cmdlineoption("-p", "", "path", "path to data files", default="/tmp")
plugin.add_cmdlineoption("-b", "", "basefilename", "base of sensor file name", default="sensor_")
plugin.add_cmdlineoption("-w", "", "tempwarn", "warning thresold for temperature sensors", default=None)
plugin.add_cmdlineoption("-c", "", "tempcrit", "critical thresold for temperature sensors", default=None)
plugin.add_cmdlineoption("-W", "", "humwarn", "warning thresold for humidity sensors", default=None)
plugin.add_cmdlineoption("-C", "", "humcrit", "critical thresold for humidity sensors", default=None)

plugin.parse_cmdlineoptions()

# No sensor id
if not plugin.options.sensorid:
    plugin.back2nagios(3, "Need at least one sensor id!")

# Make list of sensor ids
if "," in plugin.options.sensorid:
    plugin.options.sensorid = plugin.options.sensorid.split(",")
else:
    plugin.options.sensorid = [plugin.options.sensorid]

# Check all sensor ids are hex
re_hex = re.compile("^[0-9A-Fa-f]+$")
for sid in plugin.options.sensorid:
    if not re_hex.search(sid):
        plugin.back2nagios(3, 'Sensor id "%s" must be integer or hex!' % sid)

plugin.verbose(1, "Sensor id(s): " + " - ".join([str(s) for s in plugin.options.sensorid]))
plugin.add_cmdlineoption('-w', '', 'warn', 'warning thresold', default='')
plugin.add_cmdlineoption('-c', '', 'crit', 'warning thresold', default='')

plugin.parse_cmdlineoptions()


if not plugin.options.nagiostats:
	plugin.verbose(2, 'Auto-detecting path to "nagiostats"...')
	for nagiostats in NAGIOSTATSs:
		if os.path.exists(nagiostats):
			plugin.options.nagiostats = nagiostats
			plugin.verbose(2, 'Found it at "%s"' % nagiostats)
			break

if not os.path.exists(plugin.options.nagiostats):
	plugin.back2nagios(3, 'Could not find "nagiostats"')

if not plugin.options.checks and not plugin.options.vars:
	plugin.back2nagios(3, 'Need either "-C" or "-V"')

# Checks and Variables
varlist = []
varlist_unknown = []

# Built var list out of -C
if plugin.options.checks:
	for check in plugin.options.checks.split(','):
		if check not in CHECKs:
			plugin.back2nagios(3, 'Unknown check "%s"' % check)
		varlist.extend(CHECKs[check])
plugin = MonitoringPlugin(pluginname='check_apaches', tagforstatusline='APACHE', description='Check Apache workers', version='0.1')

plugin.add_cmdlineoption('-H', '', 'host', 'Hostname/IP to check', default='localhost')
plugin.add_cmdlineoption('-p', '', 'port', 'port to connect', default=None)
plugin.add_cmdlineoption('-P', '', 'proto', 'protocol to use', default='http')
plugin.add_cmdlineoption('-u', '', 'url', 'path to "server-status"', default='/server-status')
plugin.add_cmdlineoption('-a', '', 'httpauth', 'HTTP Username and Password, separated by ":"')
plugin.add_cmdlineoption('-w', '', 'warn', 'warning thresold', default='20')
plugin.add_cmdlineoption('-c', '', 'crit', 'warning thresold', default='50')
plugin.add_cmdlineoption('', '--statistics', 'statistics', 'Output worker statistics', action='store_true')

plugin.parse_cmdlineoptions()

if plugin.options.proto not in ['http', 'https']:
	plugin.back2nagios(3, 'Unknown protocol "' + plugin.options.proto + '"')

if not plugin.options.port:
	if plugin.options.proto == 'https':
		plugin.options.port = '443'
	else:
		plugin.options.port = '80'

url = plugin.options.proto + '://' + plugin.options.host + ':' + plugin.options.port + '/' + plugin.options.url + '?auto'
plugin.verbose(1, 'Status URL: ' + url)

if plugin.options.httpauth:
	httpauth = plugin.options.httpauth.split(':')
	if len(httpauth) != 2:
		plugin.back2nagios(3, 'Wrong format of authentication data! Need "USERNAME:PASSWORD", got "' + plugin.options.httpauth + '"')
	passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
plugin = MonitoringPlugin(pluginname='check_netconnections', tagforstatusline='NETCONNS', description='Count network connections', version='0.1')

plugin.add_cmdlineoption('-p', '', 'port', 'port number', default=None)
plugin.add_cmdlineoption('-t', '--tcp', 'tcp', 'count TCP connections (default)', action='store_true')
plugin.add_cmdlineoption('-u', '--udp', 'udp', 'count TCP connections', action='store_true')
plugin.add_cmdlineoption('-4', '', 'v4', 'count IPv4 connections (default)', action='store_true')
plugin.add_cmdlineoption('-6', '', 'v6', 'count IPv6 connections (default)', action='store_true')
plugin.add_cmdlineoption('-w', '', 'warn', 'warning thresold', default='20')
plugin.add_cmdlineoption('-c', '', 'crit', 'warning thresold', default='50')

plugin.parse_cmdlineoptions()

# Need a port number
if not plugin.options.port:
	plugin.back2nagios(3, 'No port number specified!')
else:
	plugin.options.port = int(plugin.options.port)


# Settings defaults
if not plugin.options.udp and not plugin.options.tcp:
	plugin.options.tcp = True

if not plugin.options.v4 and not plugin.options.v6:
	plugin.options.v4 = True
	plugin.options.v6 = True


# RegExp
v4match = re.compile('^\s*\d*:\s*([0-9A-Fa-f]{8}):([0-9A-Fa-f]{4})\s+([0-9A-Fa-f]{8}):([0-9A-Fa-f]{4})')
#if not plugin.options.v4 and not plugin.options.v6:
#	plugin.options.v4 = True
#
#if plugin.options.v4:
#	plugin.verbose(1, 'Using IPv4')
#
#if plugin.options.v6:
#	plugin.verbose(1, 'Using IPv6')


# Get IP from interface
try:
	ip_iface = get_ipv4_address(plugin.options.iface)
except IOError, (errno, strerror):
	if errno == 19:
		plugin.back2nagios(2, 'Interface "%s" does not exist!' % plugin.options.iface)
	elif errno == 99:
		plugin.back2nagios(2, 'Interface "%s" has no IP!' % plugin.options.iface)

	plugin.back2nagios(2, 'I/O error(%s): %s, interface "%s"' % (errno, strerror, plugin.options.iface))

plugin.verbose(1, 'Found IP "%s" on interface "%s"' % (ip_iface, plugin.options.iface))

# Get IP(s) from DNS
if not ',' in plugin.options.dns:
	# Only one DNS object
	try:
		ip_dns = socket.gethostbyname(plugin.options.dns)
	except socket.gaierror:
		ip_dns = None
		plugin.back2nagios(1, 'Could not find "%s" in DNS!' % plugin.options.dns)