您的位置:首页 > 移动开发 > IOS开发

nagios插件之域名超时监控

2015-10-09 23:38 363 查看
vi check_domain_expire.c

#include <stdio.h>
#include <time.h>
#include <string.h>

#define LEN 100L
#define GREP_CMD "whois xx-xxstore.com | grep 'Registrar Registration Expiration Date'"

#define OK       0
#define WARNING  1
#define CRITICAL 2
#define UNKNOWN  3

int strtotime(char datetime[LEN]) {
char *str;
int timestamp;
struct tm tm_time;

//      str=strptime("2015-07-01 18:00:00", "%Y-%m-%d %H:%M:%S", &tm_time);
str=strptime(datetime, "%Y-%m-%d %H:%M:%S", &tm_time);
if(str==NULL) {
fprintf(stderr,"strptime() error.\n");
return -1;
}

timestamp=mktime(&tm_time);
if(timestamp==-1) {
fprintf(stderr,"mktime() error.\n");
return -1;
}

return timestamp;
}

int main() {
int ret;
FILE *fp;
char *str;
char readbuf[LEN];

char tmp1[LEN];
char tmp2[LEN];
char expire_time[LEN];

int expire_days;

int exitstatus=OK;
char *exit_status[4]={"OK","WARNING","CRITICAL","UNKNOWN"};

char status_information[LEN];
char performance_data[LEN];

time_t now_time;
now_time=time(NULL);
//      printf("now_time=%ld\n",now_time);

fp=popen(GREP_CMD,"r");
if(fp==NULL) {
fprintf(stderr,"popen() error.\n");
return -1;
}

str=fgets(readbuf,LEN,fp);
if(str==NULL) {
fprintf(stderr,"fgets() error.\n");
}
//      printf("readbuf=%s",readbuf);

//      ret=sscanf(readbuf,"Registrar Registration Expiration Date: %sT%sZ",tmp1,tmp2);
//      ret=sscanf(readbuf,"Registrar Registration Expiration Date: %s",tmp1);
ret=sscanf(readbuf,"Registrar Registration Expiration Date: %[0-9-]",tmp1);
if(ret==0) {
fprintf(stderr,"sscanf() error.\n");
return -1;
}
//      printf("tmp1=%s,tmp2=%s\n",tmp1,tmp2);
//      printf("tmp1=%s\n",tmp1);

ret=sscanf(readbuf,"Registrar Registration Expiration Date: %*[^T]T%[^Z]",tmp2);
//      printf("tmp2=%s\n",tmp2);

memset(expire_time,0,LEN);
sprintf(expire_time,"%s %s",tmp1,tmp2);
//      printf("expire_time=%s\n",expire_time);

ret=pclose(fp);
if(ret!=0) {
fprintf(stderr,"pclose() error.\n");
return -1;
}

ret=strtotime(expire_time);
if(ret==-1) {
fprintf(stderr,"strtotime() error.\n");
}
//      printf("expire_timestamp=%d\n",ret);

//      printf("expire seconds=%ld\n",ret-now_time);
//      printf("expire days=%ld\n",(ret-now_time)/86400);

expire_days=(ret-now_time)/86400;

if(expire_days>60) {
exitstatus=OK;
}
else if(expire_days<=60 && expire_days>30) {
exitstatus=WARNING;
}
else if(expire_days<=400 && expire_days>=0) {
exitstatus=CRITICAL;
}
else {
exitstatus=UNKNOWN;
}

sprintf(status_information,"xx-xxstore.com domain will expire on %s", expire_time);

//      sprintf(performance_data,"cur_all_session=%s;;;; tcp_all_session=%s;;;; tcp_half_open=%s;;;; tcp_half_close=%s;;;; udp_session=%s;;;; icmp_session=%s;;;; rawip_session=%s;;;;", cur_session, tcp_session, half_open, half_close, udp_session, icmp_session, rawip_session);

//      printf("%s - %s | %s\n", exit_status[exitstatus], status_information, performance_data);
printf("%s - %s\n", exit_status[exitstatus], status_information);

return exitstatus;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: