vi check_file_updae_time.c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#define OK 0
#define WARNING 1
#define CRITICAL 2
#define UNKNOWN 3
#define LEN 1023
//#define LOG_FILE "/var/log/asterisk/cdr-csv/Master.csv"
#define LOG_FILE "/DATE/anylink/probus5/logs/SPZHJJR1/SPZHJJR1_RTEcontainer1/servlet/accesslog/access.log"
#define LOG_FILE "/DATE/anylink/probus5/logs/SPZHJJR4/SPZHJJR4_RTEcontainer1/servlet/accesslog/access.log"
//#define LOG_FILE "/home/uniadmin/neo/test/check_file_time/Master.csv"
#define SHORT_TIME 300
#define LONG_TIME 1200
//#define TIME 60
int exitstatus=OK;
char *exit_status[4]={"OK","WARNING","CRITICAL","UNKNOWN"};
char status_information[LEN];
char performance_data[LEN];
time_t timestamp;
int is_master_or_slave(void) {
int mark=0;
struct ifaddrs * ifAddrStruct=NULL;
void * tmpAddrPtr=NULL;
char addressBuffer[INET_ADDRSTRLEN];
getifaddrs(&ifAddrStruct);
while(ifAddrStruct!=NULL) {
tmpAddrPtr=&((struct sockaddr_in *)ifAddrStruct->ifa_addr)->sin_addr;
inet_ntop(AF_INET, tmpAddrPtr, addressBuffer, INET_ADDRSTRLEN);
// if (ifAddrStruct->ifa_addr->sa_family==AF_INET) {
// if (!strncmp(addressBuffer,"10.199.75.169",13)) {
if (!strcmp(addressBuffer,"10.127.2.137")) {
// printf("%s IP Address %s\n", ifAddrStruct->ifa_name, addressBuffer);
mark=1;
break;
}
ifAddrStruct=ifAddrStruct->ifa_next;
}
if(mark==1) {
return 1;
}
else
return 0;
}
int diff_time(int istime) {
int ret;
int result=0;
struct stat getstat;
// timestamp=time(NULL);
// printf("now time=%d\n",timestamp);
ret=stat(LOG_FILE,&getstat);
if(ret==-1) {
if(errno==ENOENT) {
fprintf(stderr,"File or Patch not found.\n");
sprintf(status_information,"File or Patch not found.");
exitstatus=CRITICAL;
printf("%s: - %s\n",exit_status[exitstatus],status_information);
return exitstatus;
}
else {
fprintf(stderr,"Other error.\n");
sprintf(status_information,"Other error.");
exitstatus=CRITICAL;
printf("%s: - %s | %s\n",exit_status[exitstatus],status_information);
return exitstatus;
}
}
// printf("file time=%d\n",getstat.st_mtime);
result=timestamp-getstat.st_mtime;
// printf("result=%d\n",result);
// ret=is_master_or_slave();
ret=1;
if(result>=istime) {
if(ret==1) {
sprintf(status_information,"is Master, access.log Status=%d Second=%d",0,result);
sprintf(performance_data,"Status=%d;;;; Second=%d;;;;",0,result);
exitstatus=CRITICAL;
}
else {
sprintf(status_information,"is Slave, access.log Status=%d Second=%d",0,result);
sprintf(performance_data,"Status=%d;;;; Second=%d;;;;",0,result);
exitstatus=OK;
}
}
else {
if(ret==1) {
sprintf(status_information,"is Master, access.log Status=%d Second=%d",1,result);
sprintf(performance_data,"Status=%d;;;; Second=%d;;;;",1,result);
exitstatus=OK;
}
else {
sprintf(status_information,"is Slave, access.log Status=%d Second=%d",1,result);
sprintf(performance_data,"Status=%d;;;; Second=%d;;;;",1,result);
exitstatus=OK;
}
}
return 0;
}
int main() {
int ret;
int hour;
char hour_str[LEN];
struct tm *tp;
timestamp=time(NULL);
tp=localtime(×tamp);
sprintf(hour_str,"%d",tp->tm_hour);
hour=atoi(hour_str);
// printf("hour=%d\n",hour);
if(hour>=1 || hour<=7) {
ret=diff_time(LONG_TIME);
if(ret!=0) {
fprintf(stderr,"diff_time(SHORT_TIME) error.\n");
}
}
else {
ret=diff_time(SHORT_TIME);
if(ret!=0) {
fprintf(stderr,"diff_time(LONG_TIME) error.\n");
}
}
printf("%s: %s | %s\n",exit_status[exitstatus],status_information,performance_data);
return exitstatus;
}