plugin.verbose(2, 'Got data:\n' + data)

try:
	idle = int(re.search('Idle(?:Workers|Servers): (\d+)\n', data).group(1))
	busy = int(re.search('Busy(?:Workers|Servers): (\d+)\n', data).group(1))
except:
	plugin.back2nagios(2, 'Could not analyze data!')

states = None
if plugin.options.statistics:
	scoreboard = re.search('Scoreboard: (.*)\n', data)
	if scoreboard:
		states = {'_':0, 'S':0, 'R':0, 'W':0, 'K':0, 'D':0, 'C':0, 'L':0, 'G':0, 'I':0, '.':0,}
		for worker in scoreboard.group(1):
			states[worker] += 1
		plugin.add_multilineoutput(str(states['_']) + ' waiting for connection')
		plugin.add_multilineoutput(str(states['S']) + ' starting up')
		plugin.add_multilineoutput(str(states['R']) + ' reading request')
		plugin.add_multilineoutput(str(states['W']) + ' writing/sending reply')
		plugin.add_multilineoutput(str(states['K']) + ' keepalive')
		plugin.add_multilineoutput(str(states['D']) + ' looking up in DNS')
		plugin.add_multilineoutput(str(states['C']) + ' closing connection')
		plugin.add_multilineoutput(str(states['L']) + ' logging')
		plugin.add_multilineoutput(str(states['G']) + ' gracefully finishing')
		plugin.add_multilineoutput(str(states['I']) + ' idle cleanup of worker')
		plugin.add_multilineoutput(str(states['.']) + ' open slots(up to ServerLimit)')

returncode = plugin.value_wc_to_returncode(busy, plugin.options.warn, plugin.options.crit)

plugin.add_output(str(busy) + ' busy workers, ' + str(idle) + ' idle')
    if plugin.options.verbose >= 3:
        plugin.verbose(3, "Read line(s):" % data)
        for line in data:
            plugin.verbose(3, "--> " + line.lstrip().rstrip())

    plugin.verbose(2, "Checking age of file")
    fileage = time.time() - os.path.getmtime(filename)
    if fileage > plugin.options.maxage:
        returncode = 3
        plugin.add_output('Data of sensor "%s" to old' % sensorid)
        plugin.add_multilineoutput(
            "%s %s because of file age: %s, limit: %s"
            % (
                sensorid,
                plugin.RETURNSTRINGS[returncode],
                plugin.seconds_to_timedelta(fileage),
                plugin.seconds_to_timedelta(plugin.options.maxage),
            )
        )
        plugin.add_returncode(returncode)
        plugin.verbose(2, "File to old, age: %s but only %s seconds allowed" % (long(fileage), plugin.options.maxage))
    else:
        plugin.verbose(2, "File age OK, age: %s and %s seconds are allowed" % (long(fileage), plugin.options.maxage))

        valuesinfile = 0

        for line in data:
            result = searchpattern.search(line)
            if result:
                sensor_type = None
	plugin.add_returncode(0)
	failed_dns = []

	for dns in plugin.options.dns.split(','):
		try:
			ip_dns = socket.gethostbyname(dns)
		except socket.gaierror:
			ip_dns = None

		if ip_dns:
			plugin.verbose(1, 'Found IP "%s" as DNS object "%s"' % (ip_dns, dns))
		else:
			plugin.verbose(1, 'Did not find IP for "%s"' % dns)

		if ip_iface != ip_dns:
			plugin.add_multilineoutput('CRITICAL - "%s" has unexpected IP "%s"' % (dns, ip_dns))
			failed_dns.append(dns)
		else:
			plugin.add_multilineoutput('OK - "%s" resolves to "%s"' % (dns, ip_dns))

		
	if len(failed_dns) == 0:
		plugin.add_returncode(0)
		plugin.add_output('All DNS objects have a correct IP')
	else:
		plugin.add_returncode(2)
		plugin.add_output('Following DNS objects did not resolve as expected: "%s"' % '", "'.join(failed_dns))

	plugin.exit()