How to use: F5_session_cngw_prod-h host-o oid
VI F5_SESSION_CNGW_PROD.C
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #define OK 0#defi Ne WARNING 1#define CRITICAL 2#define UNKNOWN 3#define LEN 1000#define len_short 512int Exitstatus=ok;char *exit_status[ 4]={"OK", "WARNING", "CRITICAL", "UNKNOWN"};char *power_status[4]={"active", "deactive", "Not_install", "Unsupport"}; Char Status_information[len];char performance_data[len];int Sum_conn;char Sum_conn_all[len_short];char sum_conn_170 _245[len_short];char sum_conn_171_245[len_short];void print_usage (char str[32]) {printf ("Usage:%s [options]\n", STR); printf ("e.g.%s-h 1.1.1.1-o. 1.3.6...\n", str); printf ("options:\n"); printf ("\t-h IP address\n"); printf ("\t-o snmp oid\n"); }/*int check_argv () {while ((Ch=getopt (ARGC,ARGV, "H:o:"))!=-1) {switch (CH) { Case ' H '://printf ("option h:%s\n", Optarg); Break; Case ' O '://printf ("option o:%s\n", Optarg); Break Default://printf ("Other option:%c\n", ch); Break }} return-1;} */int Parse_status (char *sh_cmd) {int ret; int line=0; FILE *FP; Char readbuf[len_short];//fp=popen ("/usr/bin/snmpwalk-v2c-c zb.186.nms 114.66.80.55 1.3.6.1.4.1.2011.2.23.1.9.1.2 .1.2 "," R ");//Fp=popen (command," R "); Fp=popen (Sh_cmd, "R"); if (fp==null) {fprintf (stderr, "fopen () error.\n"); exitstatus=critical; Return exitstatus;/* sprintf (status_information, "active_status=%s", active_status); sprintf (Performance_data, "active_status=%s;;;0; 100 "," 0 "); sprintf (Status_information, "conn_170_245=%s conn_171_245=%s all_conn=%s",Sum_conn_170_245,sum_conn_171_245,sum_conn_all); sprintf (Performance_data, "conn_170_245=%s;;;0; conn_171_245=%s;;;0; all_conn=%s;;;0; ", Sum_conn_170_245,sum_conn_171_245,sum_conn_all); printf ("%s:%s | %s\n ", exit_status[exitstatus],status_information,performance_data); */}/* Str=fgets (READBUF,LEN_SHORT,FP); if (str==null) {perror ("fgets () error"); } printf ("readbuf=%s", readbuf); RET=SSCANF (readbuf, "snmpv2-smi::enterprises.3375.2.1.1.1.1.19.0 = INTEGER:%s", active_status); if (ret<0) {fprintf (stderr, "sscanf () error.\n"); Exitstatus=unknown; sprintf (status_information, "active_status=%s", active_status); sprintf (Performance_data, "active_status=%s;;;0; 100 "," 0 "); printf ("%s:%s | %s\n ", exit_status[exitstatus],status_information,performance_data); return exitstatus; }//snmpv2-smi::enterprises.3375.2.1.1.1.1.19.0 = integer:*/while (fgets (READBUF,LEN_SHORT,FP)!=null) {line++; printf ("line=%d,readbuf=%s", line,readbuf); if (line==1) {//SSCANF (readbuf, "snmpv2-smi::enterprises.3375.2.1.3.2.2.2.1.2.1 = INTEGER:%s", power1_ Value); SSCANF ("snmpv2-smi::enterprises.3375.2.2.5.4.3.1.9.7.77.81.65.95.73.78.84.1.4.103.4.170.245.8021 = Counter64: ","%*[^=]%*[^:]:%s ", str1); SSCANF (Readbuf, "%*[^=]%*[^:]:%s", sum_conn_170_245); } else if (line==2) {//SSCANF (Readbuf, "snmpv2-smi::enterprises.3375.2.1.3.2.2.2.1.2.2 = INTEGER:%s ", power2_value); SSCANF (Readbuf, "%*[^=]%*[^:]:%s", sum_conn_171_245); }/* if (line==2) {break; }*/}//printf ("line=%d\n", line); Ret=pclose (FP); if (ret==-1) {perror ("PCLose "); } return 0;} int main (int argc,char *argv[]) {int ret; int ch; int mark=0; Char *str; Char Command[len]; if (argc==1 | | argc!=5) {printf ("%s-h host-o oid\n", argv[0]); Print_usage (Argv[0]); return-1; } while ((Ch=getopt (ARGC,ARGV, "H:o:")!=-1) {switch (ch) {case ' H ': printf ("option h:%s\n", Optarg); Break Case ' O '://printf ("option o:%s\n", Optarg); Break Default://printf ("Other option:%c\n", ch); mark=1; Break }} if (mark==1) {return-1; }//sprintf (Command, "/usr/bin/snmpwalk-v2c-c public%s%s | grep 245.6717", Argv[2],argv[4]); sprintf (Command, "/usr/bin/snmpwalk-v2c-c public%s%s | grep 50.52.53.6717", argv[2],argv[4]);//Snmpwalk-v 2c-c Z B.186.nms 114.66.80.53 1.3.6.1.4.1.3375.2.2.5.4.3.1.11 | grep "50.52.53.6717"//printf ("command=%s\n", command); Ret=parse_status (command); if (ret!=0) {fprintf (stderr, "Parse_status () error.\n"); } sum_conn=atoi (sum_conn_170_245) +atoi (sum_conn_171_245); sprintf (Sum_conn_all, "%d", sum_conn);/* printf ("sum_conn_170_245=%s\n", sum_conn_170_245); printf ("sum_conn_171_245=%s\n", sum_conn_171_245); printf ("sum_conn_all=%s\n", sum_conn_all); *///status_information && performance_data//if (atoi (Sum_con n_170_245) <=50 && atoi (sum_conn_171_245) <=50) {Exitstatus=ok; sprintf (Status_information, "conn_170_245=%s conn_171_245=%s all_conn=%s", sum_conn_170_245,sum_conn_171_245,sum_ Conn_all); sprintf (PerformanCe_data, "conn_170_245=%s;;;0; conn_171_245=%s;;;0; all_conn=%s;;;0; ", sum_conn_170_245,sum_conn_171_245,sum_conn_all);//}/* else if (atoi (sum_conn_170_245) >50 && atoi (sum_conn_170_245) <100 | | Atoi (sum_conn_171_245) >50 && atoi (sum_conn_171_245) <100) {exitstatus=warning; sprintf (Status_information, "conn_170_245=%s conn_171_245=%s all_conn=%s", sum_conn_170_245,sum_conn_171_245,sum_ Conn_all); sprintf (Performance_data, "conn_170_245=%s;;;0; conn_171_245=%s;;;0; all_conn=%s;;;0; ", Sum_conn_170_245,sum_conn_171_245,sum_conn_all); } else if (Atoi (sum_conn_170_245) >100 | | atoi (sum_conn_171_245) >100) {exitstatus=critical; sprintf (Status_information, "conn_170_245=%s conn_171_245=%s all_conn=%s", Sum_conn_170_245,sum_conn_171_245,su M_conn_all); sprintf (Performance_data, "conn_170_245=%s;;;0; conn_171_245=%s;;;0; all_conn=%s;;;0; ", Sum_coNn_170_245,sum_conn_171_245,sum_conn_all); }*/printf ("%s:%s | %s\n ", exit_status[exitstatus],status_information,performance_data); return exitstatus;}
Nagios plug-in monitoring F5pool CNGW host session number