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;
}