?? ewsdmpt2.c
字號(hào):
#include <stdio.h>
#include <fcntl.h>
#include <signal.h>
#include <sys/termio.h>
#include "init.h"
#define MINCHAR 13
#define C_SIZE 86
#define L_SIZE 256
char teleno[12];
int use_scrn;
int mapfd,port;
char portname[20];
char comm[L_SIZE];
char Krelease_char,Kconnect_char,Ksend_char;
char BLANK_C,CONNECT_C,RELEASE_C,SEND_C;
char PASS[10],USER[10],COMM[80],tjtime[20];
int fd[MAX_PORT_NO];
struct con
{
char send_char;
char connect_char;
char release_char;
char iogtype[9];
char omcport[7];
char office_name[6];
}conf;
main(argc,argv)
int argc;
char *argv[];
{
int i;
int fp;
int pid;
BLANK_C=0x00;
CONNECT_C=0x02;
SEND_C=0x0a;
RELEASE_C=0x04;
strcpy(PASS,"SYSTEM-66");
strcpy(USER,"EWSD6666");
strcpy(COMM,"DISPALARM;\n");
init();
/*
connect_file();
nap(1000);
user_file();
nap(1000);
passwd_file();
nap(1000);
command_file();
*/
printf("###############################################\n");
printf("##########exec time %d #######################\n",i);
printf("###############################################\n");
exec_comm(fp,"DISPALARM;\n");
scandok();
printf("###############################################\n");
printf("##########exec time %d #######################\n",i);
printf("###############################################\n");
exec_comm(fp,"DISPSU:DN=2191143;\n");
scandok();
}
/****************************************************************/
init()
{
struct configst conff[MAX_PORT_NO];
int n=0;
FILE *confd;
if ((confd=fopen(CONF_FILE,"rb"))==NULL){
err_exit(ARGV_0,"config open",errno,0);
}
if((n=fread(conff,CONFIGLEN,MAX_PORT_NO,confd))<=0){
err_exit(ARGV_0,"config read",errno,0);
}
fclose(confd);
if (conff[port].data_type==OPERAT)
{
conf.release_char=conff[port].release_char;
conf.connect_char=conff[port].connect_char;
conf.send_char=conff[port].send_char;
strcpy(conf.office_name,conff[port].office_name);
strcpy(conf.iogtype,conff[port].iogtype);
strcpy(conf.omcport,conff[port].omcport);
}/***if OPERAT******/
return;
}
/****************************************************************/
exec_comm(int fd1,char *comm)
{int i,t,resul;
char c;
star:
t=0;
resul=0;
release_file();
nap(1000);
connect_file();
nap(1000);
resul=justsend("USERID",1)+justsend("<",0);
while(resul<=0 && t<10)
{
release_file();
nap(1000);
connect_file();
nap(1000);
resul=justsend("USERID",1)+justsend("<",0);
t++;
} /* send f5 to connect the SWITCH */
if(resul==0) return(0);
resul=justsend("USERID",1);
if(resul>0)
{
user_file();
nap(1000);
resul=justsend("##",0);
i=0;
while(resul==0 && i<10)
{
i++;
nap(1000);
/* printf("scan USERID or < ==%d time /n",i); */
resul=justsend("##",0);
}
if(resul>0) passwd_file();
else goto star;
nap(1000);
} /*** sent userid and password ***/
resul=justsend("<",0);
i=0;
while(resul==0 && i<10)
{
i++;
nap(1000);
/* printf("scan USERID or < ==%d time /n",i); */
resul=justsend("<",0);
}
if(resul>0)
{
command_file();
nap(3000);
i=0;
resul=0;
while(resul==0 && i<10)
{
i++;
nap(2000);
resul=justsend("END",0);
}
return(1);
}
else goto star;
}
/****************************************************************/
connect_file()
{
int fdd,i;
/******creat the send char file **************/
if((fdd=open("/u/omc/tmp/send_f5",O_CREAT|O_RDWR,0666))<0)
{ perror("Open !!!");
exit(0);
}
printf("send_f5 creat \n");
write(fdd,&conf.omcport,6);
write(fdd,&BLANK_C,1);
write(fdd,&CONNECT_C,1);
for(i=1;i<=159;i++) write(fdd,&BLANK_C,1);
close(fdd);
system("cp /u/omc/tmp/send_f5 /u/omc/tmp/send_file");
}
/****************************************************************/
release_file()
{
int fdd,i;
/******creat the release char file **************/
if((fdd=open("/u/omc/tmp/send_f1",O_CREAT|O_RDWR,0666))<0)
{ perror("Open !!!");
exit(0);
}
printf("send_f1 \n");
write(fdd,&conf.omcport,6);
write(fdd,&BLANK_C,1);
write(fdd,&RELEASE_C,1);
for(i=1;i<=159;i++) write(fdd,&BLANK_C,1);
close(fdd);
system("cp /u/omc/tmp/send_f1 /u/omc/tmp/send_file");
}
/****************************************************************/
command_file()
{
int fdd,len,i;
/******creat the command char file **************/
if((fdd=open("/u/omc/tmp/send_comm",O_CREAT|O_RDWR,0666))<0)
{ perror("Open !!!");
exit(0);
}
len=strlen(COMM);
printf("send_comm creat \n");
write(fdd,&conf.omcport,6);
write(fdd,&BLANK_C,1);
write(fdd,&COMM,len);
write(fdd,&SEND_C,1);
len=167-8-len;
for(i=1;i<=len;i++) write(fdd,&BLANK_C,1);
close(fdd);
system("cp /u/omc/tmp/send_comm /u/omc/tmp/send_file");
}
/****************************************************************/
passwd_file()
{
int fdd,len,i;
/******creat the command char file **************/
if((fdd=open("/u/omc/tmp/send_pass",O_CREAT|O_RDWR,0666))<0)
{ perror("Open !!!");
exit(0);
}
len=strlen(PASS);
printf("send_pass \n");
write(fdd,&conf.omcport,6);
write(fdd,&BLANK_C,1);
write(fdd,&PASS,len);
write(fdd,&SEND_C,1);
len=167-8-len;
for(i=1;i<=len;i++) write(fdd,&BLANK_C,1);
close(fdd);
system("cp /u/omc/tmp/send_pass /u/omc/tmp/send_file");
}
/****************************************************************/
user_file()
{
int fdd,len,i;
/******creat the command char file **************/
if((fdd=open("/u/omc/tmp/send_user",O_CREAT|O_RDWR,0666))<0)
{ perror("Open !!!");
exit(0);
}
len=strlen(USER);
printf("send_user creat \n");
write(fdd,&conf.omcport,6);
write(fdd,&BLANK_C,1);
write(fdd,&USER,len);
write(fdd,&SEND_C,1);
len=167-8-len;
for(i=1;i<=len;i++) write(fdd,&BLANK_C,1);
close(fdd);
system("cp /u/omc/tmp/send_user /u/omc/tmp/send_file");
}
/****************************************************************/
justsend(str,mod)
char *str;
int mod;
{char buff[L_SIZE],endbuff[L_SIZE],portname[6];
FILE *fp;
char fname[50];
long time(),lg;
struct tm *localtime(),*tim;
lg=time(&lg);
tim=localtime(&lg);
strcpy(portname,conf.omcport);
sprintf(fname,"%s/data/%sO%s_%d%d%d%d%d",PATH,conf.office_name,&portname[3],tim->tm_year,(tim->tm_mon+1)/10,(tim->tm_mon+1)%10,tim->tm_mday/10,tim->tm_mday%10);
printf("%s\n",fname);
if((fp=fopen(fname,"r"))==NULL)
{printf("open rawfile error ! \n");
fclose(fp);
nap(30000);
return(-1);
}
fgets(endbuff,L_SIZE,fp);
while(!feof(fp))
{
strcpy(buff,endbuff);
fgets(endbuff,L_SIZE,fp);
}
fclose(fp);
printf("raw buff:%s\n",buff);
printf("raw endbuff:%s\n",endbuff);
if(mod==1) strcpy(endbuff,buff);
if(sub_str(endbuff,str)>0)
return(1);
else
return(0);
}
/****************************************************************/
scandok()
{char portname[6],rawbuff[21][L_SIZE];
FILE *fp;
char fname[50],hour[6];
long time(),lg;
struct tm *localtime(),*tim;
int i,lastok,succok,teleok;
int yy,mm,dd;
char mon_name[12][4]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};
lg=time(&lg);
tim=localtime(&lg);
strcpy(portname,conf.omcport);
sprintf(fname,"%s/data/%sO%s_%d%d%d%d%d",PATH,conf.office_name,&portname[3],tim->tm_year,(tim->tm_mon+1)/10,(tim->tm_mon+1)%10,tim->tm_mday/10,tim->tm_mday%10);
printf("%s\n",fname);
if((fp=fopen(fname,"r"))==NULL)
{printf("open rawfile error ! \n");
fclose(fp);
nap(30000);
return(-1);
}
for(i=0;i<21;i++)
if(!feof(fp))
fgets(rawbuff[i],L_SIZE,fp);
else
break;
for(;!feof(fp);)
{
for(i=1;i<21;i++)
strcpy(rawbuff[i-1],rawbuff[i]);
if(!feof(fp)) fgets(rawbuff[20],L_SIZE,fp);
}
for(i=0;i<21;i++)
printf("%s",rawbuff[i]);
lastok=0;
teleok=0;
succok=0;
for(i=0;i<20;i++)
{ if(sub_str(rawbuff[i],"LAST REPORT")>0) lastok=1;
if(sub_str(rawbuff[i],teleno)>0) teleok=1;
if(sub_str(rawbuff[i],"SUCCESSFUL")>0)
{
succok=1;
if(sub_str(rawbuff[i],"NOT SUCCESSFUL")>0) succok=2;
}
if(sub_str(rawbuff[i],"Y.L.CHENGBEI")>0)
{sscanf(rawbuff[i],"%*s %4d-%2d-%2d %5s",&yy,&mm,&dd,hour);
sprintf(tjtime,"%d %s %d %5s:00",yy,mon_name[mm-1],dd,hour);
}
}
printf("lastok=%d,teleok=%d,succok=%d,time=%s\n",lastok,teleok,succok,tjtime);
/****1 is success,2 is not success,3 is can't know */
if(lastok==1&&teleok==1&&succok==1)
return(1);
else
if(lastok==1&&teleok==1&&succok==2)
return(2);
else
return(3);
}
/****************************************************************/
sub_str(str1,str2)
char *str1,*str2;
{
int l1,l2,i;
l1=strlen(str1);
l2=strlen(str2);
if(l1<l2) return(-1);
for(i=0;i<l1;i++) {
if(l1-i<l2) return(-1);
if(!strncmp(str1+i,str2,l2)) return(i);
}
return(-1);
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -