check_nfs4.cpp 2.11 KB
#include "check_nfs4.h"

using namespace std;

char *servicename = (char*)"NFSv4";

void printVersion()
{
	cout << "check_csgo v" << VERSION << endl << endl;
}

void printHelp(bool longVersion)
{
	if(longVersion)
	{
		printVersion();
		cout << "Check CS:GO DS instance." << endl << endl;
		printHelp(false);
		cout << "Options:" << endl;
		cout << " -h" << endl;
		cout << "    Print detailed help screen" << endl;
		cout << " -V" << endl;
		cout << "    Print version information" << endl;
		cout << " -H HOSTADDRESS" << endl;
		cout << "    Host where the Source DS is running" << endl;
		cout << " -p" << endl;
		cout << "    Port where the Source DS is listening. Default is 27015." << endl << endl;
		return;
	}
	cout << "Usage: " << endl << "check_csgo [-hV] -H HOSTADDRESS [-p PORT]" << endl << endl;
}

int check_nfs4(char *hostname, char *mountpoint, string *detail)
{
	return 0;
}

int main(int argc, char **argv)
{
	struct itimerval timer;
	timer.it_value.tv_sec = 10;
	timer.it_value.tv_usec = 0;
	timer.it_interval.tv_sec = 0;
	timer.it_interval.tv_usec = 0;
	setitimer (ITIMER_VIRTUAL, &timer, 0);

	struct sigaction sa;
	memset (&sa, 0, sizeof (sa));
	sa.sa_handler = &timer_handler;
	sigaction (SIGVTALRM, &sa, 0);

	char *hostname = NULL;
	char *mountpoint = NULL;
	int c;

	while ((c = getopt (argc, argv, "H:m:Vh")) != -1)
	{
		switch(c)
		{
			case 'H':
        			hostname = optarg;
        			break;
			case 'm':
       		 		mountpoint = optarg;
       		 		break;
			case 'V':
				printVersion();
				return 0;
			case 'h':
				printHelp(true);
				return 0;
			case '?':
				printHelp(false);
				return 3;
		}
	}

	if(hostname == NULL)
	{
		cout << "No HOSTADDRESS specified. Exiting." << endl;
		return 3;
	}
	if(mountpoint == NULL)
	{
		cout << "No mountpoint specified. Exiting." << endl;
		return 3;
	}

	string details = "";
	int returnCode = check_nfs4(hostname,mountpoint,&details);

	cout << servicename;
	switch(returnCode)
	{
		case 0:
			cout << " OK";
            cout << " - " << mountpoint << " " << details << endl;
			break;

        case 2:
			cout << " CRITICAL - " << details << endl;
			break;
	}

	return returnCode;
}