home *** CD-ROM | disk | FTP | other *** search
/ Chip 1994 February / CHIP0294.ISO / digital / test / linux / bootdisk / rootdisk.18 / sbin / tapetool < prev    next >
Encoding:
Text File  |  1994-06-09  |  4.7 KB  |  236 lines

  1. #!/bin/sh
  2. REVON=""
  3. REVOFF=""
  4. CLEAR="c"
  5. BEEPTONE=''
  6. INSMOD=/sbin/insmod
  7. RMMOD=/sbin/rmmod
  8. LSMOD=/sbin/lsmod
  9. FTAPEMODUL=/boot/ftape/ftape.o
  10. TAPE=/dev/ftape
  11.  
  12. panic()
  13. {
  14.     echo
  15.     echo "Unterbrechen ist keine gute Idee !"
  16.     echo "Das kann einen inkonsistenten Zustand bewirken !"
  17.     echo "Spule Tape zurueck und deinstalliere modul ftape.o ..."
  18.     echo "Bitte warten ..."
  19.     echo 
  20.     mt -f $TAPE rewind
  21.     $RMMOD ftape > /dev/null 2>&1
  22.     echo "ok !"
  23.     echo
  24.     exit
  25. }
  26.  
  27. banner()
  28. {
  29.     echo
  30.     echo "==================================================="
  31.     echo -n $REVON
  32.     echo -n "         QIC-80  Floppy-Streamer Utility           "
  33.     echo $REVOFF
  34.     echo "==================================================="
  35.     echo
  36. }
  37.  
  38. # Binaries und Treiber suchen und evtl. auspacken
  39. unpackftape()
  40. {
  41.     for i in $FTAPE $INSMOD $RMMOD $LSMOD ; do
  42.         if [ ! -f $i ]; then
  43.             if [ -f $i.gz ]; then
  44.                 echo "Entpacke $i.gz ..."
  45.                 gzip -d $i.gz
  46.             else
  47.                 echo "Panic! Weder $i noch $i.gz gefunden ! "
  48.                 exit
  49.             fi
  50.         fi
  51.     done
  52. }
  53.  
  54. initftape()
  55. {
  56.     $RMMOD ftape 2> /dev/null 1>/dev/null
  57.     echo
  58.     echo -n $REVON
  59.     echo "Legen Sie ein Band ein."
  60.     echo $REVOFF
  61.     echo "Warten Sie, bis der Streamer aufgeh÷rt hat zu spulen"
  62.     echo
  63.     echo -n "Drⁿcken Sie dann die Eingabetaste"
  64.     read ans
  65.     echo
  66.     echo "Installiere Floppy-Streamer Treibermodul ftape.o ..."
  67.     $INSMOD $FTAPEMODUL > /dev/null 2>&1
  68.     echo "Spule Streamer zurⁿck ..."
  69.     mt -f /dev/ftape rewind
  70.     echo "Der Streamer sollte nun initialisiert sein ... "
  71. }
  72.  
  73. getfilelist()
  74. {
  75.     FILENAME=
  76.     FILELIST=
  77.     while [ 1 ]; do
  78.         echo
  79.         echo "Eingabe der gewⁿnschten Dateien:"
  80.         echo "--------------------------------"
  81.         echo
  82.         echo "Geben Sie pro Zeile einen Dateinamen oder ein Verzeichnis (Endung  \"/\") an."
  83.         echo "Beenden Sie Ihre Eingabe mit einer leeren Zeile."
  84.         if [ "$action" = "2" ]; then
  85.             echo "es sind leider noch keine Joker erlaubt ;-)"
  86.         elif [ "$action" = "3" ]; then
  87.             echo "Wenn Sie keine Dateinamen/Verzeichnisse angeben, wird der gesamte Bandinhalt"
  88.             echo "restauriert."
  89.             echo "Wenn Sie \"#\" angeben, werden Sie nach dem Dateinamen einer Extractliste"
  90.             echo "gefragt."
  91.         fi
  92.         read FILENAME
  93.         if [ "$FILENAME" = "" ]; then
  94.             break
  95.         elif [ "$FILENAME" = "#" ]; then
  96.             FILENAME=
  97.             while [ 1 ]; do
  98.                 echo 
  99.                 echo "Bitte geben Sie den Namen der Datei an, die die Extractliste enthΣlt oder"
  100.                 echo "nur die Eingabetaste, falls Sie doch keine Extractliste verwenden wollen."
  101.                 echo -n "EXTRACTLIST: "
  102.                 read ans
  103.                 if [ "$ans" = "" ]; then
  104.                     echo
  105.                     echo "keine Extractliste gewΣhlt !"
  106.                     FILELIST=
  107.                     break
  108.                 elif [ ! -f $ans ]; then
  109.                     echo
  110.                     echo "Extractliste nicht gefunden !"
  111.                     continue
  112.                 else
  113.                     export EXTRACTLIST=$ans
  114.                     FILELIST=`cat $EXTRACTLIST`
  115.                     break
  116.                 fi
  117.             done
  118.             FILELIST="$FILELIST $FILENAME"
  119.         fi
  120.     done
  121.     echo "Selektierte Dateien:"
  122.     if [ "$FILELIST" = "" ]; then
  123.         echo "Alle Dateien"
  124.     else
  125.         echo $FILELIST
  126.     fi
  127. }
  128.     
  129.  
  130. #
  131. # Main
  132. #
  133.  
  134. # trap panic 1 2 5 9 15
  135.  
  136. echo $CLEAR
  137. unpackftape
  138. initftape
  139.  
  140. #
  141. # parse options
  142. #
  143. while [ 1 ]; do
  144.     if [ $# = 0 ]; then
  145.         break
  146.     elif [ $# -gt 0 -a "$1" = "-expert" ]; then
  147.         EXPERT=true
  148.         shift 1 
  149.         continue;
  150.     elif [ $# -gt 1 -a "$1" = "-tape" ]; then
  151.         TAPE=$2
  152.         shift 2
  153.         continue;
  154.     elif [ $# -gt 0 -a "$1" = "-init" ]; then
  155.         # alles noetige fuer init getan
  156.         return
  157.     elif [ $# -gt 0 -a "$1" = "-list" ]; then
  158.         tar tvf $TAPE
  159.         return
  160.     fi
  161. done
  162.  
  163. if [ "$TAPE" = "/dev/ftape" -a "$EXPERT" = "true" ]; then
  164.     mt -f $TAPE fsr 7
  165. else
  166.     mt -f $TAPE fsr 0
  167. fi    
  168.  
  169. while [ 1 ]; do
  170.     banner
  171.     echo " 1 - Inhalt vom Band anzeigen"
  172.     echo " 2 - Daten auf Band sichern"
  173.     echo " 3 - Daten vom Band restaurieren"
  174.     echo " 4 - Banddaten vergleichen"
  175.     echo " 5 - Band zurⁿckspulen"
  176.     echo " 6 - Band l÷schen"
  177.     if [ "$TAPE" = "/dev/ftape" ]; then
  178.     echo " 7 - Streamer initialisieren"
  179.     echo " 8 - Debugging Meldungen ein-/ausschalten"
  180.     fi    
  181.     echo
  182.     echo " 0 - Streamer Utility verlassen"
  183.     echo
  184.     if [ "$TAPE" = "/dev/ftape" ]; then
  185.         echo -n "WΣhlen Sie (1/2/3/4/5/6/7/8/0) : "
  186.     else
  187.         echo -n "WΣhlen Sie (1/2/3/4/5/6/7/0) : "
  188.     fi    
  189.     read action
  190.     case $action in
  191.     0)
  192.         exit 0;;
  193.     1)
  194.         echo $CLEAR
  195.         banner
  196.         echo "Inhalt vom Band :"
  197.         echo "-----------------"
  198.         tar tvf $TAPE;;
  199.     2)
  200.         getfilelist
  201.         tar cvf $TAPE `echo $FILELIST`;;
  202.     3)
  203.         getfilelist
  204.         tar xvf $TAPE `echo $FILELIST`;;
  205.     4)
  206.         tar dvf $TAPE;;
  207.     5)
  208.         mt -f $TAPE rewind;;
  209.     6)
  210.         echo -n "Sind Sie sicher, da▀ Sie das Band l÷schen wollen ? (j/n) : "
  211.         read ans
  212.         if [ "$ans" = "j" ]; then
  213.             mt -f $TAPE erase
  214.         fi;;
  215.     7)
  216.         initftape;;
  217.     8)
  218.         while [ 1 ]; do
  219.             echo
  220.             echo "Geben Sie den Debuglevel an (0=aus, 7=max)"
  221.             echo -n "Debuglevel : "
  222.             read level
  223.             if [ $level -gt 7 -o 0 -gt $level ]; then
  224.                 echo "ungⁿltiger Debuglevel !"
  225.                 continue
  226.             else
  227.                 mt -f $TAPE fsr $level
  228.                 break
  229.             fi
  230.         done;;    
  231.     *)
  232.         echo "ungⁿltige Angabe !";;
  233.     esac
  234. done
  235.  
  236.