📄 hwsndmsg.c
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <varargs.h>#include <unistd.h>#include <time.h>#include <sqlca.h>#include "./include/hw.h"#include "./include/App_client.h"#define SIZE 256 #define SIZE1 30void p_debug();void m_debug();void getsystime();int ReplaceChar();char * GetEtcf(const char*);main(){ char buf[SIZE]; char buff[SIZE]; FILE *fp,*fp1; int lenth,count,i,n; int keep_original=2000; char *ptr; char *desttmp; char *flename; char status[10],result[SIZE]; int y[10]; char jizhan[10]; char tmp0[SIZE1],tmp1[SIZE1],tmp2[SIZE1],tmp3[SIZE1],tmp4[SIZE1]; char tmp5[SIZE1],tmp6[SIZE1],tmp7[SIZE1],tmp8[SIZE1],tmp9[SIZE1]; char tmp10[SIZE1],tmp11[SIZE1],tmp12[SIZE1]; char tmp13[SIZE1],tmp14[SIZE1],tmp15[SIZE1]; char tmp16[SIZE1],tmp17[SIZE1],tmp18[SIZE1],tmp19[SIZE1]; int semid; static char flag[1]; static char eg1[18],eg2[70],eg3[70],time[18],eg4[70],eg5[6]; char tmp[15]; char alarm_level_no[1],alarm_sort_no[1]; char alarm_site_name[31]; char alarm_time[19],alarm_name_no[2]; char icity_no[2],vcity_no[2],sz[2]; char alarm_queue[10]; int alarm_csn,leng; char rtn[4]; char temp[80]; char wddm[5]; char cflag[2]; char rcvp[5]; char ipaddr[15]; char sndp[5]; n=0; memset(buf,0x0,SIZE); memset(buff,0x0,SIZE); memset(status,0x0,sizeof(status)); memset(result,0x0,SIZE); memset(tmp0,0x0,SIZE1); memset(tmp1,0x0,SIZE1); memset(tmp2,0x0,SIZE1); memset(tmp3,0x0,SIZE1); memset(tmp4,0x0,SIZE1); memset(tmp5,0x0,SIZE1); memset(tmp6,0x0,SIZE1); memset(tmp7,0x0,SIZE1); memset(tmp8,0x0,SIZE1); memset(tmp9,0x0,SIZE1); memset(tmp10,0x0,SIZE1); memset(tmp11,0x0,SIZE1); memset(tmp12,0x0,SIZE1); memset(tmp13,0x0,SIZE1); memset(tmp14,0x0,SIZE1); memset(tmp15,0x0,SIZE1); memset(tmp16,0x0,SIZE1); memset(tmp17,0x0,SIZE1); memset(tmp18,0x0,SIZE1); memset(tmp19,0x0,SIZE1); memset(eg5,0x0,sizeof(eg5)); desttmp=(char *)malloc(sizeof(char)*3); memset(alarm_site_name,0,31); memset(alarm_time,0,19); memset(alarm_name_no,0,2); flename=GetEtcf(SOCKINFO); if (flename==NULL){ m_debug("get ETC pathname err"); exit(-1); } if ((fp=fopen(flename,"r"))==NULL){ printf("open ETC filename err"); exit(-1); } while (fgets(temp,80,fp)!=NULL){ if (temp[0]!='#'){ sscanf(temp,"%s %s %s %s",wddm,ipaddr,sndp,rcvp); } memset(temp,0,80); } fclose(fp); while(1) { keep_original=2000; if (fgets(buf,256,stdin)==NULL){ getsystime(time); m_debug("%s fgets NULL data\n",time); sleep(60); if(n==4){ printf("n=%d\n",n); n=0; system("ksh /usr/csc/huawei/hw.sh"); printf("wait!\n"); } n++; continue; } else{ if (strstr(buf,"+++")!=NULL){ count=0; sscanf(buf,"%s%s%s%s",tmp0,tmp1,tmp2,tmp3); strcpy(result,tmp2); strcat(result,tmp3); strcat(result,"|"); } else if (count==1) { sscanf(buf,"%s%s%s%s%s",tmp4,tmp5,tmp6,tmp7,tmp8); memset(tmp4,0x0,SIZE1); lenth=sizeof(buf); for(i=0;i<HWCOUNT;i++){ if ( strncmp(tmp8,alarm_name[i].gjdm,4)==0){ keep_original=2000; memset(tmp6,0x0,SIZE1); sprintf(tmp6,"%s|%s|",alarm_name[i].status,alarm_name[i].type); sprintf(tmp4,"%s|%s",tmp5,tmp6); strcat(result,tmp4); break; } else keep_original=1000; } } if (keep_original==1000) { count=12; continue; } else if(count==2){ sscanf(buf,"%s%s%s",tmp9,tmp10,tmp11); strcpy(jizhan,tmp11); } else if (count==7){ sscanf(buf,"%s%s%s",tmp12,tmp13,tmp14); strcat(jizhan,tmp14); } else if (count==10){ ReplaceChar(buf,strlen(buf)); sscanf(buf,"%s%s%s%s%s",tmp15,tmp16,tmp17,tmp18,tmp19); strcat(jizhan,tmp19); strcat(result,jizhan); /*p_debug("result=[%s]\n",result);*/ PacketHead(result); p_debug("result=[%s]\n",result); if (snddata(result,sndp,ipaddr)<0) m_debug("snd data failure\n"); memset(result,0,sizeof(result)); memset(buf,0x0,SIZE); } count++; memset(buf,0x0,SIZE); } } memset(wddm,0,5); memset(ipaddr,0,15); memset(sndp,0,5); memset(rcvp,0,5);}{ char *strhead; char tmp[256]; strhead="04011001420011|"; strcpy(tmp,buf); strcpy(buf,strhead); strcat(buf,tmp);}#define SNDPORT 6201int snddata(char *buff,char *sndp,char *ipaddr){ struct sockaddr_in server; int tmpsock,flag = 1,i,errno; int wrtlen; if ((tmpsock = socket(AF_INET,SOCK_STREAM,0))<0){ m_debug("init tmpsock error\n"); return(-1); } server.sin_family = AF_INET; server.sin_port = htons(atoi(sndp)); server.sin_addr.s_addr = inet_addr(ipaddr); /*connect to server*/ if(connect(tmpsock,(struct sockaddr *)&server,sizeof(struct sockaddr))<0){ m_debug("connect to server error\n"); close(tmpsock); return(-3); } else{ wrtlen=write(tmpsock,buff,strlen(buff)); if (wrtlen) close(tmpsock); else{ m_debug("snd data fail\n"); return(-1); } } return 0;}char *GetEnvp(){ char *Envp; Envp=getenv(MAINDIR); printf(Envp); if(Envp==NULL){ p_debug("get Env Error"); return NULL; } return Envp;}char * GetEtcf(const char* FileName){ char* EnvDir; char* FilePath; FilePath=(char *)malloc(sizeof(char)*FILEPATHLEN); EnvDir=GetEnvp(); if(EnvDir==NULL) return NULL; sprintf(FilePath,"%s/%s/%s",EnvDir,ETCDIR,FileName); return FilePath;}char * GetPrtf(const char* FileName){ char* EnvDir; char* FilePath; FilePath=(char *)malloc(sizeof(char)*FILEPATHLEN); EnvDir=GetEnvp(); if(EnvDir==NULL) return NULL; sprintf(FilePath,"%s/%s/%s",EnvDir,PRTDIR,FileName); return FilePath;}#define TEMPDIR "/usr/nmsadmin/print"#define WORKDIR "HOME"#define TRUE 1void p_debug(va_alist)va_dcl{ va_list args; char *fmt; FILE *fp; char *envp; char *filename; char *ttyname(), *tname; tname = ttyname(TRUE);/* envp = GetPrintPath(WORKDIR); strcpy(filename,envp); strcat(filename,"/print/hweiapp");*/ filename=GetPrtf("hweiapp"); fp = fopen(filename, "a"); va_start(args); fmt = va_arg(args, char * ); vfprintf(fp, fmt, args); va_end(args); fclose(fp);}void m_debug(va_alist)va_dcl{ va_list args; char *fmt; FILE *fp; char *envp,*filename; char *ttyname(),*tname; tname=ttyname(TRUE);/* envp = GetPrintPath(WORKDIR); strcpy(filename,envp); strcat(filename,"/print/hweierr");*/ filename=GetPrtf("hweierr"); fp=fopen(filename,"a"); va_start(args); fmt=va_arg(args,char *); vfprintf(fp,fmt,args); va_end(args); fclose(fp);}void getsystime(char *tmp){ time_t tv; tv=time((time_t *) 0); strcpy(tmp,ctime(&tv)+4); tmp[20]=0;} int ReplaceChar(char *str,int len) { int i = 0; while (i < len) { start: if (str[i] == '|') { str[i] = ' '; i++; goto start; } if (str[i] == '\n') { str[i] = ' '; i++; goto start; } if (str[i] == '=') { str[i] = ' '; i++; goto start; } if (str[i] == ',') { str[i] = ' '; i++; goto start; } i++; } return(0); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -