vi check_hp_mem.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #define OK 0 #define WARNING 1 #define CRITICAL 2 #define UNKNOWN 3 #define LEN 1023 #define LEN_SHORT 24 int main() { int ret; FILE *fp; int line=0; char readbuf[256]; char available_swap[LEN_SHORT]; char used_swap[LEN_SHORT]; char free_swap[LEN_SHORT]; char use_percent_swap[LEN_SHORT]; char available_mem[LEN_SHORT]; char used_mem[LEN_SHORT]; char free_mem[LEN_SHORT]; char use_percent_mem[LEN_SHORT]; int i=0,j=0; char *str,*str_swap,*str_mem; int exitstatus=OK; char *exit_status[4]={"OK","WARNING","CRITICAL","UNKNOWN"}; char status_information[LEN]; char performance_data[LEN]; /* fp=fopen("1.txt","r"); if(fp==NULL) { fprintf(stderr,"fopen() error.\n"); return -1; } */ fp=popen("/usr/sbin/swapinfo -atm","r"); if(fp==NULL) { fprintf(stderr,"fopen() error.\n"); return -1; } while(fgets(readbuf,256,fp)!=NULL) { line++; // printf("line=%d\n",line); if(line==3) { for(str=strtok(readbuf," %");str;str=strtok(NULL," %")) { i++; if(i==2) { sprintf(available_swap,"%s",str); // printf("available_swap=%s\n",available_swap); } else if(i==3) { sprintf(used_swap,"%s",str); // printf("used_swap=%s\n",used_swap); } else if(i==4) { sprintf(free_swap,"%s",str); // printf("free_swap=%s\n",free_swap); } else if(i==5) { sprintf(use_percent_swap,"%s",str); // printf("use_percent_swap=%s\n",use_percent_swap); break; } } } if(line==5) { for(str=strtok(readbuf," %");str;str=strtok(NULL," %")) { j++; if(j==2) { sprintf(available_mem,"%s",str); // printf("available_mem=%s\n",available_mem); } else if(j==3) { sprintf(used_mem,"%s",str); // printf("used_mem=%s\n",used_mem); } else if(j==4) { sprintf(free_mem,"%s",str); // printf("free_mem=%s\n",free_mem); } else if(j==5) { sprintf(use_percent_mem,"%s",str); // printf("use_percent_mem=%s\n",use_percent_mem); break; } } } } // sprintf(use_percent_sawap,"%.2d",atoi(used_swap)/atoi(available_swap)); // sprintf(use_percent_mem,"%.2d",atoi(used_mem)/atoi(available_mem)); // printf("line=%d\n",line); ret=pclose(fp); if(ret!=NULL) { perror("pclose"); } // printf("-------------use_percent_mem=%d\n",atoi(use_percent_mem)); if(atoi(use_percent_mem)<=80) { exitstatus=OK; } else if(atoi(use_percent_mem)>80 && atoi(use_percent_mem)<90) { exitstatus=WARNING; } else if(atoi(use_percent_mem)>90) { exitstatus=CRITICAL; } else { exitstatus=UNKNOWN; } sprintf(status_information,"Memory Usage - %s%s RAM, %s%s Swap",use_percent_mem,"%",use_percent_swap,"%"); // printf("status_information=%s\n",status_information); sprintf(performance_data,"phyUsed=%s%s;;;0;100 swpUsed=%s%s;;;0;100",use_percent_mem,"%",use_percent_swap,"%"); // printf("performance_data=%s\n",performance_data); printf("%s: %s | %s\n",exit_status[exitstatus],status_information,performance_data); return exitstatus; }