高信頼化システム監視機能 HAモニタ

[目次][用語][索引][前へ][次へ]

付録B ユーザコマンドのコーディング例

ユーザコマンドのコーディング例として,サーバ識別名をチェックしてCGMTを切り替える処理を,次に示します。ただし,このコーディング例は,HI-UX/WE2での例になっています。

/************************************************************/
/*  サーバ識別名をチェックして,CGMTを切り替える処理            */
/*  argv[2]:サーバ識別名         argv[5]:サーバ状態パラメタ   */
/*  argv[4]:サーバ種別           argv[6]:開始/終了パラメタ   */
/************************************************************/
 
#include    <stdio.h>
#define    KIND_ONL      "online"
#define    KIND_SBY      "standby"
#define    SERV_START    "-s"
#define    SERV_END      "-e"
#define    SERV_ABORT    "-a"
#define    STATUS_START  "start"
#define    STATUS_END    "end"
#define    TP1_11        "opentp11"
#define    TP1_12        "opentp12"
#define    CGMTCMD       "/etc/mtconnect "
#define    CGMT_FILE     "/dev/cgmt0 "
#define    CGMT_CONNECT  "-c"
#define    CGMT_DISCNNCT "-d"
#define    CGMT_RESET    "-c -r"
#define    CMD_ZERO      0
main(argc,argv)
int       argc;
char     *argv[];
{
     char    cgmt_cmd[40];
     if(strcmp(argv[2],TP1_11)==CMD_ZERO){
 
     /*-----------------------------------------------------*/
     /*  サーバ識別名 "opentp11" の状態変化                    */
     /*-----------------------------------------------------*/
 
        if(strcmp(argv[4],KIND_ONL) == CMD_ZERO){
     /*---サーバ種別 online ------------------------------------*/
           if((strcmp(argv[5],SERV_START) == CMD_ZERO) &&
              (strcmp(argv[6],STATUS_START) == CMD_ZERO)){
 
     /*-----------------------------------------------------*/
     /*  実行サーバ:opentp11の起動処理開始                     */
     /*  CGMTをアクセス可能にします。                           */
     /*-----------------------------------------------------*/
 
              memset(cgmt_cmd,NULL,40);
              strcpy(cgmt_cmd,CGMTCMD);
              strcat(cgmt_cmd,CGMT_FILE);
              strcat(cgmt_cmd,CGMT_CONNECT);
              system(cgmt_cmd);
              return;
           }else;
           if((strcmp(argv[5],SERV_ABORT) == CMD_ZERO) &&
              (strcmd(argv[6],STATUS_START) == CMD_ZERO)){
 
     /*-----------------------------------------------------*/
     /*  実行サーバ:opentp11のサーバ障害                       */
     /*  CGMTをアクセス不可能にします。                         */
     /*-----------------------------------------------------*/
 
              memset(cgmt_cmd,NULL,40);
              strcpy(cgmt_cmd,CGMTCMD);
              strcat(cgmt_cmd,CGMT_FILE);
              strcat(cgmt_cmd,CGMT_DISCNNCT);
              system(cgmt_cmd);
              return;
           }else;
 
             :
             :
             :
             :
 
       }   /*---実行サーバ処理終了-----------------------------*/
        else;
        if((strcmp(argv[4],KIND_SBY) == CMD_ZERO){
 
      /*---サーバ種別 standby -----------------------------------*/
           if((strcmp(argv[5],SERV_START) == CMD_ZERO) &&
              (strcmp(argv[6],STATUS_START) == CMD_ZERO)){
 
 
     /*-----------------------------------------------------*/
     /*  待機サーバ:opentp11の起動処理開始                     */
     /*  CGMTをアクセス不可能にします。                         */
     /*-----------------------------------------------------*/
 
              memset(cgmt_cmd,NULL,40);
              strcpy(cgmt_cmd,CGMTCMD);
              strcat(cgmt_cmd,CGMT_FILE);
              strcat(cgmt_cmd,CGMT_DISCNNCT);
              system(cgmt_cmd);
              return;
           }else;
           if((strcmp(argv[5],SERV_ABORT) == CMD_ZERO) &&
              (strcmd(argv[6],STATUS_START) == CMD_ZERO)){
 
 
     /*-----------------------------------------------------*/
     /*  実行サーバ:opentp11のサーバ障害                       */
     /*  待機サーバ:opentp11の系切り替え処理開始               */
     /*  CGMTをリセット後,アクセス可能にします。               */
     /*-----------------------------------------------------*/
 
              memset(cgmt_cmd,NULL,40);
              strcpy(cgmt_cmd,CGMTCMD);
              strcat(cgmt_cmd,CGMT_FILE);
              strcat(cgmt_cmd,CGMT_RESET);
              system(cgmt_cmd);
              return;
           }else;
 
             :
             :
             :
             :
 
        }   /*---待機サーバ処理終了-----------------------------*/
        else;
 
     }
     else;  /*---サーバ:opentp11処理終了-----------------------*/
 
     if(strcmp(argv[2],TP1_12) == CMD_ZERO){
 
     /*-----------------------------------------------------*/
     /*  サーバ識別名 "opentp12" の状態変化                     */
     /*-----------------------------------------------------*/
 
             :
             :
             :
             :
     }
     else;
}