1363 lines
48 KiB
C
1363 lines
48 KiB
C
#include "monitsys.h"
|
||
|
||
//stLogMsg *syslogreport,commendlog;
|
||
float cal_cpuoccupy(CPU_OCCUPY *o,CPU_OCCUPY *n)
|
||
{
|
||
unsigned long od,nd;
|
||
unsigned long id,sd;
|
||
float cpu_use = 0;
|
||
od = (unsigned long)(o->user + o->nice + o->system + o->idle);
|
||
nd = (unsigned long)(n->user + n->nice + n->system + n->idle);
|
||
id = (unsigned long)(n->nice - o->nice);
|
||
sd = (unsigned long)(n->idle - o->idle);
|
||
if((nd-od) != 0)
|
||
cpu_use = (float)(((nd-od)-sd))*100/(nd-od);
|
||
else
|
||
cpu_use = 0;
|
||
|
||
return cpu_use;
|
||
}
|
||
|
||
int judgeiflogin()
|
||
{
|
||
FILE *fd = NULL;
|
||
char buff[180],*num=NULL, *cmd=NULL,*cur,bu[180];
|
||
int i = 0,le = 0,newnum = 0, devalue = 0, t = 0, len = 0;
|
||
// system("who /var/log/wtmp | wc -l > /home/czl/tengswitch/login.txt");
|
||
// fd = fopen("/home/czl/tengswitch/login.txt","r");
|
||
if(NULL==(fd = popen(" who /var/log/wtmp | wc -l ","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return 0;
|
||
}
|
||
|
||
// fd = popen("history | tail -n 6","r");
|
||
fgets(buff,sizeof(buff),fd);
|
||
// printf("string in buff is:%s\n", buff);
|
||
// sscanf(buff,"%s %s",bu,&commendlog->szMsg[0][0]);
|
||
// printf("newnum in bu is :%s\n", bu);
|
||
|
||
newnum = atoi(buff);
|
||
printf("newnum in bu is :%d\n", newnum);
|
||
fclose(fd);
|
||
return newnum;
|
||
}
|
||
|
||
|
||
// stLogMsg *judgelogin()
|
||
|
||
|
||
/*
|
||
void judgelogin()
|
||
{
|
||
FILE *fd;
|
||
memset(&commendlog,0,sizeof(stLogMsg));
|
||
// stLogMsg commendlog ;
|
||
// commendlog = (stLogMsg*)malloc(sizeof(stLogMsg));
|
||
// memset(commendlog,0, sizeof(stLogMsg));
|
||
commendlog.uiType = 5;
|
||
stpcpy(commendlog.szIp,"172.171.17.213");
|
||
gettimeofday(&commendlog.stRcvTime,NULL);
|
||
stpcpy(commendlog.szLogFile,"/log/wtmp");
|
||
char buff[180],*num=NULL, *cmd=NULL,*cur,bu[180];
|
||
int i = 0,le = 0,newnum = 0, devalue = 0, t = 0, len = 0;
|
||
// system("who /var/log/wtmp | wc -l > /home/czl/tengswitch/login.txt");
|
||
fd = fopen("/home/czl/tengswitch/login.txt","r");
|
||
// fd = popen("history | tail -n 6","r");
|
||
// fgets(buff,sizeof(buff),fd);
|
||
// printf("string in buff is:%s\n", buff);
|
||
// sscanf(buff,"%s %s",bu,&commendlog->szMsg[0][0]);
|
||
// printf("newnum in bu is :%s\n", bu);
|
||
|
||
// newnum = atoi(buff);
|
||
|
||
devalue = newloginnum - lastloginnum;
|
||
|
||
if (devalue > 5 || devalue < 0)
|
||
{
|
||
printf("devalue in loop1 is :%d\n", devalue);
|
||
//sprintf(cmd,"who /var/log/wtmp |",);
|
||
system("who /var/log/wtmp | tail -n 6 > /home/czl/tengswitch/login.txt");
|
||
|
||
|
||
fgets(buff,sizeof(buff),fd);
|
||
for(le=0;le < 5; le++)
|
||
{
|
||
buff[180] = '0';
|
||
// sscanf(buff,"%s",&commendlog->szMsg[0][le]);
|
||
fgets(buff,sizeof(buff),fd);
|
||
memcpy(&commendlog.szMsg[le],buff,strlen(buff));
|
||
//printf("size of buff is %d \n",sizeof(buff));
|
||
//printf("strlen of buff is %d \n",strlen(buff));
|
||
printf("log in 1struct is %s",&commendlog.szMsg[le]);
|
||
|
||
}
|
||
printf("have come here \n");
|
||
}
|
||
else if (devalue <= 5 || devalue > 0)
|
||
{
|
||
|
||
sprintf(bu,"who /var/log/wtmp | tail -n %d > /home/czl/tengswitch/login.txt",devalue+1);
|
||
//printf("bu is :%s\n", bu);
|
||
|
||
|
||
printf("devalue in loop2 is :%d\n", devalue);
|
||
// cmd =&bu[0];
|
||
//memcpy(cmd,bu,strlen(bu));
|
||
//printf("cmd is :%d\n", cmd);
|
||
system(bu);
|
||
fgets(buff,sizeof(buff),fd);
|
||
|
||
for(le=0; le < devalue; le++)
|
||
{
|
||
buff[180] = '0';
|
||
fgets(buff,sizeof(buff),fd);
|
||
memcpy(&commendlog.szMsg[le],buff,strlen(buff));
|
||
printf("log in 2 struct is %s \n",&commendlog.szMsg[le]);
|
||
}
|
||
|
||
}
|
||
|
||
// printf("newnum is :%d\n", newnum);
|
||
// return &commendlog;
|
||
|
||
fclose(fd);
|
||
// printf("end of loop\n");
|
||
// lastlognum = newnum;
|
||
}
|
||
|
||
*/
|
||
|
||
stLogMsg judgelogin(char *ip)
|
||
{
|
||
stLogMsg getlogin;
|
||
// getlogin = (stLogMsg*)malloc(sizeof(stLogMsg));
|
||
FILE *fd;
|
||
// memset(&commendlog,0,sizeof(stLogMsg));
|
||
memset(&getlogin,0,sizeof(stLogMsg));
|
||
// stLogMsg commendlog ;
|
||
// commendlog = (stLogMsg*)malloc(sizeof(stLogMsg));
|
||
// memset(commendlog,0, sizeof(stLogMsg));
|
||
getlogin.uiType = 5;
|
||
stpcpy(getlogin.szIp,ip);
|
||
gettimeofday(&getlogin.stRcvTime,NULL);
|
||
stpcpy(getlogin.szLogFile,"login");
|
||
char buff[180],*num=NULL, *cmd=NULL,*cur,bu[180];
|
||
int i = 0,le = 0,newnum = 0, devalue = 0, t = 0, len = 0;
|
||
system("who /var/log/wtmp | wc -l > /root/monitor/login.txt");
|
||
fd = fopen("/root/monitor/login.txt","r");
|
||
// fd = popen("history | tail -n 6","r");
|
||
// fgets(buff,sizeof(buff),fd);
|
||
// printf("string in buff is:%s\n", buff);
|
||
// sscanf(buff,"%s %s",bu,&commendlog->szMsg[0][0]);
|
||
// printf("newnum in bu is :%s\n", bu);
|
||
|
||
// newnum = atoi(buff);
|
||
devalue = newloginnum - lastloginnum;
|
||
|
||
if (devalue > 5 || devalue < 0)
|
||
{
|
||
printf("devalue in loop1 is :%d\n", devalue);
|
||
//sprintf(cmd,"who /var/log/wtmp |",);
|
||
system("who /var/log/wtmp | tail -n 6 > /root/monitor/login.txt");
|
||
fgets(buff,sizeof(buff),fd);
|
||
for(le=0;le < 5; le++)
|
||
{
|
||
buff[180] = '0';
|
||
// sscanf(buff,"%s",&commendlog->szMsg[0][le]);
|
||
fgets(buff,sizeof(buff),fd);
|
||
memset(&getlogin.szMsg[le],0,sizeof(getlogin.szMsg[le]));
|
||
memcpy(&getlogin.szMsg[le],buff,strlen(buff));
|
||
//printf("size of buff is %d \n",sizeof(buff));
|
||
//printf("strlen of buff is %d \n",strlen(buff));
|
||
//printf("log in 1struct is %s",&getlogin->szMsg[le]);
|
||
}
|
||
//printf("have come here \n");
|
||
}
|
||
else if (devalue <= 5 || devalue > 0)
|
||
{
|
||
memset(&getlogin.szMsg[0],0,5*sizeof(getlogin.szMsg[le]));
|
||
sprintf(bu,"who /var/log/wtmp | tail -n %d > /root/monitor/login.txt",devalue+1);
|
||
//printf("bu is :%s\n", bu);
|
||
|
||
printf("devalue in loop2 is :%d\n", devalue);
|
||
// cmd =&bu[0];
|
||
//memcpy(cmd,bu,strlen(bu));
|
||
//printf("cmd is :%d\n", cmd);
|
||
system(bu);
|
||
fgets(buff,sizeof(buff),fd);
|
||
|
||
for(le=0; le < devalue; le++)
|
||
{
|
||
buff[180] = '0';
|
||
fgets(buff,sizeof(buff),fd);
|
||
memset(&getlogin.szMsg[le],0,sizeof(getlogin.szMsg[le]));
|
||
memcpy(&getlogin.szMsg[le],buff,strlen(buff));
|
||
//printf("log in 2 struct is %s \n",&getlogin->szMsg[le]);
|
||
}
|
||
}
|
||
|
||
// printf("newnum is :%d\n", newnum);
|
||
// printf("msg login in function type is %d\nip is %s\nfilename is %s\n ",getlogin->uiType,getlogin->szIp,getlogin->szLogFile);
|
||
// printf("szMsg0 is %s\n",getlogin->szMsg[0]);
|
||
// printf("szMsg1 is %s\n",getlogin->szMsg[1]);
|
||
// printf("szMsg2 is %s\n",getlogin->szMsg[2]);
|
||
// printf("szMsg3 is %s\n",getlogin->szMsg[3]);
|
||
// printf("szMsg4 is %s\n",getlogin->szMsg[4]);
|
||
|
||
|
||
|
||
|
||
|
||
fclose(fd);
|
||
return getlogin;
|
||
|
||
// lastlognum = newnum;
|
||
}
|
||
|
||
/*
|
||
void judgecommend()
|
||
{
|
||
stLogMsg *commendlog = NULL;//, *pst=NULL;
|
||
FILE *fd;
|
||
char buff[180],*num, *cmd,*cur,bu[180];
|
||
int i = 0,le = 0,newnum = 0, devalue = 0, t = 0, len = 0;
|
||
const char s[2] = " ";
|
||
commendlog = (stLogMsg*)malloc(sizeof(stLogMsg));
|
||
memset(commendlog,0, sizeof(stLogMsg));
|
||
|
||
//system("history | tail -n 6 > /home/czl/tengswitch/history.txt");
|
||
system("who /var/log/wtmp > /home/czl/tengswitch/history.txt");
|
||
while(1)
|
||
{
|
||
|
||
}
|
||
fd = fopen("/home/czl/tengswitch/history.txt","r");
|
||
// fd = popen("history | tail -n 6","r");
|
||
fgets(buff,sizeof(buff),fd);
|
||
printf("string in buff is:%s\n", buff);
|
||
sscanf(buff,"%s %s",bu,&commendlog->szMsg[0][0]);
|
||
// printf("newnum in bu is :%s\n", bu);
|
||
|
||
newnum = atoi(bu);
|
||
devalue = newnum - lastnum;
|
||
printf("devalue before loop is %d\n",devalue);
|
||
printf("begin to loop\n");
|
||
for(le = 0; le < 5; le++)
|
||
{
|
||
memset(commendlog,0, sizeof(stLogMsg));
|
||
buff[180] = '0';
|
||
fgets(buff,sizeof(buff),fd);
|
||
if(le < 5-devalue )
|
||
continue;
|
||
printf("%s\n", buff);
|
||
cur = &buff[0];
|
||
for(i=0;i<10;i++)
|
||
{
|
||
// printf("%d\n", i);
|
||
if (*cur == ' ')
|
||
t++;
|
||
if (t == 2)
|
||
num = ++cur;
|
||
if (t == 4)
|
||
{
|
||
cmd = ++cur;
|
||
break;
|
||
}
|
||
cur++;
|
||
}
|
||
|
||
// printf("%s\n", num);
|
||
|
||
printf("%s\n", cmd);
|
||
len =strlen(cmd);
|
||
memcpy(&commendlog->szMsg[0][le],cmd,len);
|
||
|
||
printf("string in struct is %s\n", &commendlog->szMsg[0][le]);
|
||
// printf("4%c\n", buff[3]);
|
||
// printf("5%c\n", buff[4]);
|
||
// printf("6%c\n", buff[5]);
|
||
// printf("7%c\n", buff[6]);
|
||
// printf("8%c\n", buff[7]);
|
||
// printf("9%c\n", buff[8]);
|
||
// num = strtok(buff,s);
|
||
//printf( "%s\n",num);
|
||
|
||
//cmd = strtok(NULL,s);
|
||
// strcpy(bu, strtok(NULL, " "));
|
||
// printf("%s\n", num);
|
||
//sscanf(buff,"%s %s",num, commendlog->szMsg[0][0]);
|
||
// pis =&commendlog[0];
|
||
// commendlog->uiType = 1;
|
||
// printf("%s %s\n", num , commendlog->szMsg[0][0]);
|
||
// printf("%d \n", commendlog->uiType);
|
||
}
|
||
fclose(fd);
|
||
printf("end of loop\n");
|
||
lastnum = newnum;
|
||
}
|
||
*/
|
||
void getPidByName(pid_t *pid, char *task_name)
|
||
{
|
||
DIR *dir;
|
||
struct dirent *ptr;
|
||
FILE *fp;
|
||
char filepath[50];
|
||
char cur_task_name[50];
|
||
char buf[BUF_SIZE];
|
||
dir = opendir("/proc");
|
||
if (NULL != dir)
|
||
{
|
||
while ((ptr = readdir(dir)) != NULL) //循环读取/proc下的每一个文件/文件夹
|
||
{
|
||
//如果读取到的是"."或者".."则跳过,读取到的不是文件夹名字也跳过
|
||
if ((strcmp(ptr->d_name, ".") == 0) || (strcmp(ptr->d_name, "..") == 0))
|
||
continue;
|
||
if (DT_DIR != ptr->d_type)
|
||
continue;
|
||
sprintf(filepath, "/proc/%s/status", ptr->d_name);//生成要读取的文件的路径
|
||
fp = fopen(filepath, "r");
|
||
if (NULL != fp)
|
||
{
|
||
if( fgets(buf, BUF_SIZE-1, fp)== NULL )
|
||
{
|
||
fclose(fp);
|
||
continue;
|
||
}
|
||
sscanf(buf, "%*s %s", cur_task_name); //如果文件内容满足要求则打印路径的名字(即进程的PID)
|
||
if (!strcmp(task_name, cur_task_name))
|
||
{
|
||
sscanf(ptr->d_name, "%d", pid);
|
||
}
|
||
fclose(fp);
|
||
}
|
||
}
|
||
closedir(dir);
|
||
}
|
||
}
|
||
|
||
|
||
void get_cpuoccupy(CPU_OCCUPY *cpust)
|
||
{
|
||
|
||
FILE *fd;
|
||
int n;
|
||
char buff[256];
|
||
CPU_OCCUPY *cpu_occupy;
|
||
cpu_occupy = cpust;
|
||
|
||
fd = fopen("/proc/stat","r");
|
||
|
||
fgets(buff,sizeof(buff),fd);
|
||
sscanf(buff,"%s %u %u %u %u",cpu_occupy->name,&cpu_occupy->user,&cpu_occupy->nice,&cpu_occupy->system,&cpu_occupy->idle);
|
||
// printf("%s %u %u %u %u\n",cpu_occupy->name,cpu_occupy->user,cpu_occupy->nice,cpu_occupy->system,cpu_occupy->idle);
|
||
fclose(fd);
|
||
}
|
||
|
||
int firewallcharge()
|
||
{
|
||
FILE *fd;
|
||
int n;
|
||
char buff[16];
|
||
char buff1[16];
|
||
// char buff2[16];
|
||
char buff2[16] = "active";
|
||
// system("systemctl status firewalld.service | grep Active > /home/czl/tengswitch/firewall.txt");
|
||
// system("chmod 777 firewall.txt");
|
||
//fd = fopen("/home/czl/tengswitch/firewall.txt","r");
|
||
// changed 20200813
|
||
if(NULL==(fd = popen("systemctl status firewalld.service | grep Active","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return 0;
|
||
}
|
||
//fgets(buff,sizeof(buff),fd);
|
||
fscanf(fd,"%s %s",buff,buff1);
|
||
// printf("%s %s\n",buff,buff1);
|
||
n = strcmp(buff1,buff2);
|
||
fclose(fd);
|
||
if( n == 0 )
|
||
{
|
||
//printf("firewall enable\n");
|
||
return 0;
|
||
}
|
||
else
|
||
{
|
||
//printf("firewall disable\n");
|
||
return 1;
|
||
}
|
||
|
||
|
||
}
|
||
|
||
|
||
unsigned int processnum()
|
||
{
|
||
|
||
FILE *fd,*fd1;
|
||
unsigned int pronum;
|
||
char buff[16];
|
||
char buff1[16];
|
||
|
||
// system("ps -auxw | wc -l >/home/czl/tengswitch/process_num.txt");
|
||
//system("chmod 777 /home/czl/tengswitch/process_num.txt");
|
||
//fd = fopen("/home/czl/tengswitch/process_num.txt","r");
|
||
|
||
if(NULL==(fd = popen("ps -auxw | wc -l","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return 0;
|
||
}
|
||
if(fd == NULL)
|
||
{
|
||
printf("<p>open file:process_num.txt error</p>");
|
||
exit(0);
|
||
}
|
||
///fgets(buff,sizeof(buff),fd);
|
||
fscanf(fd,"%s",buff);
|
||
pronum = atoi(buff);
|
||
fclose(fd);
|
||
return pronum;
|
||
}
|
||
|
||
|
||
unsigned int uiCronNum()
|
||
{
|
||
FILE *fd = NULL,*fp = NULL;
|
||
unsigned int cronum = 0;
|
||
char buff[128]="\0";
|
||
char buff1[]="no";
|
||
|
||
system("crontab -l > /root/monitor/cron.txt 2>&1");
|
||
system("chmod 777 /root/monitor/cron.txt");
|
||
fd = fopen("/root/monitor/cron.txt","r");
|
||
while(NULL != fgets(buff,sizeof(buff),fd))
|
||
{
|
||
cronum++;
|
||
continue;
|
||
}
|
||
if(cronum == 1)
|
||
{
|
||
fscanf(fd, "%s",buff);
|
||
buff[2]='\0';
|
||
if(strcmp(buff,buff1)==0)
|
||
{
|
||
printf("there is no date\n");
|
||
cronum = 0;
|
||
}
|
||
else
|
||
{
|
||
cronum = 1;
|
||
printf("there is date\n");
|
||
}
|
||
}
|
||
fclose(fd);
|
||
printf("num of crontask is %d\n",cronum);
|
||
return cronum;
|
||
}
|
||
|
||
|
||
unsigned int processnum_tcp()
|
||
{
|
||
|
||
FILE *fd,*fd1;
|
||
unsigned int pronum,tcpnum;
|
||
char buff[16];
|
||
char buff1[16];
|
||
//netstat -an |grep 'ESTABLISHED' |grep 'tcp' |wc -l
|
||
// system("netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' > /home/czl/tengswitch/processtcp.txt");
|
||
// system("chmod 777 /home/czl/tengswitch/processtcp.txt");
|
||
// fd = fopen("/home/czl/tengswitch/processtcp.txt","r");
|
||
if(NULL==(fd = popen(" netstat -an |grep 'ESTABLISHED' |grep 'tcp' |wc -l ","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return 0;
|
||
}
|
||
fscanf(fd,"%s %s",buff,buff1);
|
||
tcpnum = atoi(buff1);
|
||
// printf("%d\n",tcpnum);
|
||
|
||
fclose(fd);
|
||
return tcpnum;
|
||
}
|
||
|
||
|
||
|
||
double get_memoccupy()
|
||
{
|
||
double memory_have = 0;
|
||
//system("free -m | grep Mem > memory.txt");
|
||
//system("chmod 777 memory.txt");
|
||
FILE * fp = NULL;
|
||
//fp = fopen ("memory.txt", "r");
|
||
|
||
if(NULL==(fp = popen("free -m | grep Mem","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return 0;
|
||
}
|
||
|
||
//if(fp == NULL)
|
||
//{
|
||
// printf("<p>open file:memory.txt error</p>");
|
||
// return 0;
|
||
//}
|
||
char s1[20] = {0};
|
||
unsigned int total = 0;
|
||
unsigned int used = 0;
|
||
fscanf(fp, "%s %d %d", s1, &total, &used);
|
||
//printf("name: %s\n total:%d\n used:%d\n",s1,total,used);
|
||
fclose(fp);
|
||
fp = NULL;
|
||
memory_have = ((100 * used) / total);
|
||
|
||
return memory_have;
|
||
}
|
||
|
||
int get_md5passwd(char* md5sum)
|
||
{
|
||
char md5num[128] = {0};
|
||
char filename[128] = {0};
|
||
int n;
|
||
// system("md5sum /etc/passwd > passwd.txt");
|
||
// system("chmod 777 passwd.txt");
|
||
FILE * fp = NULL;
|
||
// fp = fopen ("passwd.txt", "r");
|
||
// if(fp == NULL)
|
||
// {
|
||
// printf("<p>open file:passwd.txt error</p>");
|
||
// return 0;
|
||
// }
|
||
if(NULL==(fp = popen("md5sum /etc/passwd","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return -1;
|
||
}
|
||
//fscanf(fp, "%s %s", md5sum, filename);
|
||
fread(md5num,1,sizeof(md5num),fp);
|
||
sscanf(md5num, "%s %s", md5sum, filename);
|
||
//printf("passwd md5num in function is: %s\n",md5num);
|
||
fclose(fp);
|
||
//md5num[32]='\0';
|
||
//n = strlen(md5num);
|
||
// printf("len of passwd is %d\n",n);
|
||
//fp = NULL;
|
||
return 0;
|
||
}
|
||
|
||
int get_md5group(char* md5group)
|
||
{
|
||
char m_md5group[128] = {0};
|
||
char m_filename[128] = {0};
|
||
int n;
|
||
// system("md5sum /etc/passwd > passwd.txt");
|
||
// system("chmod 777 passwd.txt");
|
||
FILE * fp = NULL;
|
||
// fp = fopen ("passwd.txt", "r");
|
||
// if(fp == NULL)
|
||
// {
|
||
// printf("<p>open file:passwd.txt error</p>");
|
||
// return 0;
|
||
// }
|
||
if(NULL==(fp = popen("md5sum /etc/group","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return -1;
|
||
}
|
||
//fscanf(fp, "%s %s", md5group, filename);
|
||
fread(m_md5group,1,sizeof(m_md5group),fp);
|
||
sscanf(m_md5group, "%s %s", md5group, m_filename);
|
||
//printf("passwd md5Group in function is: %s\n",md5group);
|
||
fclose(fp);
|
||
//md5num[32]='\0';
|
||
//n = strlen(md5num);
|
||
// printf("len of passwd is %d\n",n);
|
||
//fp = NULL;
|
||
return 0;
|
||
}
|
||
|
||
|
||
FILE *getshellvalue(char *pcmd)
|
||
{
|
||
FILE * fstream = NULL;
|
||
|
||
if(NULL == (fstream = popen(pcmd,"r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return NULL;
|
||
}
|
||
//pcmd = "ls -trl | awk '{print $9}'";
|
||
return fstream;
|
||
}
|
||
|
||
void *get_historycmd(void *arg)
|
||
{
|
||
int fd,wd,len,nread,i;
|
||
char buf[BUFSIZ];
|
||
struct inotify_event *event;
|
||
stLogMsg stlogmsg;
|
||
FILE * fnsteam = NULL;
|
||
const char *ip = "10.10.10.201";
|
||
int port = 7002;
|
||
char *pcip;
|
||
pcip = (char *)arg;
|
||
|
||
void * ctx = zmq_ctx_new();
|
||
fb_assert(ctx, "create zmq context faild");
|
||
|
||
void *sock = zmq_socket(ctx, ZMQ_REQ);
|
||
fb_assert(sock, "create zmq socket faild");
|
||
|
||
char szaddr[128] = {0};
|
||
char cmdbuff[128] = {0};
|
||
char cmd[128] = {0};
|
||
snprintf(szaddr, sizeof(szaddr), "tcp://%s:%d", ip, port);
|
||
|
||
{//加密相关代码
|
||
char szmsg[1024] = {0};
|
||
//此密钥为服务端产生的公钥
|
||
strcpy(szmsg, "p=lDOa9WKUKz!I9{G)uPX4@&CrV-(>tDg:kaSGzE");
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SERVERKEY, szmsg, strlen(szmsg));
|
||
|
||
char szpubkey[64] = {0};
|
||
char szprikey[64] = {0};
|
||
zmq_curve_keypair(szpubkey, szprikey);
|
||
zmq_setsockopt(sock, ZMQ_CURVE_PUBLICKEY, szpubkey, strlen(szpubkey));
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SECRETKEY, szprikey, strlen(szprikey));
|
||
}
|
||
|
||
zmq_connect(sock, szaddr);
|
||
|
||
|
||
int count = 0;
|
||
|
||
char szmsg[1024] = {0};
|
||
bzero(szmsg, sizeof(szmsg));
|
||
|
||
fd = inotify_init();
|
||
if (fd < 0)
|
||
{
|
||
fprintf(stderr, "inotify_init failed\n");
|
||
return NULL;
|
||
}
|
||
|
||
//wd = inotify_add_watch(fd, "/home/czl/test", IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO );
|
||
//inotify_add_watch(fd, "/home/czl/tengswitch", IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO );
|
||
wd = inotify_add_watch(fd, "/tmp/dbasky/root", IN_MODIFY | IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO);
|
||
if (wd < 0)
|
||
{
|
||
fprintf(stderr, "inotify_add_watch %s failed\n", "/tmp/dbasky/root");
|
||
return NULL;
|
||
}
|
||
|
||
buf[sizeof(buf) - 1] = 0;
|
||
while ((len = read(fd, buf, sizeof(buf) - 1)) > 0)
|
||
{
|
||
nread = 0;
|
||
while (len > 0)
|
||
{
|
||
event = (struct inotify_event *)&buf[nread];
|
||
for (i = 0; i<EVENT_NUM; i++)
|
||
{
|
||
if ((event->mask >> i) & 1)
|
||
{
|
||
if (event->len > 0)
|
||
{
|
||
bzero(szmsg, sizeof(szmsg));
|
||
bzero(cmdbuff, sizeof(cmdbuff));
|
||
//fprintf(stdout, "%s --- %s\n", event->name, event_str[i]);
|
||
stlogmsg.uiType = 5;
|
||
|
||
stpcpy(stlogmsg.szIp,pcip);
|
||
// stpcpy(stfilestate.szPath,"/home/czl/test");
|
||
gettimeofday(&stlogmsg.stRcvTime,NULL);
|
||
//stpcpy(stlogmsg.szLogFile,event->name);
|
||
stpcpy(stlogmsg.szLogFile,"history");
|
||
char text[128];
|
||
stpcpy(text,event->name);
|
||
if (text[0] != '.')
|
||
{
|
||
// zmq_send(sock, &stfilestate, sizeof(stFileState), 0);
|
||
// zmq_recv(sock, szmsg, sizeof(szmsg) - 1, 0);
|
||
printf("type is %d\n ip is %s\n filename is %s\n ",stlogmsg.uiType,stlogmsg.szIp,stlogmsg.szLogFile);
|
||
sprintf(cmd,"tac /tmp/dbasky/root/%s",event->name);
|
||
// printf("cmd in fprintf is %s",cmd);
|
||
fnsteam = getshellvalue(cmd);
|
||
count = 0;
|
||
while(NULL != fgets(cmdbuff,sizeof(cmdbuff),fnsteam))
|
||
{
|
||
// fgets(cmdbuff,sizeof(cmdbuff),fnsteam);
|
||
|
||
if (count< 5 )
|
||
{
|
||
stpcpy(stlogmsg.szMsg[count],cmdbuff);
|
||
printf("cmd in struct is %s\n",stlogmsg.szMsg[count]);
|
||
}
|
||
else
|
||
break;
|
||
count++;
|
||
}
|
||
zmq_send(sock, &stlogmsg, sizeof(stLogMsg), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1, ZMQ_DONTWAIT);
|
||
printf("return of history cmd is %s\n",szmsg);
|
||
}
|
||
fclose(fnsteam);
|
||
// printf("mestype5 recv is %s\n",szmsg);
|
||
}
|
||
}
|
||
}
|
||
nread = nread + sizeof(struct inotify_event) + event->len;
|
||
len = len - sizeof(struct inotify_event) - event->len;
|
||
}
|
||
}
|
||
|
||
return 0;
|
||
}
|
||
void *monitorfile(void *arg)
|
||
{
|
||
int fd,wd,len,nread,i;
|
||
char buf[BUFSIZ];
|
||
struct inotify_event *event;
|
||
stFileState stfilestate;
|
||
const char *ip = "10.10.10.201";
|
||
char *pcip;
|
||
pcip = (char *)arg;
|
||
|
||
int port = 7002;
|
||
void * ctx = zmq_ctx_new();
|
||
fb_assert(ctx, "create zmq context faild");
|
||
|
||
void *sock = zmq_socket(ctx, ZMQ_REQ);
|
||
fb_assert(sock, "create zmq socket faild");
|
||
|
||
char szaddr[128] = {0};
|
||
snprintf(szaddr, sizeof(szaddr), "tcp://%s:%d", ip, port);
|
||
|
||
{//加密相关代码
|
||
char szmsg[1024] = {0};
|
||
//此密钥为服务端产生的公钥
|
||
strcpy(szmsg, "p=lDOa9WKUKz!I9{G)uPX4@&CrV-(>tDg:kaSGzE");
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SERVERKEY, szmsg, strlen(szmsg));
|
||
|
||
char szpubkey[64] = {0};
|
||
char szprikey[64] = {0};
|
||
zmq_curve_keypair(szpubkey, szprikey);
|
||
zmq_setsockopt(sock, ZMQ_CURVE_PUBLICKEY, szpubkey, strlen(szpubkey));
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SECRETKEY, szprikey, strlen(szprikey));
|
||
}
|
||
zmq_connect(sock, szaddr);
|
||
int count = 0;
|
||
|
||
char szmsg[1024] = {0};
|
||
bzero(szmsg, sizeof(szmsg));
|
||
|
||
|
||
|
||
fd = inotify_init();
|
||
if (fd < 0)
|
||
{
|
||
fprintf(stderr, "inotify_init failed\n");
|
||
return NULL;
|
||
}
|
||
|
||
//wd = inotify_add_watch(fd, "/home/czl/test", IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO );
|
||
//inotify_add_watch(fd, "/home/czl/tengswitch", IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO );
|
||
//wd = inotify_add_watch(fd, "/home/czl/test", IN_MODIFY);
|
||
|
||
wd = inotify_add_watch(fd, "/etc", IN_MODIFY);
|
||
inotify_add_watch(fd, "/etc/profile.d", IN_MODIFY);
|
||
inotify_add_watch(fd, "/etc/rc.d/init.d", IN_MODIFY);
|
||
//inotify_add_watch(fd, "/etc/rc.local", IN_MODIFY);
|
||
if (wd < 0)
|
||
{
|
||
fprintf(stderr, "inotify_add_watch %s failed\n", "/etc");
|
||
return NULL;
|
||
}
|
||
|
||
buf[sizeof(buf) - 1] = 0;
|
||
while ((len = read(fd, buf, sizeof(buf) - 1)) > 0)
|
||
{
|
||
nread = 0;
|
||
while (len > 0)
|
||
{
|
||
event = (struct inotify_event *)&buf[nread];
|
||
for (i = 0; i<EVENT_NUM; i++)
|
||
{
|
||
if ((event->mask >> i) & 1)
|
||
{
|
||
if (event->len > 0)
|
||
{
|
||
bzero(szmsg, sizeof(szmsg));
|
||
//fprintf(stdout, "%s --- %s\n", event->name, event_str[i]);
|
||
stfilestate.uiType = 3;
|
||
|
||
stpcpy(stfilestate.szIp,pcip);
|
||
// stpcpy(stfilestate.szPath,"/home/czl/test");
|
||
gettimeofday(&stfilestate.stRcvTime,NULL);
|
||
stpcpy(stfilestate.szFileName,event->name);
|
||
if (stfilestate.szFileName[0] != '.')
|
||
{
|
||
zmq_send(sock, &stfilestate, sizeof(stFileState), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1, ZMQ_DONTWAIT);
|
||
printf("modify event happend\n");
|
||
printf("file changed \n type is %d\n ip is %s\n filename is %s\n ",stfilestate.uiType,stfilestate.szIp,stfilestate.szFileName);
|
||
}
|
||
|
||
// printf("mestype5 recv is %s\n",szmsg);
|
||
|
||
}
|
||
}
|
||
}
|
||
nread = nread + sizeof(struct inotify_event) + event->len;
|
||
len = len - sizeof(struct inotify_event) - event->len;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
void *monitorfilenum(void *arg)
|
||
{
|
||
int fd,wd,len,nread,i;
|
||
char buf[BUFSIZ],num[10];
|
||
struct inotify_event *event;
|
||
stFileNum stfilenum;
|
||
FILE* fp = NULL;
|
||
// if (argc < 2)
|
||
// {
|
||
// fprintf(stderr, "%s path\n", argv[0]);
|
||
// return -1;
|
||
//}
|
||
char *pcip;
|
||
pcip = (char *)arg;
|
||
|
||
const char *ip = "10.10.10.201";
|
||
int port = 7002;
|
||
void * ctx = zmq_ctx_new();
|
||
fb_assert(ctx, "create zmq context faild");
|
||
|
||
void *sock = zmq_socket(ctx, ZMQ_REQ);
|
||
fb_assert(sock, "create zmq socket faild");
|
||
|
||
char szaddr[128] = {0};
|
||
snprintf(szaddr, sizeof(szaddr), "tcp://%s:%d", ip, port);
|
||
|
||
{//加密相关代码
|
||
char szmsg[1024] = {0};
|
||
//此密钥为服务端产生的公钥
|
||
strcpy(szmsg, "p=lDOa9WKUKz!I9{G)uPX4@&CrV-(>tDg:kaSGzE");
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SERVERKEY, szmsg, strlen(szmsg));
|
||
|
||
char szpubkey[64] = {0};
|
||
char szprikey[64] = {0};
|
||
zmq_curve_keypair(szpubkey, szprikey);
|
||
zmq_setsockopt(sock, ZMQ_CURVE_PUBLICKEY, szpubkey, strlen(szpubkey));
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SECRETKEY, szprikey, strlen(szprikey));
|
||
}
|
||
zmq_connect(sock, szaddr);
|
||
int count = 0;
|
||
|
||
char szmsg[1024] = {0};
|
||
bzero(szmsg, sizeof(szmsg));
|
||
|
||
fd = inotify_init();
|
||
if (fd < 0)
|
||
{
|
||
fprintf(stderr, "inotify_init failed\n");
|
||
return NULL;
|
||
}
|
||
|
||
wd = inotify_add_watch(fd, "/usr/local/sbin", IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO );
|
||
//inotify_add_watch(fd, "/home/czl/tengswitch", IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO );
|
||
//wd = inotify_add_watch(fd, "/home/czl/test", IN_MODIFY);
|
||
if (wd < 0)
|
||
{
|
||
fprintf(stderr, "inotify_add_watch %s failed\n", "/usr/local/sbin");
|
||
return NULL;
|
||
}
|
||
|
||
buf[sizeof(buf) - 1] = 0;
|
||
while ((len = read(fd, buf, sizeof(buf) - 1)) > 0)
|
||
{
|
||
nread = 0;
|
||
while (len > 0)
|
||
{
|
||
event = (struct inotify_event *)&buf[nread];
|
||
for (i = 0; i<EVENT_NUM; i++)
|
||
{
|
||
if ((event->mask >> i) & 1)
|
||
{
|
||
if (event->len > 0)
|
||
//fprintf(stdout, "%s --- %s\n", event->name, event_str[i]);
|
||
{
|
||
|
||
stpcpy(stfilenum.szFileName,event->name);
|
||
if (stfilenum.szFileName[0] != '.')
|
||
{
|
||
printf("num in test event happened \n");
|
||
bzero(szmsg, sizeof(szmsg));
|
||
stfilenum.uiType = 4;
|
||
stpcpy(stfilenum.szIp,pcip);
|
||
stpcpy(stfilenum.szPath,"/usr/local/sbin");
|
||
gettimeofday(&stfilenum.stRcvTime,NULL);
|
||
// system("ls -l /home/czl/test |grep '^-' |wc -l > /home/czl/tengswitch/filenum.txt");
|
||
// a = fopen("/home/czl/tengswitch/filenum.txt","r");
|
||
// if(a == NULL)
|
||
// {
|
||
// printf("<p>open file:filenum.txt error</p>");
|
||
// exit(0);
|
||
// }
|
||
|
||
if(NULL==( fp = popen("ls -l /usr/local/sbin |grep '^-' |wc -l ","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return NULL;
|
||
}
|
||
|
||
fscanf(fp,"%s",num);
|
||
//printf("filenum charged is %s\n",num);
|
||
stfilenum.uiFileNum = atoi(num);
|
||
fclose(fp);
|
||
|
||
printf("type 4 root file num changed\n type is %d\n ip is %s\n path is %s\n filename is %s\n file num is %d\n\n\n\n",stfilenum.uiType,stfilenum.szIp,stfilenum.szPath,stfilenum.szFileName,stfilenum.uiFileNum);
|
||
zmq_send(sock, &stfilenum, sizeof(stFileNum), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1,ZMQ_DONTWAIT);
|
||
printf("tpye num recv is %s\n",szmsg);
|
||
|
||
}
|
||
}
|
||
//else
|
||
//fprintf(stdout, "%s --- %s\n", " ", event_str[i]);
|
||
}
|
||
}
|
||
nread = nread + sizeof(struct inotify_event) + event->len;
|
||
len = len - sizeof(struct inotify_event) - event->len;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
void *monitorhomenum(void *arg)
|
||
{
|
||
int fd,wd,len,nread,i;
|
||
char buf[BUFSIZ],num[10];
|
||
struct inotify_event *event;
|
||
stFileNum stfilenum;
|
||
FILE* fp = NULL;
|
||
// if (argc < 2)
|
||
// {
|
||
// fprintf(stderr, "%s path\n", argv[0]);
|
||
// return -1;
|
||
//}
|
||
|
||
char *pcip;
|
||
pcip = (char *)arg;
|
||
|
||
const char *ip = "10.10.10.201";
|
||
int port = 7002;
|
||
void * ctx = zmq_ctx_new();
|
||
fb_assert(ctx, "create zmq context faild");
|
||
|
||
void *sock = zmq_socket(ctx, ZMQ_REQ);
|
||
fb_assert(sock, "create zmq socket faild");
|
||
|
||
char szaddr[128] = {0};
|
||
snprintf(szaddr, sizeof(szaddr), "tcp://%s:%d", ip, port);
|
||
|
||
{//加密相关代码
|
||
char szmsg[1024] = {0};
|
||
//此密钥为服务端产生的公钥
|
||
strcpy(szmsg, "p=lDOa9WKUKz!I9{G)uPX4@&CrV-(>tDg:kaSGzE");
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SERVERKEY, szmsg, strlen(szmsg));
|
||
|
||
char szpubkey[64] = {0};
|
||
char szprikey[64] = {0};
|
||
zmq_curve_keypair(szpubkey, szprikey);
|
||
zmq_setsockopt(sock, ZMQ_CURVE_PUBLICKEY, szpubkey, strlen(szpubkey));
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SECRETKEY, szprikey, strlen(szprikey));
|
||
}
|
||
zmq_connect(sock, szaddr);
|
||
int count = 0;
|
||
|
||
char szmsg[1024] = {0};
|
||
bzero(szmsg, sizeof(szmsg));
|
||
|
||
fd = inotify_init();
|
||
if (fd < 0)
|
||
{
|
||
fprintf(stderr, "inotify_init failed\n");
|
||
return NULL;
|
||
}
|
||
|
||
wd = inotify_add_watch(fd, "/home", IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO );
|
||
//inotify_add_watch(fd, "/home/czl/tengswitch", IN_CREATE | IN_DELETE | IN_MOVED_FROM | IN_MOVED_TO );
|
||
//wd = inotify_add_watch(fd, "/home/czl/test", IN_MODIFY);
|
||
if (wd < 0)
|
||
{
|
||
fprintf(stderr, "inotify_add_watch %s failed\n", "/home");
|
||
return NULL;
|
||
}
|
||
|
||
buf[sizeof(buf) - 1] = 0;
|
||
while ((len = read(fd, buf, sizeof(buf) - 1)) > 0)
|
||
{
|
||
nread = 0;
|
||
while (len > 0)
|
||
{
|
||
event = (struct inotify_event *)&buf[nread];
|
||
for (i = 0; i<EVENT_NUM; i++)
|
||
{
|
||
if ((event->mask >> i) & 1)
|
||
{
|
||
if (event->len > 0)
|
||
//fprintf(stdout, "%s --- %s\n", event->name, event_str[i]);
|
||
{
|
||
stpcpy(stfilenum.szFileName,event->name);
|
||
// system("ls -l /home/czl/test |grep '^-' |wc -l > /home/czl/tengswitch/filenum.txt");
|
||
// a = fopen("/home/czl/tengswitch/filenum.txt","r");
|
||
// if(a == NULL)
|
||
// {
|
||
// printf("<p>open file:filenum.txt error</p>");
|
||
// exit(0);
|
||
// }
|
||
if (stfilenum.szFileName[0] != '.')
|
||
{
|
||
printf("num in home event happened \n");
|
||
bzero(szmsg, sizeof(szmsg));
|
||
stfilenum.uiType = 4;
|
||
stpcpy(stfilenum.szIp,pcip);
|
||
stpcpy(stfilenum.szPath,"/home");
|
||
gettimeofday(&stfilenum.stRcvTime,NULL);
|
||
|
||
if(NULL==( fp = popen("ls -l /home |grep '^-' |wc -l ","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return NULL;
|
||
}
|
||
|
||
fscanf(fp,"%s",num);
|
||
//printf("filenum charged is %s\n",num);
|
||
stfilenum.uiFileNum = atoi(num);
|
||
fclose(fp);
|
||
printf("type 4 home file num changed\n type is %d\n ip is %s\n path is %s\n filename is %s\n file num is %d\n\n\n\n",stfilenum.uiType,stfilenum.szIp,stfilenum.szPath,stfilenum.szFileName,stfilenum.uiFileNum);
|
||
zmq_send(sock, &stfilenum, sizeof(stFileNum), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1,ZMQ_DONTWAIT);
|
||
printf("tpye num recv is %s\n",szmsg);
|
||
}
|
||
|
||
}
|
||
//else
|
||
//fprintf(stdout, "%s --- %s\n", " ", event_str[i]);
|
||
}
|
||
}
|
||
nread = nread + sizeof(struct inotify_event) + event->len;
|
||
len = len - sizeof(struct inotify_event) - event->len;
|
||
}
|
||
}
|
||
return 0;
|
||
}
|
||
|
||
int reportpathnum()
|
||
{
|
||
FILE *fd = NULL,*fp = NULL;
|
||
char path[1024]="\0",b[10][128],i=0,j,num[128],cmd[128] = "\0";
|
||
unsigned int filenum = 0,allnum = 0,pathnum = 0;
|
||
if(NULL==(fd = popen("echo $PATH","r")))
|
||
{
|
||
fprintf(stdout,"execute command failed: ");
|
||
return 0;
|
||
}
|
||
if (NULL == fgets(path,sizeof(path),fd))
|
||
return 0;
|
||
fclose(fd);
|
||
|
||
printf("date in path is %s\n",path);
|
||
pathnum = strlen(path);
|
||
path[pathnum-1] = '\0';
|
||
char* token = strtok(path,":");
|
||
while(token != NULL)
|
||
{
|
||
strcpy(b[i++],token);
|
||
token = strtok(NULL,":");
|
||
if( i == 9 )
|
||
break;
|
||
}
|
||
|
||
for(j=0;j<i;j++)
|
||
{
|
||
fp = NULL;
|
||
strcpy(cmd,"\0");
|
||
strcpy(num,"\0");
|
||
sprintf(cmd,"ls -lR %s | grep ^- | wc -l",b[j]);
|
||
// printf("cmd is %s \n",cmd);
|
||
|
||
fp = getshellvalue(cmd);
|
||
if (fp == NULL)
|
||
continue;
|
||
fscanf(fp,"%s",num);
|
||
filenum = atoi(num);
|
||
allnum += filenum;
|
||
fclose(fp);
|
||
}
|
||
// printf("all file num is %d\n",allnum);
|
||
//fclose(fp);
|
||
return allnum;
|
||
}
|
||
|
||
|
||
int main()
|
||
{
|
||
char task_name[50]= {0};
|
||
char cmanager[50]= {0};
|
||
char manprocess[50]= {0};
|
||
char md5passwd[128] = {0};
|
||
char md5group[128] = {0};
|
||
uint err,err1,err2,err3,tcpnum,pronum,firestate0 = 0,firestate1 = 0,manpstate0 = 0,manpstate1 = 0,cmstate0 = 0,cmstate1 = 0,cpumemstate0 = 0,cpumemstate1 = 0;
|
||
char ip[32] = "10.10.10.201";
|
||
char pcip[32] = "\0";
|
||
int port = 7002,lastpathnum = 0,newpathnum = 0,iplen = 0,tasklen = 0,cmlen = 0,manlen = 0;
|
||
pid_t pid = 0 ,cmpid = 0,manpropid = 0;
|
||
FILE *fp = NULL;
|
||
fp = fopen ("/etc/nos_monitor_conf.ini", "r");
|
||
if(fp == NULL)
|
||
{
|
||
printf("<p>open file: /etc/nos_monitor_conf.ini error</p>");
|
||
return 0;
|
||
}
|
||
// fscanf(fp,"%s %s %s %s",pcip,task_name,cmanager,manprocess);
|
||
fgets(pcip, sizeof(pcip), fp);
|
||
// while(1)
|
||
// {
|
||
// printf("\n length of pcip is %d \n",strlen(pcip));
|
||
iplen = strlen(pcip);
|
||
pcip[iplen-1]='\0';
|
||
// printf("\n ip get is %s \n",pcip);
|
||
// sleep(1);
|
||
// }
|
||
|
||
fgets(task_name, sizeof(task_name), fp);
|
||
tasklen = strlen(task_name);
|
||
//printf("\n tasklen get is %d \n",tasklen);
|
||
task_name[tasklen-1]='\0';
|
||
// printf("\n task_name get is %s \n",task_name);
|
||
|
||
fgets(cmanager, sizeof(cmanager), fp);
|
||
cmlen = strlen(cmanager);
|
||
// printf("\n cmlen get is %d \n",cmlen);
|
||
cmanager[cmlen-1]='\0';
|
||
//printf("\n cmanager get is %s \n",cmanager);
|
||
fgets(manprocess, sizeof(manprocess), fp);
|
||
manlen = strlen(manprocess);
|
||
// printf("\n manlen get is %d \n",manlen);
|
||
manprocess[manlen-1] = '\0';
|
||
// printf("\n manprocess get is %s \n",manprocess);
|
||
fclose(fp);
|
||
pthread_t history_cmd,filecharge,filenumcharge,homenumcharge;
|
||
Msgreport mesgreport;
|
||
stProcessState processstate;
|
||
stFileNum pathreport;
|
||
stLogMsg syslogreport,commendlog;
|
||
//syslogreport = (stLogMsg*)malloc(sizeof(stLogMsg)+1);
|
||
memset(&syslogreport,0, sizeof(stLogMsg));
|
||
void * ctx = zmq_ctx_new();
|
||
fb_assert(ctx, "create zmq context faild");
|
||
|
||
void *sock = zmq_socket(ctx, ZMQ_REQ);
|
||
fb_assert(sock, "create zmq socket faild");
|
||
|
||
char szaddr[128] = "\0";
|
||
snprintf(szaddr, sizeof(szaddr), "tcp://%s:%d", ip, port);
|
||
|
||
{//加密相关代码
|
||
char szmsg[1024] = {0};
|
||
//此密钥为服务端产生的公钥
|
||
strcpy(szmsg, "p=lDOa9WKUKz!I9{G)uPX4@&CrV-(>tDg:kaSGzE");
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SERVERKEY, szmsg, strlen(szmsg));
|
||
|
||
char szpubkey[64] = {0};
|
||
char szprikey[64] = {0};
|
||
zmq_curve_keypair(szpubkey, szprikey);
|
||
zmq_setsockopt(sock, ZMQ_CURVE_PUBLICKEY, szpubkey, strlen(szpubkey));
|
||
zmq_setsockopt(sock, ZMQ_CURVE_SECRETKEY, szprikey, strlen(szprikey));
|
||
}
|
||
|
||
zmq_connect(sock, szaddr);
|
||
|
||
|
||
int count = 0;
|
||
char szmsg[1024] = {0};
|
||
bzero(szmsg, sizeof(szmsg));
|
||
// getchar();
|
||
// sleep(1);
|
||
err = pthread_create(&history_cmd, NULL, get_historycmd, (void *)&pcip);
|
||
//printf("have come here");
|
||
err1 = pthread_create(&filecharge, NULL, monitorfile, (void *)&pcip);
|
||
err2 = pthread_create(&filenumcharge, NULL, monitorfilenum, (void *)&pcip);
|
||
|
||
err3 = pthread_create(&homenumcharge, NULL, monitorhomenum, (void *)&pcip);
|
||
int memory_have = 0;
|
||
CPU_OCCUPY cpu_stst1;
|
||
CPU_OCCUPY cpu_stst2;
|
||
int cpu;
|
||
|
||
while(1)
|
||
{
|
||
char szmsg[1024] = {0};
|
||
bzero(szmsg, sizeof(szmsg));
|
||
// snprintf(szmsg, sizeof(szmsg), "I say %d", ++count);
|
||
// fb_debug("send msg : [%s]", szmsg);
|
||
// zmq_send(sock, szmsg, strlen(szmsg), 0);
|
||
// zmq_recv(sock, szmsg, sizeof(szmsg) - 1, 0);
|
||
// fb_debug("recv msg : [%s]", szmsg);
|
||
|
||
get_cpuoccupy((CPU_OCCUPY *)&cpu_stst1);
|
||
sleep(1);
|
||
get_cpuoccupy((CPU_OCCUPY *)&cpu_stst2);
|
||
cpu = cal_cpuoccupy((CPU_OCCUPY *)&cpu_stst1,(CPU_OCCUPY *)&cpu_stst2);
|
||
memory_have = 100*get_memoccupy();
|
||
// printf("1cpu usage:%.2f\%\n mem usage:%.2f\%\n",cpu,memory_have);
|
||
mesgreport.uiType = 1;
|
||
mesgreport.uiCpuRate = 100*cpu;
|
||
mesgreport.uiMemRate = memory_have;
|
||
stpcpy(mesgreport.szip,pcip);
|
||
//printf("2cpu usage:%.2f\%\n mem usage:%.2f\%\n",mesgreport.uiCpuRate,mesgreport.uiMemRate);
|
||
//printf("szip is:%s\n",mesgreport.szip);
|
||
mesgreport.uiCronNum = uiCronNum();
|
||
tcpnum = processnum_tcp();
|
||
//tcpnum = 10;
|
||
|
||
pronum = processnum();
|
||
|
||
mesgreport.uiTcpEstablishNum = tcpnum;
|
||
mesgreport.uiRunningProcessNum = pronum;
|
||
//printf("tcp and process is :%d and %d\n",tcpnum,pronum);
|
||
// judgecommend();
|
||
// judgelogin();
|
||
get_md5passwd(md5passwd);
|
||
//printf("test PasswdMd5 is :%s\n",md5passwd);
|
||
// strcpy(mesgreport.szPasswdMd5,md5passwd);
|
||
|
||
memcpy(mesgreport.szPasswdMd5,md5passwd,strlen(md5passwd));
|
||
//md5group = get_md5group();
|
||
get_md5group(md5group);
|
||
memcpy(mesgreport.szGroupMd5,md5group,strlen(md5group));
|
||
gettimeofday(&mesgreport.stRcvTime,NULL);
|
||
|
||
zmq_send(sock, &mesgreport, sizeof(mesgreport), 0);
|
||
// printf("have send success \n");
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1, ZMQ_DONTWAIT);
|
||
// printf("have recv success \n");
|
||
// printf("mestype1 recv is %s\n",szmsg);
|
||
// printf("Type1 send ip is %s\n passmd5 is %s\n groupmd5 is %s\n cpurate is %d\n memrate is %d\n\n\n\n",mesgreport.szip,mesgreport.szPasswdMd5,mesgreport.szGroupMd5,mesgreport.uiCpuRate,mesgreport.uiMemRate);
|
||
pid = 0 ;
|
||
getPidByName(&pid, task_name);
|
||
//printf("pid of monitsys is %d",pid);
|
||
if (pid > 0)
|
||
cpumemstate1 = 1;
|
||
else
|
||
{
|
||
bzero(szmsg, sizeof(szmsg));
|
||
processstate.uiType = 2;
|
||
stpcpy(processstate.szIp,pcip);
|
||
gettimeofday(&processstate.stRcvTime,NULL);
|
||
stpcpy(processstate.uiProcessname,task_name);
|
||
processstate.uiProcessState = 0;
|
||
zmq_send(sock, &processstate, sizeof(processstate), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1,ZMQ_DONTWAIT);
|
||
printf("type 2 send ip is %s\n Type is %d\n processname is %s\n processstate is %d\n\n\n\n",processstate.szIp,processstate.uiType,processstate.uiProcessname,processstate.uiProcessState);
|
||
sleep(1);
|
||
}
|
||
|
||
cmpid = 0;
|
||
getPidByName(&cmpid, cmanager);
|
||
printf("pid of top is %d\n\n",cmpid);
|
||
if (cmpid > 0)
|
||
cmstate1 = 1;
|
||
else{
|
||
bzero(szmsg, sizeof(szmsg));
|
||
processstate.uiType = 2;
|
||
stpcpy(processstate.szIp,pcip);
|
||
gettimeofday(&processstate.stRcvTime,NULL);
|
||
stpcpy(processstate.uiProcessname,cmanager);
|
||
processstate.uiProcessState = 0;
|
||
zmq_send(sock, &processstate, sizeof(processstate), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1,ZMQ_DONTWAIT);
|
||
// printf("mestype2 recv is %s\n",szmsg);
|
||
printf("type 2 send ip is %s\n Type is %d\n processname is %s\n processstate is %d\n\n\n",processstate.szIp,processstate.uiType,processstate.uiProcessname,processstate.uiProcessState);
|
||
sleep(1);
|
||
}
|
||
manpropid = 0;
|
||
getPidByName(&manpropid, manprocess);
|
||
|
||
if (manpropid > 0)
|
||
manpstate1 = 1;
|
||
else
|
||
{
|
||
bzero(szmsg, sizeof(szmsg));
|
||
processstate.uiType = 2;
|
||
stpcpy(processstate.szIp,pcip);
|
||
gettimeofday(&processstate.stRcvTime,NULL);
|
||
stpcpy(processstate.uiProcessname,manprocess);
|
||
processstate.uiProcessState = 0;
|
||
zmq_send(sock, &processstate, sizeof(processstate),0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1, ZMQ_DONTWAIT);
|
||
|
||
printf("type 2 send ip is %s\n Type is %d\n processname is %s\n processstate is %d\n\n\n",processstate.szIp,processstate.uiType,processstate.uiProcessname,processstate.uiProcessState);
|
||
sleep(1);
|
||
}
|
||
|
||
firestate1 = firewallcharge();
|
||
if (firestate1 == 1)
|
||
{
|
||
bzero(szmsg, sizeof(szmsg));
|
||
processstate.uiType = 2;
|
||
stpcpy(processstate.szIp,pcip);
|
||
gettimeofday(&processstate.stRcvTime,NULL);
|
||
stpcpy(processstate.uiProcessname,"firewall");
|
||
processstate.uiProcessState = 0;
|
||
zmq_send(sock, &processstate, sizeof(processstate), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1,ZMQ_DONTWAIT);
|
||
printf("type 2 send ip is %s\n Type is %d\n processname is %s\n processstate is %d\n\n\n",processstate.szIp,processstate.uiType,processstate.uiProcessname,processstate.uiProcessState);
|
||
sleep(1);
|
||
}
|
||
newloginnum = judgeiflogin();
|
||
// printf("newloginnum is %d\n",newloginnum);
|
||
if (newloginnum != lastloginnum)
|
||
{
|
||
bzero(szmsg, sizeof(szmsg));
|
||
syslogreport = judgelogin(pcip);
|
||
// printf("log before send struct is %s \n",&commendlog.szMsg[0]);
|
||
zmq_send(sock, &syslogreport, sizeof(stLogMsg), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1,ZMQ_DONTWAIT);
|
||
// printf("mestype5 recv is %s\n",szmsg);
|
||
lastloginnum = newloginnum;
|
||
// printf("msg login type is %d\nip is %s\nfilename is %s\n ",syslogreport.uiType,syslogreport.szIp,syslogreport.szLogFile);
|
||
// printf("szMsg0 is %s\n",syslogreport.szMsg[0]);
|
||
// printf("szMsg1 is %s\n",syslogreport.szMsg[1]);
|
||
// printf("szMsg2 is %s\n",syslogreport.szMsg[2]);
|
||
// printf("szMsg3 is %s\n",syslogreport.szMsg[3]);
|
||
// printf("szMsg4 is %s\n",syslogreport.szMsg[4]);
|
||
}
|
||
|
||
newpathnum = reportpathnum();
|
||
|
||
if (newpathnum != lastpathnum)
|
||
{
|
||
bzero(szmsg, sizeof(szmsg));
|
||
pathreport.uiType = 4;
|
||
stpcpy(pathreport.szIp,pcip);
|
||
stpcpy(pathreport.szPath,"path");
|
||
gettimeofday(&pathreport.stRcvTime,NULL);
|
||
pathreport.uiFileNum = newpathnum;
|
||
zmq_send(sock, &pathreport, sizeof(pathreport), 0);
|
||
zmq_recv(sock, szmsg, sizeof(szmsg) - 1,ZMQ_DONTWAIT);
|
||
lastpathnum = newpathnum;
|
||
printf("\n\npath receive is %s\n\n",szmsg);
|
||
}
|
||
}
|
||
|
||
zmq_close(sock);
|
||
zmq_ctx_term(ctx);
|
||
zmq_ctx_destroy(ctx);
|
||
|
||
return 0;
|
||
} |