免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1244 | 回复: 2
打印 上一主题 下一主题

磁带备份脚本 求解 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-04-16 15:28 |只看该作者 |倒序浏览
本人对于脚本文件刚刚学习,看到这么长的脚本,未看先惊;再看好多迷惑,故请高手解析解析。一,以免我误入歧途;二,另我事倍功半。谢谢了!最好是每条语句每条语句的注释一下。另我等新手看个明明白白。
     1  #!/bin/sh
     2  #
     3
     4  #------- Init PART -----------------
     5
     6  YY=`date +%Y`
     7  MM=`date +%m`
     8  DD=`date +%d`
     9  HH=`date +%H`
    10  WK=`date +%u`
    11  WU=`date +%W`
    12  DayNo=`date +%j`
    13
    14  ME="/ucmd/ubk/ubkfun"
    15  uconf="/ucmd/ubk/ubk.conf"
    16  MessageFile="/ucmd/ubk/bkmess$YY$MM.txt"
    17  ResultFile="/ucmd/ubk/bkres$YY$MM.txt"
    18  TapeFile="/ucmd/ubk/tap$YY.txt"
    19  TapeCmdFile="/ucmd/ubk/tapecmd.txt"
    20  ChangeTape="/ucmd/ubk/uchangetape"
    21  SmsCmd="/ucmd/ubk/sendsms"
    22  RunTag="/dev/shm/ubkfun.run"
    23  BaseTapeNo="0"
    24  EndTapeNo="0"
    25  TapeChanger="/dev/sg8"
    26  TapeDrive="1"
    27  TapeDevice="/dev/nst$TapeDrive"
    28  LoadedTape="0"
    29  TapeReady="N"
    30  TapeReset="N"
    31
    32
    33  # ------------------------------------------------------
    34  # ================== Function Area =========================
    35
    36  function LogMessage()
    37  {
    38    echo "$YY$MM$DD$HH-[`date +%m%d%H%M`]:Mes[$1]" >> $MessageFile
    39  }
    40
    41  function LogResult()
    42  {
    43    echo "$YY$MM$DD$HH-[`date +%m%d%H%M`]:Res[$1]" >> $ResultFile
    44  }
    45
    46  function LogTape()
    47  {
    48    echo "$YY$MM$DD$HH-[`date +%m%d%H%M`]:Res[$1]" >> $TapeFile
    49  }
    50
    51  function LogTapeCmd()
    52  {
    53    echo "$1 [Tm:`date +%m%d%H%M`]" >> $TapeCmdFile
    54  }
    55
    56  function SMS()
    57  {
    58     echo "13610154102 #utap:`date +%Y%m%d%H%M`-$1" | $SmsCmd
    59     echo "utap $1 `date +%Y%m%d%H%M`" >> /dev/shm/mess.u
    60  }
    61
    62  function NdayOfMon()
    63  {
    64    Ry="$1"
    65    Rm="$2"
    66    Ad="31"
    67    for i in 1 3 5 7 8 10 12 ; do
    68       if [ "$i" = "$Rm" ]; then
    69           break
    70       fi
    71    done
    72
    73    if [ "$i" = "$Rm" ]; then
    74         Ad="31"
    75    else
    76         if [ "$Rm" = "2" ]; then
    77             if [ `expr "$Ry" % 4` = 0 ]; then
    78                 Ad="29"
    79             else
    80                 Ad="28"
    81             fi
    82         else
    83             Ad="30"
    84         fi
    85    fi
    86
    87   echo $Ad
    88  }
    89
    90  function PreDate()
    91  {
    92    Ry="$1"
    93    Rm="$2"
    94    Rd="$3"
    95    Pd="$4"
    96    Sd="$4"
    97    Ad="0"
    98    CnD="0"
    99
   100    if [ $Rd -le $Pd ] ; then
   101       CnD="$Rd"
   102       while [ $CnD -le $Pd ]; do
   103         if [ $Rm -gt 1 ] ;then
   104            Rm=`expr "$Rm" - 1`
   105            Ad=`NdayOfMon "$Ry" "$Rm"`
   106            CnD=`expr "$CnD" + "$Ad"`
   107         else
   108            Ry=`expr "$Ry" - 1`
   109            Rm="12"
   110            Ad="31"
   111            CnD=`expr "$CnD" + 31`
   112         fi
   113       done
   114       Rd=`expr "$CnD" - "$Pd"`
   115    else
   116       Rd=`expr "$Rd" - "$Pd"`
   117    fi
   118
   119    if [ $Rm -lt 10 ]; then
   120        Rm=`expr "$Rm" + 0`
   121        Rm="0$Rm"
   122    fi
   123    if [ $Rd -lt 10 ]; then
   124        Rd=`expr "$Rd" + 0`
   125        Rd="0$Rd"
   126    fi
   127    echo "$Ry$Rm$Rd"
   128  }
   129
   130  function FindTapeChanger()
   131  {
   132    Res=`mtx -f $TapeChanger status 2>&1|grep 'Changer'`
   133
   134    if [ "A$Res" = "A" ];  then
   135       for i in 0 1 2 3 4 5 6 7 8 9 ; do
   136             Res=`mtx -f /dev/sg$i status 2>&1|grep 'Changer'`
   137             if [ "A$Res" != "A" ]; then
   138                   TapeChanger="/dev/sg$i"
   139                   return 0
   140             fi
   141       done
   142    else
   143        return 0
   144    fi
   145    SMS "BACKUP ERROR,Can not find tape Changer."
   146    return 1
   147  }
   148
   149  #
   150  #  LoadTape: LoadTape to Drive.
   151  #  if tape is not in drive, then loadit. if tape has already load, check if
   152  #  the tape is WE WANT.
   153  function CheckTapeNo()
   154  {
   155  # if [ "$1" != "1" ]; then
   156  #    Dr="0"
   157  # else
   158  #    Dr="1"
   159  # fi
   160
   161    Res=`mtx -f $TapeChanger status 2>&1|grep 'Loaded' |grep $TapeDrive:Full`
   162    Ret="$?"
   163    if [ "A$Res" = "A" ]; then
   164       LogMessage "CheckTapeNo[$Ret]: No tape loaded"
   165       LoadedTape="0"
   166    else
   167       LoadedTape=`echo $Res|gawk '{print $7}'`
   168       LogMessage "CheckTapeNo[$Ret]: Tape $LoadedTape is Load in drive."
   169    fi
   170    return $LoadedTape
   171  }
   172
   173  #  Check which TAPE is in slock ?
   174  #  CheckTapeIsFull SlockNo
   175  function CheckTapeIsFull()
   176  {
   177     Res=`mtx -f $TapeChanger status 2>&1 | grep 'Storage Element $1:Full'`
   178     if [ "A$Res" = "A" ]; then
   179       echo "N"
   180       return  0
   181     else
   182       echo "Y"
   183       return 1
   184     fi
   185  }
   186
   187  function UnLoadTape()
   188  {
   189   TapCmd="mtx -f $TapeChanger unload $LoadedTape $TapeDrive"
   190   Res=`$TapCmd`
   191   Ret="$?"
   192   LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   193
   194   if [ "$Ret" != "0" ]; then
   195       LogMessage "unload tape $LoadedTape ERROR[$Res]"
   196   else
   197       LoadedTape="0"
   198       TapeReady="N"
   199   fi
   200
   201
   202   return $Ret
   203  }
   204
   205  function LoadTape()
   206  {
   207
   208    TapeNo="$1"
   209    TapCmd="mtx -f $TapeChanger load $TapeNo $TapeDrive"
   210  #  echo "----------- $TapCmd ------"
   211     Res=`$TapCmd`
   212     Ret="$?"
   213    LogTapeCmd "$Ret USE $TapeNo $TapCmd"
   214  #  exit 0
   215    if [ "$Ret" != "0" ]; then
   216        LogMessage "Load tape $TapeNo ERROR[$Res]"
   217        LoadedTape="0"
   218        TapeReady="N"
   219    else
   220        LoadedTape="$TapeNo"
   221        TapeReady="Y"
   222    fi
   223
   224    return $Ret
   225  }
   226
   227  function RewindTape()
   228  {
   229    TapCmd="mt -f $TapeDevice rewind"
   230    Res=`$TapCmd`
   231    Ret="$?"
   232    LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   233    return $Ret
   234  }
   235
   236  function LoadNextTape()
   237  {
   238     RdLoadTape="`expr $LoadedTape + 1`"
   239     Ret="1"
   240   while [ "$Ret" = "1" ]; do
   241     if [ "$RdLoadTape" -gt "$EndTapeNo" ]; then
   242        LogMessage "ERROR,TAPE $RdLoadTape EXCEED $EndTapeNo"
   243        SMS  "ERROR,TAPE $RdLoadTape EXCEED $EndTapeNo"
   244        return 1
   245     fi
   246
   247    UnLoadTape
   248    if [ "$?" != "0" ]; then
   249        LogMessage "ERROR,Unload tape $LoadedTape Error"
   250        SMS "Error,Can not unload tape $LoadedTape "
   251        return 2
   252    fi
   253
   254    LoadTape $RdLoadTape
   255    if [ "$?" != "0" ]; then
   256        LogMessage "ERROR,load tape $RdLoadTape Error, Try next"
   257        RdLoadTape="`expr $RdLoadTape + 1`"
   258    else
   259        Ret="0"
   260    fi
   261  done
   262
   263    RewindTape
   264    if [ "$?" != "0" ]; then
   265       LogMessage "ERROR:Can not Rewind $Loadtape "
   266       SMS "ERROR:Can not Rewind $Loadtape "
   267       return 4
   268    fi
   269    #------ Init it ?
   270    return 0
   271  }
   272
   273  #
   274  # Usage: CheckTime D H W
   275  # if ToDay=D ThisHour=H ThisWk=W , return Y, [D=0,H=0,W=0,not compare, Y], Else return "N"
   276  function CheckTime()
   277  {
   278    cD="$1"
   279    cH="$2"
   280    cW="$3"
   281    if [ "$cD" = "88" ]; then
   282       cD="$DD"
   283    fi
   284    if [ "$cH" = "88" ]; then
   285       cH="$HH"
   286    fi
   287    if [ "$cW" = "88" ]; then
   288       cW="$WK"
   289    fi
   290
   291    if [ "$cD$cH$cW" = "$DD$HH$WK" ]; then
   292       echo "Y"
   293       return 0
   294    else
   295       echo "N"
   296       return 1
   297    fi
   298  }
   299
   300  function RunCmdSetTape()
   301  {
   302
   303     BaseTapeNo="$1"
   304     EndTapeNo="$2"
   305     RsetEWK="$3"
   306     RsetWK="$4"
   307     RsetH="$5"
   308     if [ "$RsetEWK" = "0" ]; then
   309          TapeReset="Y"
   310     else
   311
   312         if [ "`expr $WU % $RsetEWK`" = "0" ]; then
   313               if [ "$WK" = "$RsetWK" ]; then
   314                      if [ "$HH" = "$RsetH" ]; then
   315                           TapeReset="Y"
   316                      fi
   317               fi
   318         fi
   319    fi
   320    # LogMessage "BaseTapeNo=$BaseTapeNo EndTapeNo=$EndTapeNo RsEWK=$RsetEWK RsWK=$RsetWK RsH=$RsetH"
   321    return 0
   322  }
   323
   

论坛徽章:
0
2 [报告]
发表于 2012-04-16 15:29 |只看该作者
本帖最后由 mckingdee123 于 2012-04-16 15:33 编辑

   324  function RunCmdExpTape()
   325  {
   326
   327     EXPEWK="$1"
   328     EXPWK="$2"
   329     EXPHH="$3"
   330
   331     if [ "$RsetEWK" = "0" ]; then
   332          SMS "ubkfun pro error"
   333     else
   334         if [ "`expr $WU % $EXPEWK`" = "0" ]; then
   335               if [ "$WK" = "$EXPWK" ]; then
   336                    if [ "$HH" = "$EXPHH" ]; then
   337                        Res=`cat $TapeCmdFile |tail -n 1 |gawk '{print $3}'`
   338                        SMS "Please Take the tape $BaseTapeNo-$Res OUT to STORE,And ReFill the TAPES"
   339                        LogMessage "Please Take the tape $BaseTapeNo-$Res OUT to STORE,And ReFill the TAPES"
   340                    fi
   341               fi
   342         fi
   343    fi
   344    return 0
   345  }
   346
   347  function RunCmdLoadTape()
   348  {
   349    StartHH="$1"
   350    EndHH="$2"
   351
   352    RdLoadNo="$BaseTapeNo"
   353    if [ "$BaseTapeNo" = "0" ]; then
   354       LogMessage " Program ERROR BTN=0=$BaseTapeNo"
   355       return 1
   356    fi
   357
   358    #-------------  Check Tape RunTime
   359    if [ "$HH" -gt "$EndHH" ]; then
   360       return 1
   361    fi
   362
   363    if [ "$HH" -lt "$StartHH" ]; then
   364  #     if [ "$StartHH" -lt "$EndHH" ]; then
   365
   366          return 1
   367  #     fi
   368    fi
   369
   370    # --------------- LoadTape
   371
   372    Res=`FindTapeChanger`
   373    Ret="$?"
   374
   375    if [ "$Ret" != "0" ]; then
   376        LogMessage "Error: Can not Find TapeChanger"
   377        SMS "ERROR:No TapeChanger Found.Please CHECK!"
   378
   379        return 1
   380    fi
   381
   382    echo "TapeChanger=$TapeChanger"
   383    # ------------- Select WhichTape load
   384    if [ "$TapeReset" = "Y" ]; then
   385         RdLoadNo="$BaseTapeNo"
   386    else
   387        if [  -f $TapeCmdFile ]; then
   388                Res=`cat $TapeCmdFile |tail -n 1 |gawk '{print $3}'`
   389        else
   390                Res="0"
   391        fi
   392
   393        if [ "$Res" = "0" ]; then
   394              LogMessage "INF:Tape $LoadedTape Reset"
   395              SMS "PROGRAM ERROR:LoadedTape,Select tape "
   396              RdLoadNo="$BaseTapeNo"
   397              TapeReset="Y"
   398        else
   399              Res2=`expr $Res + 0`
   400              Ret2="$?"
   401              if [ "$Ret2" = "0" ]; then
   402                  if [ "$Res2" -gt "$BaseTapeNo" ]; then
   403                    RdLoadNo="$Res2"
   404                  fi
   405              else
   406                 LogMessage "File $TapeCmdFile has wrong format[BTN=$BaseTapeNo]"
   407              fi
   408        fi
   409    fi
   410
   411  # -------- Loading Tape
   412  # echo "--------- LoadedTape=$LoadedTape BTN=$BaseTapeNo,RDT=$RdLoadNo"
   413    CheckTapeNo
   414    if [ "$LoadedTape" = "0" ]; then
   415        if [ "$RdLoadNo" -lt "$BaseTapeNo" ]; then
   416            RdLoadNo="$BaseTapeNo"
   417        fi
   418        while [ "$LoadedTape" = "0" ]; do
   419           LoadTape "$RdLoadNo"
   420           CheckTapeNo
   421           if [ "$LoadedTape" = "0" ]; then
   422               LogMessage "Can not Load Tape $RdLoadNo,Try Next one"
   423               SMS "Can not Load Tape $RdLoadNo,Try Next one"
   424               RdLoadNo=`expr $RdLoadNo + 1`
   425               TapeReset="Y"
   426               if [ "$RdLoadNo" -gt "$EndTapeNo" ]; then
   427                     LogMessage "ERROR,Can not load tape $BaseTapeNo->$EndTapeNo,No tape left."
   428                     SMS  "ERROR,Can not load tape $BaseTapeNo->$EndTapeNo,No tape left."
   429                     return 2
   430               fi
   431           fi
   432        done
   433    fi
   434
   435    if [ "$LoadedTape" != "$RdLoadNo" ]; then
   436         LogMessage "Error:Can not Load Tape $RdLoadNo,may be Netbunker is runing...."
   437         SMS "ERROR:Can not Load Tape $RdLoadNo,Maybe Netbunker is Runing"
   438         return 1
   439    fi
   440
   

论坛徽章:
0
3 [报告]
发表于 2012-04-16 15:31 |只看该作者
441    # ------- Check if Reset Tape
   442    if [ "$TapeReset" = "Y" ]; then
   443
   444       mv $TapeCmdFile $TapeCmdFile.$YY$MM$DD
   445
   446       RewindTape
   447
   448       TapCmd="tar -c -f $TapeDevice $ME"
   449       Res=`$TapCmd`
   450       Ret="$?"
   451
   452       LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   453       LogMessage "INF:Tape $LoadedTape Reset"
   454
   455       if [ "$Ret" = "0" ]; then
   456          SMS "TAPE:Tape $LoadedTape RESET "
   457       else
   458          SMS "TAPE:Tape $LoadedTape Reset Error [$Ret]"
   459       fi
   460
   461       TapeReady="Y"
   462       return 0
   463    fi
   464
   465    # ---------------- OK , Tape is Loaded
   466    TapeReady="Y"
   467
   468    TapCmd="mt -f $TapeDevice eod"
   469    Res=`$TapCmd`
   470    Ret="$?"
   471    LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   472
   473    if [ "$Ret" != "0" ]; then
   474       LogMessage "$YY$MM$DD$HH ERROR:Tape $LoadedTape can not EOD"
   475       SMS "Error:Tape $LoadedTape Can not eod"
   476       return 1
   477    fi
   478
   479    return 0
   480  }
   481
   482  function RunCmdFreeTape()
   483  {
   484    UnLoadTape
   485
   486    if [ "$?" != "0" ]; then
   487       LogMessage "ERROR:Tape $LoadedTape can not unload"
   488       SMS "Error:Tape $LoadedTape Can not unload"
   489       return 1
   490    fi
   491
   492    LoadedTape="0"
   493    TapeReady="N"
   494
   495    return 0
   496  }
   497
   498  function RunCmdDD()
   499  {
   500  # PreScript,PostScript,file,isOnce,isRemove
   501   PreScript="$1"
   502   PostScript="$2"
   503   bkf="$3"
   504   IsOnce="$4"
   505   IsRemove="$5"
   506
   507   if [ "$IsOnce" = "Y" ]; then
   508      Str="$WU DD $PreScript $PostScript $bkf $IsOnce OK"
   509      Res="`cat $TapeFile|grep '$Str'`"
   510      if [ "A$Res" != "A" ]; then
   511         LogMessage "$YY$MM$DD$HH: INFOR: DD Has RUN[$Res]."
   512         return 0
   513      fi
   514   fi
   515
   516    if [ "$PreScript" != "N" ]; then
   517        PreRes=`$PreScript 2>&1`
   518        Ret="$?"
   519        if [ "$Ret" != "0" ]; then
   520            LogMessage "Error: DD $PreScript ERR[$Ret,$PreRes]"
   521            LogResult "$Ret  Error: DD $PreScript $PostScript $bkf $IsOnce, ERR[$Ret,$PreRes]"
   522            SMS  "ERRORD $PreScript [$Ret]"
   523            return 1
   524        fi
   525    fi
   526
   527   TapCmd="dd if=$bkf of=$TapeDevice"
   528   Res=`$TapCmd`
   529   Ret="$?"
   530   LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   531   if [ "$Ret" != "0" ]; then
   532      LoadNextTape
   533      Ret="$?"
   534      if [ "$Ret" = "0" ]; then
   535           Res=`$TapCmd`
   536           Ret="$?"
   537           LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   538      fi
   539   fi
   540
   541   if [ "$Ret" != "0" ]; then
   542      LogMessage "Error: DD $PreScript $PostScript $bkf ERR[$Ret,$Res]"
   543      LogResult "Error: DD $PreScript $PostScript $bkf $IsOnce, ERR[$Ret,$Res]"
   544      SMS  "ERRORD $PreScript $PostScript $bkf $IsOnce[$TapCmd]"
   545      return 1
   546   fi
   547
   548   if [ "$IsRemove" = "Y" ]; then
   549       rm -f $bkf
   550   fi
   551
   552   if [ "$PostScript" != "N" ]; then
   553       PostRes=`$PostScript 2>&1`
   554       Ret="$?"
   555       if [ "$Ret" != "0" ]; then
   556           LogMessage "Error: DD $PreScript $bkf $PostScript ERR[$Ret,$PostRes]"
   557           LogResult "$Ret Error: DD $PreScript $PostScript $bkf $IsOnce, ERR[$Ret,$PostRes]"
   558           SMS  "ERRORD $PreScript [$Ret]"
   559           return 1
   560       fi
   561   fi
   562
   563    LogMessage "Success, DD $PreScript $PostScript $bkf $IsOnce"
   564    LogResult  "0 Success, DD $PreScript $PostScript $bkf $IsOnce"
   565    LogTape    "$LoadedTape $WU DD $PreScript $PostScript $bkf $IsOnce OK ,Success"
   566    return 0
   567  }
   568
   569
   570  function RunCmdLDT()
   571  {
   572  # PreScript,PostScript,dir,isOnce,isRemove
   573   PreScript="$1"
   574   PostScript="$2"
   575   bkdir="$3"
   576   IsOnce="$4"
   577   IsRemove="$5"
   578
   579   IsUseTar="$6"
   580   if [ "$IsUseTar" = "Y" ]; then
   581       MyName="LSTAR"
   582   else
   583       MyName="LSDD"
   584   fi
   585
   586   if [ "$IsOnce" = "Y" ]; then
   587      Str="$WU $MyName $PreScript $PostScript $bkdir $IsOnce $IsRemove OK"
   588      Res="`cat $TapeFile|grep '$Str'`"
   589      if [ "A$Res" != "A" ]; then
   590         LogMessage "INFOR: $MyName Has RUN[$Res]."
   591         return 0
   592      fi
   593   fi
   594
   595    if [ "$PreScript" != "N" ]; then
   596        PreRes=`$PreScript 2>&1`
   597        Ret="$?"
   598        if [ "$Ret" != "0" ]; then
   599            LogMessage "Error: $MyName $PreScript ERR[$Ret,$PreRes]"
   600            LogResult "$Ret  Error: $MyName $PreScript $PostScript $bkdir $IsOnce $IsRemove, ERR[$Ret,$PreRes]"
   601            SMS  "ERRORMyName $PreScript [$Ret]"
   602            return 1
   603        fi
   604    fi
   605
   606   CurDir=`pwd`
   607   cd $bkdir
   608   for fn in `/bin/ls` ; do
   609      if [ "$IsUseTar" = "Y" ]; then
   610         TapCmd="tar -c -f $TapeDevice $fn"
   611      else
   612         TapCmd="dd if=$fn of=$TapeDevice"
   613      fi
   614      Res=`$TapCmd`
   615      Ret="$?"
   616      LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   617      if [ "$Ret" != "0" ]; then
   618           LoadNextTape
   619           Ret="$?"
   620           if [ "$Ret" = "0" ]; then
   621               Res=`$TapCmd`
   622               Ret="$?"
   623               LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   624           fi
   625      fi
   626
   627      if [ "$Ret" != "0" ]; then
   628           LogMessage "Error: $MyName $PreScript $PostScript $bkdir [$fn] ERR[$Ret,$Res]"
   629           LogResult "Error: $MyName $PreScript $PostScript $bkdir [$fn] $IsOnce $IsRemove, ERR[$Ret,$Res]"
   630           SMS  "ERRORMyName $PreScript $PostScript $bkf $IsOnce[$TapCmd]"
   631          return 1
   632      else
   633          LogResult "$Ret $YY$MM$DD$HHMyName $bkdir $fn SUCCESS"
   634          LogTape   "$LoadedTape   $MyName $bkdir $fn SUCCESS"
   635      fi
   636
   637      if [ "$IsRemove" = "Y" ]; then
   638       rm -f $fn
   639      fi
   640   done
   641
   642   cd $CurDir
   643
   644   if [ "$PostScript" != "N" ]; then
   645       PostRes=`$PostScript 2>&1`
   646       Ret="$?"
   647       if [ "$Ret" != "0" ]; then
   648           LogMessage "Error: $MyName $PreScript $bkdir $PostScript ERR[$Ret,$PostRes]"
   649           LogResult "$Ret Error: $MyName $PreScript $PostScript $bkdir $IsOnce, ERR[$Ret,$PostRes]"
   650           SMS  "ERRORMyName $PreScript [$Ret]"
   651           return 1
   652       fi
   653   fi
   654
   655    LogMessage "Success, $MyName $PreScript $PostScript $bkdir $IsOnce"
   656    LogResult  "0  Success, $MyName $PreScript $PostScript $bkdir $IsOnce"
   657    LogTape    "$LoadedTape  $WU $MyName $PreScript $PostScript $bkdir $IsOnce $IsRemove OK ,Success"
   658    return 0
   659  }
   660
   661  function RunCmdTAR()
   662  {
   663  # PreScript,PostScript,dir,isOnce,isRemove
   664   PreScript="$1"
   665   PostScript="$2"
   666   bkdir="$3"
   667   IsOnce="$4"
   668   NewnerDay="$5"
   669
   670   if [ "$NewnerDay" = "N" ]; then
   671       NewnerDay="0"
   672   fi
   673
   674   NNDay=`expr $NewnerDay + 0`
   675   if [ "$?" = "0" ]; then
   676        NNDay=`PreDate $YY $MM $DD $NNDay`
   677   else
   678        NNDay="0"
   679   fi
   680
   681   if [ "$IsOnce" = "Y" ]; then
   682      Str="$WU TAR $PreScript $PostScript $bkdir $IsOnce $NewnerDay OK"
   683      Res="`cat $TapeFile|grep '$Str'`"
   684      if [ "A$Res" != "A" ]; then
   685         LogMessage "INFOR: TAR Has RUN[$Res]."
   686         return 0
   687      fi
   688   fi
   689
   690    if [ "$PreScript" != "N" ]; then
   691        PreRes=`$PreScript 2>&1`
   692        Ret="$?"
   693        if [ "$Ret" != "0" ]; then
   694            LogMessage "Error: TAR $PreScript ERR[$Ret,$PreRes]"
   695            LogResult "$Ret Error: TAR $PreScript $PostScript $bkdir $IsOnce $NewnerDay, ERR[$Ret,$PreRes]"
   696            SMS  "ERROR:TAR $PreScript [$Ret]"
   697            return 1
   698        fi
   699    fi
   700
   701    NextTapeNo=`expr $LoadedTape + 1`
   702    if [ "$NextTapeNo" -gt "$EndTapeNo" ]; then
   703       if [ "$NNDay" = "0" ]; then
   704           TapCmd="tar -c -f $TapeDevice $bkdir "
   705       else
   706           #   tar --newer maybe check : create  modify & access time, I guest.
   707          TapCmd="tar -c --newer-mtime $NNDay -f $TapeDevice $bkdir"
   708
   709       fi
   710       uCTMF=""
   711    else
   712       #-------- Arg for ChangeTape
   713       uChangeTapeMessageFile="/dev/shm/uctmf`date +%Y%m%d%H%M%S`"
   714       echo "TR $TapeDrive" >>   $uChangeTapeMessageFile
   715       echo "TD $TapeDevice" >>  $uChangeTapeMessageFile
   716       echo "TC $TapeChanger" >> $uChangeTapeMessageFile
   717       echo "LT $LoadedTape" >>  $uChangeTapeMessageFile
   718       echo "NT $NextTapeNo" >>  $uChangeTapeMessageFile
   719       echo "TF $TapeCmdFile" >> $uChangeTapeMessageFile
   720       echo "ET $EndTapeNo" >>   $uChangeTapeMessageFile
   721       export uCTMF="$uChangeTapeMessageFile"
   722
   723       if [ "$NNDay" = "0" ]; then
   724          TapCmd="tar -c -M -F $ChangeTape -f $TapeDevice $bkdir "
   725       else
   726          TapCmd="tar -c --newer-mtime $NNDay -M -F $ChangeTape -f $TapeDevice $bkdir"
   727       fi
   728    fi
   729
   730    Res=`$TapCmd`
   731    Ret="$?"
   732
   733    if [ -f $uCTMF ]; then
   734       rm -f $uCTMF
   735    fi
   736
   737    if [ "$NextTapeNo" -le "$EndTapeNo" ]; then
   738         #--- Check is if change tape ?
   739         Res2=`cat $TapeCmdFile |tail -n 1 |gawk '{print $3}'`
   740         if [ "$Res2" != "" ]; then
   741             Res3=`expr $Res2 + 0`
   742             Ret3="$?"
   743             if [ "$Ret3" = "0" ]; then
   744                 LoadedTape="$Res3"
   745             fi
   746        fi
   747   fi
   748
   749   LogTapeCmd "$Ret USE $LoadedTape $TapCmd"
   750
   751   if [ "$Ret" != "0" ]; then
   752          LogMessage "Error: TAR $PreScript $PostScript $bkdir  ERR[$Ret,$Res]"
   753          LogResult "$Ret Error: TAR $PreScript $PostScript $bkdir $IsOnce $NewnerDay, ERR[$Ret,$Res]"
   754          SMS  "ERRORTapCmd [$Ret]"
   755          return 1
   756    else
   757          LogResult "$Ret TAR $bkdir  SUCCESS"
   758          LogTape   "$LoadedTape  TAR $bkdir  SUCCESS"
   759    fi
   760
   761  #    if [ "$IsRemove" = "Y" ]; then
   762          #  rm -rf $bkdir
   763
   764  #    fi
   765
   766   if [ "$PostScript" != "N" ]; then
   767       PostRes=`$PostScript 2>&1`
   768       Ret="$?"
   769       if [ "$Ret" != "0" ]; then
   770           LogMessage "Error: TAR $PreScript $bkdir $PostScript ERR[$Ret,$PostRes]"
   771           LogResult "$Ret Error: TAR $PreScript $PostScript $bkdir $IsOnce, ERR[$Ret,$PostRes]"
   772           SMS  "ERROR:TAR $PreScript [$Ret]"
   773           return 1
   774       fi
   775   fi
   776
   777    LogMessage "Success, TAR $PreScript $PostScript $bkdir $IsOnce"
   778    LogResult  "0 Success, TAR $PreScript $PostScript $bkdir $IsOnce"
   779    LogTape    "$LoadedTape $WU TAR $PreScript $PostScript $bkdir $IsOnce $NewnerDay OK ,Success"
   780
   781    return 0
   782  }
   783
   784  function RunCmd()
   785  {
   786
   787    # -------- Config File  -----------
   788    # D H W cmd  - - - --
   789   # echo "FR:s1=<$1>"
   790    if [ "$1" = "#" ]; then
   791       return 1
   792    fi
   793    if [ "$1" = " " ]; then
   794        return 1
   795    fi
   796    if [ "$1" = "" ]; then
   797        return 1
   798    fi
   799
   800    RunDay="$1"
   801    RunHour="$2"
   802    RunWeek="$3"
   803    CmdType="$4"
   804
   805  #   echo "RUN1 $2 $3 $4 $5 $6 $7 $8 $9"
   806     Res=`CheckTime $RunDay $RunHour $RunWeek`
   807  #   echo "RRes $1 $2 $3 $4 $5 $6 $7 $8 $9 "
   808
   809
   810    if [ "$Res" = "Y" ]; then
   811        case "$CmdType" in
   812              "SETTAPE"
   813
   814                  RunCmdSetTape "$5" "$6" "$7" "$8" "$9"
   815                  ;;
   816              "LOADTAPE"
   817
   818                  RunCmdLoadTape "$5" "$6"  "$7"
   819
   820                  ;;
   821              "FREETAPE"
   822
   823                  if [ "$TapeReady" = "Y" ]; then
   824                           RunCmdFreeTape
   825                  fi
   826                  ;;
   827              "EXPTAPE"
   828                  RunCmdExpTape "$5" "$6" "$7"
   829                 ;;
   830              "DD"
   831                  if [ "$TapeReady" = "N" ]; then
   832                      LogMessage "ERROR, TAPE NOT READY. $CmdType $5 $6 $7 $8 $9 FAIL"
   833                      SMS "ERR,Tape Not Ready,$CmdType $5 $6 $7 $8 $9"
   834                      return 1
   835                  fi
   836                  RunCmdDD "$5" "$6" "$7" "$8" "$9"
   837                  ;;
   838              "TAR"
   839              #    echo "RUN TARTapeReady A5 $6 $7 $8 $9"
   840
   841                  if [ "$TapeReady" = "N" ]; then
   842                      LogMessage "ERROR, TAPE NOT READY. $CmdType $5 $6 $7 $8 $9 FAIL"
   843                      SMS "ERR,Tape Not Ready,$CmdType $5 $6 $7 $8 $9"
   844                      return 1
   845                  fi
   846
   847                  RunCmdTAR "$5" "$6" "$7" "$8" "$9"
   848                  ;;
   849              "LSDD"
   850                  if [ "$TapeReady" = "N" ]; then
   851                      LogMessage "ERROR, TAPE NOT READY. $CmdType $5 $6 $7 $8 $9 FAIL"
   852                      SMS "$ERR,Tape Not Ready,$CmdType $5 $6 $7 $8 $9"
   853                      return 1
   854                  fi
   855                  RunCmdLDT "$5" "$6" "$7" "$8" "$9" "N"
   856                  ;;
   857              "LSTAR"
   858                  if [ "$TapeReady" = "N" ]; then
   859                      LogMessage "ERROR, TAPE NOT READY. $CmdType $5 $6 $7 $8 $9 FAIL"
   860                      SMS "$ERR,Tape Not Ready,$CmdType $5 $6 $7 $8 $9"
   861                      return 1
   862                  fi
   863                  RunCmdLDT "$5" "$6" "$7" "$8" "$9" "Y"
   864                  ;;
   865               *)
   866               LogMessage "Command $CmdType <$5 $6 $7 $8 $9> ERROR"
   867               SMS "CMD[$CmdType] ERROR,Please Check"
   868        esac
   869    fi
   870
   871    return 0
   872  }
   873
   874  function CheckRun()
   875  {
   876
   877     if [ -f $RunTag ]; then
   878        LogMessage "ro is RUNING:`cat $RunTag`"
   879        return 1
   880     fi
   881
   882     if [ -c $TapeDevice ]; then
   883        echo "$YY$MM$DD$HH ---- Start run ---" >> $RunTag
   884     else
   885        LogMessage "--- Tape TapeDevice not ready, Please CHECK it."
   886        return 2
   887     fi
   888     return 0
   889  }
   890
   891  function EndRun()
   892  {
   893    rm -f $RunTag
   894  }
   895
   896
   897  # ===============================================================
   898  # ----------------- MAIN PROGRAM --------------------------------
   899
   900  SPATH="$PATH"
   901  PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
   902
   903  CheckRun
   904  if [ "$?" = "0" ]; then
   905    #     cat $uconf | while read str ; do echo "str=[$str]"; done
   906  # ------------- IMPORTANT NOTE -------------------------------
   907  #  This Line will not change the VAR , cat .. | ,the pipe will not change the VAR.
   908  #    1.cat $uconf | while read str ; do cmdstr="RunCmd $str"; tmpRes=`$cmdstr` ;echo "$tmpRes";  done
   909  #    2.cat $uconf | while read str ; do RunCmd $str ;done
   910  #  Must Be this line
   911  #
   912     while read str ; do RunCmd $str ; done < $uconf
   913
   914     EndRun
   915  fi
   916
   917  PATH=$SPATH
   918
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP