Shellscript zum USB Handling verbessern?

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
RamMasterG
Beiträge: 7
Registriert: 03.03.2014 19:15:29

Shellscript zum USB Handling verbessern?

Beitrag von RamMasterG » 03.03.2014 21:19:59

Hallo liebe Forengemeinde,
ich habe folgendes Problem:
ich möchte ein kleines Programm haben, dass:
1. nur startet, wenn ein USB Stick beim booten eingesteckt ist
2. einen ganzen Ordner/einzelne Dateien hierdrin löschen kann
3. am besten einen Testdruck dieser Dateien vornimmt (sind alles Druckerdateien im raw-format, der Dateiname ist nur eine Nummer)

Hierzu habe ich ein Shellscript gebastelt, allerdings läuft das ganze noch nicht ganz rund. Der Stick wird im Moment unter /media/DEVICENAME gemountet, aber ich schaff es nicht darauf zuzugreifen.
Eventuell habt ihr hier ein paar Verbesserungsvorschläge, auch im Punkt 3...

Code: Alles auswählen

#!/bin/bash
if [ -e /dev/sda ]; 
then 
     #alle usb sticks/hdds werden mit sda bzw sdb gekennzeichnet, die zahl dahinter bezieht sich auf die partition
echo "ADMIN MODUS" 
     #schreibt, dass man im admin modus ist
mkdir mountfolder 
     #der usb stick muss erst eingehängt werden, dies geschieht über einen mount folder
mount /dev/sda1 ./mountfolder 
     #hier wird der stick eingehängt
echo "Kopieren oder loeschen? (+ oder -)"
read  eingabe 
      #ob loeschen oder kopieren
if [ "$eingabe" == "+" ];
   then 
     echo "Welche Datei soll kopiert werden? (0,*,Zahl)"
     read variable #variable wird eingelesen
        if [ "$variable" == "0" ]; #falls 0 eingegeben wurde
            then
            echo "restart"
            exit 
            #programm wird beendet
        fi

        if [ "$variable" == "*" ];#falls * eingegeben wurde
           then
              cp -r ./mountfolder/print /tmp/ 
                  #kompletter ordner wird kopiert (bestehendes wird überschrieben)
              echo "alles kopieren"
              exit
         fi

         if [ "`find /tmp/print -name $variable `" == "" ] 
             #falls zahl eingegeben wurde, wird geprüft ob es diese datei schon auf dem raspi gibt, wenn ja, true
             then
                echo "Die Datei ist schon vorhanden oder existiert auf de USB Stick nicht"
         else if [ "`find ./mountfolder/print -name $variable `" != "" ]#wenn nicht, wird geprüft, ob sie überhaupt auf dem usb stick ist
             then
                path=`ls mountfolder/print/*/$variable` #hier wird geschachtelt, um später den ausdruck hinzubiegen
                dir=`dirname $path`
                druckername=`basename $dir`
                cp -r ./mountfolder/print/$druckername/$variable /tmp/print/$druckername/$variable #genau diese datei wird kopiert

         fi
     fi
  fi
if [ "$eingabe" == "-" ];
then 
echo "Welche Datei soll geloescht werden? (Zahl oder Ordner)"
read delete
if [ "`find /tmp/print -name $delete `" == "" && -d $dir ]
then 
rm -r /tmp/print/$delete
fi
if [ "`find /tmp/print -name $delete `" == "" ]
then
rm /tmp/print/$delete
fi
fi
fi
Zuletzt geändert von RamMasterG am 04.03.2014 08:48:35, insgesamt 1-mal geändert.

ren22

Re: Shellscript zum USB Handling verbessern?

Beitrag von ren22 » 03.03.2014 21:45:41

/media/device benötigt meist sudo/oder root rechte

RamMasterG
Beiträge: 7
Registriert: 03.03.2014 19:15:29

Re: Shellscript zum USB Handling verbessern?

Beitrag von RamMasterG » 03.03.2014 22:22:40

das ist klar, aber wie bekomme ich den devicenamen raus, mit basename ging es bei mir nicht :?

Benutzeravatar
Phineas
Beiträge: 354
Registriert: 20.06.2012 20:26:19

Re: Shellscript zum USB Handling verbessern?

Beitrag von Phineas » 04.03.2014 04:33:17

Ich will Dir nicht zu Nahe treten, aber Dein Code ist nun wirklich grausam unlesbarer Matsch. Das wirkt auf Programmierkundige, wie diese berüchtigten Postings ohne Großbuchstaben, Satzzeichen und Absätze. Da wird sich kaum jemand drauf einlassen wollen.

Du solltest zumindest versuchen, den Code sinnig einzurücken, Absätze einzufügen und die Kommentare in eigene Zeilen zu schreiben. So kommst auch Du besser mit dem Code zurecht.

RamMasterG
Beiträge: 7
Registriert: 03.03.2014 19:15:29

Re: Shellscript zum USB Handling verbessern?

Beitrag von RamMasterG » 04.03.2014 08:50:22

RamMasterG hat geschrieben:Hallo liebe Forengemeinde,
ich habe folgendes Problem:
ich möchte ein kleines Programm haben, dass:
1. nur startet, wenn ein USB Stick beim booten eingesteckt ist
2. einen ganzen Ordner/einzelne Dateien hierdrin löschen kann
3. am besten einen Testdruck dieser Dateien vornimmt (sind alles Druckerdateien im raw-format, der Dateiname ist nur eine Nummer)

Hierzu habe ich ein Shellscript gebastelt, allerdings läuft das ganze noch nicht ganz rund. Der Stick wird im Moment unter /media/DEVICENAME gemountet, aber ich schaff es nicht darauf zuzugreifen.
Eventuell habt ihr hier ein paar Verbesserungsvorschläge, auch im Punkt 3...

Code: Alles auswählen

#!/bin/bash
if [ -e /dev/sda ]; 
then 
     #alle usb sticks/hdds werden mit sda bzw sdb gekennzeichnet, die zahl dahinter bezieht sich auf die partition
echo "ADMIN MODUS" 
     #schreibt, dass man im admin modus ist
mkdir mountfolder 
     #der usb stick muss erst eingehängt werden, dies geschieht über einen mount folder
mount /dev/sda1 ./mountfolder 
     #hier wird der stick eingehängt
echo "Kopieren oder loeschen? (+ oder -)"
read  eingabe 
      #ob loeschen oder kopieren
if [ "$eingabe" == "+" ];
   then 
     echo "Welche Datei soll kopiert werden? (0,*,Zahl)"
     read variable #variable wird eingelesen
        if [ "$variable" == "0" ]; #falls 0 eingegeben wurde
            then
            echo "restart"
            exit 
            #programm wird beendet
        fi

        if [ "$variable" == "*" ];#falls * eingegeben wurde
           then
              cp -r ./mountfolder/print /tmp/ 
                  #kompletter ordner wird kopiert (bestehendes wird überschrieben)
              echo "alles kopieren"
              exit
         fi

         if [ "`find /tmp/print -name $variable `" == "" ] 
             #falls zahl eingegeben wurde, wird geprüft ob es diese datei schon auf dem raspi gibt, wenn ja, true
             then
                echo "Die Datei ist schon vorhanden oder existiert auf de USB Stick nicht"
         else if [ "`find ./mountfolder/print -name $variable `" != "" ]#wenn nicht, wird geprüft, ob sie überhaupt auf dem usb stick ist
             then
                path=`ls mountfolder/print/*/$variable` #hier wird geschachtelt, um später den ausdruck hinzubiegen
                dir=`dirname $path`
                druckername=`basename $dir`
                cp -r ./mountfolder/print/$druckername/$variable /tmp/print/$druckername/$variable #genau diese datei wird kopiert

         fi
fi
fi
if [ "$eingabe" == "-" ];
    then 
    echo "Welche Datei soll geloescht werden? (Zahl oder Ordner)"
    read delete
      if [ "`find /tmp/print -name $delete `" == "" && -d $dir ]
         then 
          rm -r /tmp/print/$delete
      fi
      if [ "`find /tmp/print -name $delete `" == "" ]
         then
         rm /tmp/print/$delete
      fi
fi
fi

gbotti
Beiträge: 846
Registriert: 16.07.2010 14:24:43
Wohnort: München

Re: Shellscript zum USB Handling verbessern?

Beitrag von gbotti » 04.03.2014 15:53:44

Wäre es nicht sinnvoller eine udev-Rule dafür zu schreiben und somit automatisch festlegen zu lassen, wie der Name des Gerätes sein soll?
Georg
RTFM, LMGTFY, Orakel... Ach... Warum muss man suchen...
Schrödingers Backup --- "Der Zustand eines Backups ist unbekannt, solange man es nicht wiederherstellt" --- Quelle: Nixcraft

Antworten