Custem Button on the WebUI

Support forum for Nagios Core, Nagios Plugins, NCPA, NRPE, NSCA, NDOUtils and more. Engage with the community of users including those using the open source solutions.
Locked
Mapienator
Posts: 17
Joined: Thu Mar 26, 2015 10:09 am

Custem Button on the WebUI

Post by Mapienator »

I am trying to get a button in nagios to enable/disable (a toggle) in the web-UI
Also a way to print the output of the command {service ssh status}

I am able to do this with linking to a php page that has a simple perl code. What I want is the following code in a Nagios page (.cgi file).

Code: Select all

<?php
if ($_GET['run']) {
  # This code will run if ?run=true is set.
  exec("sudo scripts/ssh-start");
}
if ($_GET['runf']) {
  # This code will run if ?run=true is set.
  exec("sudo scripts/ssh-stop");
}

$status = exec('sudo scripts/ssh-status');

$check = substr($status, 0, 8);

if ($check == "ssh stop"){
	echo "<a href='?run=true'>Click Me! - ssh start</a>";	
}

else{
	echo "<a href='?runf=true'><img src='action.gif'></img></a>";		
}
?>
But i'm having trouble with converting it. Does anyone have something like this?
tmcdonald
Posts: 9117
Joined: Mon Sep 23, 2013 8:40 am

Re: Custem Button on the WebUI

Post by tmcdonald »

This would need to be written in C if you want it as a .cgi file. Is there something about PHP you don't like or do you just prefer it to be a CGI?
Former Nagios employee
Mapienator
Posts: 17
Joined: Thu Mar 26, 2015 10:09 am

Re: Custem Button on the WebUI

Post by Mapienator »

The main problem now is that i want to display a bash command output in a page that is made in c (extinfo.cgi). and i don't want any popups.

The code below is what I'm working on now. But is has problems.....

Code: Select all

char i;
  printf ("Checking if processor is available...");
  if (system(NULL)){ printf ("Ok");}
    else {
		exit (EXIT_FAILURE);
	printf("not ok");
	}
  printf ("Executing command ls...<br>\n");
//bash command: env
  i = system ('env');
  printf ("<br>The value returned was: %s.\n",i);

Code: Select all

Output:
Checking if processor is available...OkExecuting command ls...The value returned was: (null).
And I am not that skilled in programming, that's probaly the reason why I cant this to work.
tmcdonald
Posts: 9117
Joined: Mon Sep 23, 2013 8:40 am

Re: Custem Button on the WebUI

Post by tmcdonald »

The "system()" function in C will return the exit status of whatever you run, not the output. If you want to capture the output, check this guide out:

http://stackoverflow.com/questions/6462 ... get-output

Also keep in mind, while some of us on this forum are proficient in C, this is a Nagios forum. If you need assistance with the actual C language you should ask on a C forum.
Former Nagios employee
Mapienator
Posts: 17
Joined: Thu Mar 26, 2015 10:09 am

Re: Custem Button on the WebUI

Post by Mapienator »

Well. Thanks everyone for helping. I got it working. Maybe someone else can use it too.
I use this in my "extinfo.cgi" on the page "Process Info"

Code: Select all

printf("<tr><td>SSH Status</td>\n");
	/* SSH Status */
	#include <stdio.h>
#include <stdlib.h>
#include <string.h>

  FILE *fp;
  char path[1035];

  /* Open the command for reading. */
  fp = popen("sudo ssh-status", "r");
  if (fp == NULL) {
    printf("Failed to run command\n" );
    exit(1);
  }

  /* Read the output a line at a time - output it. */
  while (fgets(path, sizeof(path)-1, fp) != NULL) {
	  char *output[10];
	  char *control_status = "";
	  char *control_string = "";	  
	  int ret;
	  
	  control_status = path;	  
	  control_string = "ssh sta";
	  

	strncpy(output, control_status, 7);
	output[3] = '\0';

	ret = strcmp(output, control_string);
	if(ret == 0){
		printf("<td><div style='background-color: #00cc33; color:#fff; text-align:center;'>Enabled</div>\n");
	}
	else{
		printf("<td><div style='background-color: #ff0000; color:#fff; text-align:center;'>Disabled</div>\n");
	}
	
  }

  /* close */
  pclose(fp);
  
  printf("</td></tr>\n");
tmcdonald
Posts: 9117
Joined: Mon Sep 23, 2013 8:40 am

Re: Custem Button on the WebUI

Post by tmcdonald »

You are quite welcome!

I'll be closing this thread now, but feel free to open another if you need anything in the future!
Former Nagios employee
Locked