- 论坛徽章:
- 0
|
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 "ERROR D $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 "ERROR D $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 "ERROR D $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 "ERROR MyName $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 "ERROR MyName $PreScript $PostScript $bkf $IsOnce[$TapCmd]"
631 return 1
632 else
633 LogResult "$Ret $YY$MM$DD$HH MyName $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 "ERROR MyName $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 "ERROR TapCmd [$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 "RUN 1 $2 $3 $4 $5 $6 $7 $8 $9"
806 Res=`CheckTime $RunDay $RunHour $RunWeek`
807 # echo "R Res $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 TAR TapeReady A 5 $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
|
|