⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dce_admin_cmd.c

📁 Ho Chi Minh City University of Technology Computer Science Department Distributed Computing E
💻 C
📖 第 1 页 / 共 2 页
字号:
	}    }  close (n);  return 1;}intdce_admin_killserver (int argc, char **argv){  u_long u = gethostaddr (argv[1]);  if (!dce_admin_confirm(argc,argv))    return 0;  if (u == -1)    {      fprintf (stderr, "Illegal hostname %s\n", argv[1]);      return 0;    }  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_ALL_KILLSERVER;  Admin.Msg.aaddr = u;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));}intdce_admin_killagent (int argc, char **argv){  if (!dce_admin_confirm(argc,argv))    return 0;  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_KILLAGENT;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  Admin.bConnect = 0;}intdce_admin_restart (int argc, char **argv){  char cmd[256];  char host[20];  char ssport[20];  char smport[20];  char stime[10];  char *p = argv[1];  int n, code;  u_long u = gethostaddr (argv[1]);  if (!dce_admin_confirm(argc, argv))    return 0;  if (!dce_admin_findagent (argc, argv))    return 0;  if (!dce_admin_countnumaliveserver (argc, argv))    return 0;  if (!msg.nextra)    return 0;  if (u == -1)    {      fprintf (stderr, "Illegal hostname %s\n", argv[1]);      return 0;    }  if (u == msg.saddr)    return 0;  if (u != getmyaddr ())    {      dce_admin_listhost (0);      if (!dce_admin_findhost (u))	{	  fprintf (stderr, "%s is not on subnet\n", ascaddr (u));	  return 0;	}    }  else    p = host;  dce_admin_killagent (argc, argv);  sprintf (cmd, "%s/bin/%s/dceagent", Admin.szDCE_ROOT, gethostarch (argv[1]));  strcpy (host, (char *) ascaddrip (getmyaddr ()));  sprintf (smport, "%d", Admin.mport);  sprintf (ssport, "%d", Admin.Msg.sport);  sprintf (stime,"%d",TIMEOUT_IAMALIVE);  if (!IsFileExist (cmd))    {      fprintf (stderr, "%s not found\n", cmd);      return 0;    }  if ((code = fork ()) < 0)    {      fprintf (stderr, "Can not fork process for agent\n");      return 0;    }  if (!code)    {      code = execlp ("/usr/bin/rsh", "rsh", p, cmd, Admin.szDCE_ROOT, ascaddrip      (Admin.maddr), smport, host, ssport, "0",stime, NULL);      if (code < 0)	fprintf (stderr, "Can not execlp %s\n", cmd);      exit (-1);    }  if ((n = dce_admin_accept ()) <= 0)    return 0;  if (read (n, (void *) &msg, sizeof (msg)) == sizeof (msg))    if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_FORK_SUCCESS)      fprintf (stderr, "Agent restart successfully at %s\n", ascaddr (msg.saddr));  close (n);  return dce_admin_connectagent (argc, argv);}intdce_admin_howmanyserver (int argc, char **argv){  int n;  if (!dce_admin_confirm(argc,argv))    return;  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_HOWSERVER;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  if ((n = dce_admin_accept ()) <= 0)    {      fprintf (stderr, "Time out ! Agent not found !\n");      return 0;    }  if (read (n, (void *) &msg, sizeof (msg)) == sizeof (msg))    if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_HOWSERVER)      {	fprintf (stderr, "Total servers: %2d on DCE system \n", msg.nextra);	close (n);	return 1;      }  close (n);  fprintf (stderr, "Error in read message \n");  return 0;}intdce_admin_adduser (int argc, char **argv){  uid_t uid;  if (!dce_admin_confirm( argc,argv))    return;  if (argc == 1)    return 0;  if ((uid = getuserid (argv[1])) < 0)    {      fprintf (stderr, "Illegal username %s\n", argv[1]);      return 0;    }  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_ALL_ADDUSER;  Admin.Msg.lextra = uid;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  return dce_admin_listperuser (argc, argv);}intdce_admin_listperuser (int argc, char **argv){  int n;  if (!dce_admin_confirm(argc,argv))    return;  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_LISTUSER;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  if ((n = dce_admin_accept ()) <= 0)    {      fprintf (stderr, "Time out ! Agent not found !\n");      return 0;    }  while (read (n, (void *) &msg, sizeof (msg)) == sizeof (msg))    {      if (msg.type == DCE_MSG_END_OF_TRANSACTION)	{	  fprintf (stderr, "End of transaction\n");	  close (n);	  return 1;	}      if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_USERINFO)	fprintf (stderr, "User :%s\n", ascuserid (msg.lextra));    }  close (n);  return 1;}intdce_admin_deluser (int argc, char **argv){  uid_t uid;  if (!dce_admin_confirm(argc,argv))    return;  if (argc == 1)    return 0;  if ((uid = getuserid (argv[1])) < 0)    {      fprintf (stderr, "Illegal username %s\n", argv[1]);      return 0;    }  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_ALL_DELUSER;  Admin.Msg.lextra = uid;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  return dce_admin_listperuser (argc, argv);}intdce_admin_countnumaliveserver (int argc, char **argv){  int n;  if (!dce_admin_confirm( argc,argv))    return;  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_HOWMANYSERVERALIVE;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  if ((n = dce_admin_accept ()) <= 0)    {      fprintf (stderr, "Time out ! Agent not found !\n");      return 0;    }  if (read (n, (void *) &msg, sizeof (msg)) == sizeof (msg))    if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_HOWMANYSERVERALIVE)      {	fprintf (stderr, "Total alive servers: %2d on DCE system \n", msg.nextra);	close (n);	return 1;      }  close (n);  fprintf (stderr, "Error in read message \n");  return 0;}intdce_admin_add_service (int argc, char **argv){  int i;  char cmd[256];  if (!dce_admin_confirm(argc,argv))    return;  if (argc < 3)    {      fprintf (stderr, "%s servicename numparams\n", argv[0]);      return 0;    }  if (strlen (argv[1]) > MAXSERVICENAMELEN)    {      fprintf (stderr, "Service length too long :%s\n", argv[1]);      return 0;    }  sprintf (cmd, "%s/bin/%s/%s", Admin.szDCE_ROOT, sysinfo_hostarch (), argv[1]);  if (!IsFileExist (cmd))    {      fprintf (stderr, "File %s not found \n", cmd);      return 0;    }  i = atoi (argv[2]);  if (i < 0)    {      fprintf (stderr, "Parameter negative: %d\n", i);      return 0;    }  Admin.Msg.nextra = i;  strcpy (Admin.Msg.sername, argv[1]);  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_ADDSERVICE;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  return dce_admin_listservice (argc, argv);}intdce_admin_listservice (int argc, char **argv){  int n;  if (!dce_admin_confirm(argc,argv))    return;  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_LISTSERVICE;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  if ((n = dce_admin_accept ()) <= 0)    {      fprintf (stderr, "Time out ! Agent not found !\n");      return 0;    }  while (read (n, (void *) &msg, sizeof (msg)) == sizeof (msg))    {      if (msg.type == DCE_MSG_END_OF_TRANSACTION)	{	  fprintf (stderr, "End of transaction\n");	  close (n);	  return 1;	}      if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_SERVICEINFO)	fprintf (stderr, "SERVICECODE  %3d   NAME  %25s        %d params\n", msg.pid, msg.sername, msg.nextra);    }  close (n);  return 1;}intdce_admin_listcurusage (int argc, char **argv){  int n;  USERSERVICE us;  if (!dce_admin_confirm(argc, argv))    return 0;  if (!dce_admin_listservice (argc, argv))    return 0;  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_LISTCURUSERSERVICE;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  if ((n = dce_admin_accept ()) <= 0)    {      fprintf (stderr, "Time out ! Agent not found !\n");      return 0;    }  while (read (n, (void *) &msg, sizeof (msg)) == sizeof (msg))    {      if (msg.type == DCE_MSG_END_OF_TRANSACTION)	{	  fprintf (stderr, "End of transaction\n");	  close (n);	  return 1;	}      if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_LISTCURUSERSERVICE)	if (read (n, (void *) &us, sizeof (us)) == sizeof (us))	  {	    fprintf (stderr, "\nUser %s from %s\n", ascuserid (us.uid), ascaddr (us.clientaddr));	    fprintf (stderr, "using serive %d at server %s with pid	%d\n", us.sernum, ascaddr (us.serveraddr), us.pid);	    fprintf (stderr, "Begin time :%s", ctime (&us.tStart));	    if (us.tEnd)	      {		fprintf (stderr, "End time   :%s", ctime (&us.tEnd));		fprintf (stderr, "Total of excutable time : %d (s)\n", us.tEnd - us.tStart);	      }	    else	      {		fprintf (stderr, "Running with Status :%d\n", us.status);		fprintf (stderr, "Excuting time : %d (s)\n", time (NULL) - us.tStart);	      }	  }    }  close (n);  return 1;}intdce_admin_load (int argc, char **argv){  double y, y1, y2, y3;  kstat_ctl_t *kc;  kstat_t *ksp;  void *vp;  if ((kc = kstat_open ()) == (void *) NULL)    return y;  if ((ksp = kstat_lookup (kc, "unix", 0, "system_misc")) == (void *) NULL)    return 0;  if (kstat_read (kc, ksp, NULL) == (kid_t) - 1)    return y;  if ((vp = kstat_data_lookup (ksp, "avenrun_1min")) == (void *) NULL)    return 0;  y = y3 = (double) (((kstat_named_t *) vp)->value.l) / (double) (FSCALE);  if ((vp = kstat_data_lookup (ksp, "avenrun_5min")) == (void *) NULL)    return 0;  y = y2 = (double) (((kstat_named_t *) vp)->value.l) / (double) (FSCALE);  if ((vp = kstat_data_lookup (ksp, "avenrun_15min")) == (void *) NULL)    return 0;  y = y1 = (double) (((kstat_named_t *) vp)->value.l) / (double) (FSCALE);  fprintf (stderr, "1 minute load average: %.2f\n", y3);  fprintf (stderr, "5 minute load average: %.2f\n", y2);  fprintf (stderr, "15 minute load average: %.2f\n", y1);  y = (y1 * 15 + y2 * 5 + y3) / 21;  fprintf (stderr, "Future value %.2f\n", y);  return 1;}intdce_admin_listonusage (int argc, char **argv){  int n;  USERSERVICE us;  if (!dce_admin_confirm(argc,argv))    return 0;  if (!dce_admin_listservice (argc, argv))    return 0;  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_LISTCURUSERSERVICE;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  if ((n = dce_admin_accept ()) <= 0)    {      fprintf (stderr, "Time out ! Agent not found !\n");      return 0;    }  while (read (n, (void *) &msg, sizeof (msg)) == sizeof (msg))    {      if (msg.type == DCE_MSG_END_OF_TRANSACTION)	{	  fprintf (stderr, "End of transaction\n");	  close (n);	  return 1;	}      if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_LISTCURUSERSERVICE)	if (read (n, (void *) &us, sizeof (us)) == sizeof (us))	  {	    if (!us.tEnd)	      {		fprintf (stderr, "\nUser %s from %s\n", ascuserid (us.uid), ascaddr (us.clientaddr));		fprintf (stderr, "using serive %d at server %s with pid	%d\n", us.sernum, ascaddr (us.serveraddr), us.pid);		fprintf (stderr, "Begin time :%s", ctime (&us.tStart));		fprintf (stderr, "Running with Status :%d\n", us.status);		fprintf (stderr, "Excuting time : %d\n", time (NULL) - us.tStart);	      }	  }    }  close (n);  return 1;}intdce_admin_brstart (int argc, char **argv){  int i;  if (argc == 2)    i = atoi (argv[1]);  dce_netstat (i);  return 1;}intdce_admin_listhoste (int argc, char **argv){  travelprinthost ();}int dce_admin_listloadserver(int argc, char **argv){  if (!dce_admin_confirm( argc,argv))    return;  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_SERVER_LOADINFO;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  sleep(1);  dce_admin_listserver (argc,argv);}int dce_admin_confirm(int argc, char **argv){  int n;  char buf[30];  if (!Admin.bConnect) return 0;    Admin.Msg.nextra = getpid ();  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_CONFIRM_CONNECT;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));  if ((n = dce_admin_accept ()) <= 0)    {      fprintf (stderr, "Time out ! Agent not found !\n");      return 0;    }  if (read (n, (void *) &msg, sizeof (msg)) == sizeof (msg))    if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_ACCEPT_CONNECT)      {	strcpy (buf, ascaddr (msg.saddr));	fprintf (stderr, "Agent at %s accept connect with %s\n", buf, ascaddrip (getmyaddr ()));	close (n);	Admin.bConnect = 1;	return 1;      }  if (msg.type == DCE_MSG_AGENT_REPLY_ADMIN_REFUSE_CONNECT)    {      strcpy (buf, ascaddr (msg.saddr));      fprintf (stderr, "Agent at %s CONNECTED TIME OUT with Admin %s!\n", buf,ascaddr(getmyaddr()));      close (n);      Admin.bExit = 1;      return 0;    }  close (n);  fprintf (stderr, "Error in read message \n");  return 0;}void dce_admin_treat_cmd(int argc,char *argv[]){char c;while ((c=getopt(argc,argv,"a"))!=-1)	{	switch (c)		{		case 'a':  Admin.Msg.type = DCE_MSG_ADMIN_REQUEST_AGENT_CLEAR_CONNECT;  dce_admin_mcastsend ((char *) &Admin.Msg, sizeof (MSG));					break;		}	}}int dce_admin_serverload(int argc,char **argv){  char cmd[256];  char display[30];  int  code;  u_long u = gethostaddr (argv[1]);  if (!dce_admin_confirm(argc, argv))    return 0;  if (u == -1)    {      fprintf (stderr, "Illegal hostname %s\n", argv[1]);      return 0;    }  if (!dce_admin_server_is_running_on_host (argc, argv))    {    fprintf(stderr,"Server %s not running on DCE system\n",ascaddr(u));	    return 0;    }  sprintf (cmd, "%s/bin/%s/top", Admin.szDCE_ROOT, gethostarch (argv[1]));  sprintf (display,"%s:0",ascaddrip(getmyaddr()));  if (!IsFileExist (cmd))    {      fprintf (stderr, "%s not found\n", cmd);      return 0;    }        if ((code = fork ()) < 0)    {      fprintf (stderr, "Can not fork process for top\n");      return 0;    }      if (!code)    {code=execlp("/usr/bin/rsh","rsh",ascaddrip(u),"/usr/openwin/bin/cmdtool","-I",cmd,"-display",display,">/dev/null 2>&1","&",NULL);      if (code < 0)	fprintf (stderr, "Can not execlp %s\n", cmd);      exit (-1);    }  return 1;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -