Seite 3 von 3 ErsteErste 123
Ergebnis 21 bis 26 von 26
  1. #21
    Anwender
    Registriert seit
    21.02.2018
    Beiträge
    62

    Standard

    Hey mein Lieber,

    jetzt benötige doch nochmal Hilfe. Ich habe hier zwei unterschiedliche Skripte die immer den oben skizzierten Muster folgen. Das eigentliche Skript konnte ich bereits umwandeln:

    Skript 1 (das erstellte von uns "dir", welches ja jetzt zu 100% funktioniert):

    Code:
    #!/bin/bash
    touch "/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/USB_KRABBI.flag"
    
    echo '3-2' | tee /sys/bus/usb/drivers/usb/bind
    sleep 30
    
    AUSWAHLDATUM="2018-12-30"
    LOGPFADFINAL="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/Log Final.txt"
    LOGPFADTEMP="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/Temp.txt"
    LOGFEHLERPFAD="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/Fehler.txt"
    timestamp() {
      date +"%d.%m.%Y - %T"
    }
    before=$(date)
    deleteflag() {
        rm "/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Krabbi/USB_KRABBI.flag"
        exit $1
    }
    # Ziel dev Path auslesen
    zielmount=$(mount | grep -E "/volumeUSB2[1-2]/usbshare" | sed 's/ ..*//;s/[1-9]//')
    if [ -n "$zielmount" ]; then
        # Ziel setzen
        if [ -d "/volumeUSB21/usbshare" ]; then 
            usb="/volumeUSB21/usbshare"
        elif [ -d "/volumeUSB22/usbshare" ]; then 
            usb="/volumeUSB22/usbshare"
        else
            echo "Ziel nicht gefunden!"
            deleteflag 1
        fi
    else    
        echo "Zielmount konnte nicht ausgelesen werden!"
        deleteflag 2
    fi
    
    
    # Doppelte Absicherung / Abfrage ob usb festgelegt
    [ -z "$usb" ] && echo "Ziel konnte nicht festgelegt werden"
    
    
    # Schleife festlegen
    for i in Konzerte Filme Kinderfilme Serien; do
        quelle="/volume1/DiskStation/- $i"
        ziel="$usb/- $i"        
        
        # Wenn Quelle nicht vorhanden, nächste Quelle
        [ ! -d "$quelle" ] && continue
        
        cd "$quelle" && find -not \( -path "*@eaDir*" -prune \) -type f \( -name "*.mkv" -or -name "*.avi" -or -name "*.mp4" \) -newermt "$AUSWAHLDATUM" -exec cp -uv --parents "{}" "$ziel" 2>> "$LOGFEHLERPFAD" 1>> "$LOGPFADTEMP" \; | awk 'BEGIN{c=0; do{printf "#"; c++}while(c<120); printf "\n \n"}' >> $LOGPFADTEMP
    done
    awk 'BEGIN{c=0; do{printf "-"; c++}while(c<27); printf "\n"}' >> $LOGPFADTEMP
    echo -e "Diese Daten wurden kopiert:" >> $LOGPFADTEMP
    gesamtspeicherplatzderfestplatte() {
      df -h --output=size "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
    }
    belegterspeicherplatz() {
      df -h --output=used "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
    }
    freierspeicherplatz() {
      df -h --output=avail "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
    }
    belegterspeicherplatzinprozent() {
      df -h --output=pcent "$usb" | tail --lines +2
    }
    after=$(date)
    timeDiff=$(date -u -d @$(($(date -d "$after" '+%s') - $(date -d "$before" '+%s'))) '+%M:%S')
    echo -e """\n""Freier Speicherplatz:"" $(freierspeicherplatz) \t\t "Festplatten-Größe:" $(gesamtspeicherplatzderfestplatte)" >> $LOGPFADTEMP
    echo -e "\nBelegter-Speicherplatz:" $(belegterspeicherplatz)" \t "Belegter-Speicherplatz:" $(belegterspeicherplatzinprozent)" >> $LOGPFADTEMP
    echo -e "\nScript-Laufzeit:" $timeDiff "Minuten/Sekunden" >> $LOGPFADTEMP
    echo -e "\nStartzeitpunkt: $(timestamp)\n" >> $LOGPFADTEMP
    tac "$LOGPFADTEMP" | sed 's/^.*-> /-> /' > "$LOGPFADFINAL"
    sleep 30
    
    
    # Platten trennen
    umount "$usb" && echo "umount $usb erfolgreich" || echo "umount $usb Fehler" 
    hdparm -Y "$zielmount" && echo "hdparm -Y $zielmount erfolgreich" || echo "hdparm -Y $zielmount Fehler"
    echo 1 > /sys/block/$zielmount/device/delete && echo "echo 1 > /sys/block/$zielmount/device/delete erfolgreich" || echo "echo 1 > /sys/block/$zielmount/device/delete Fehler"
    rmdir "$usb" && echo "rmdir $usb erfolgreich" || echo "rmdir $usb Fehler"
    
    sleep 30
    echo '3-2' | tee /sys/bus/usb/drivers/usb/unbind
    
    # flag löschen und exit
    deleteflag 0
    Skript 2 (hab ich auf die andere Platte angepasst und funktioniert auch zu 100% :-)):
    - Einziger Unterschied ist USB31/32 und das "AUSWAHLDATUM"
    - Achso Skript1/2 sind fertig, die brauchen nicht per schleife zusammengefasst werden, da es für mich so viel sauberer ist wegen dem unterschiedlichen Datum.

    Code:
    #!/bin/bash
    touch "/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/USB_Beger.flag"
    
    echo '3-1' | tee /sys/bus/usb/drivers/usb/bind
    sleep 30
    
    AUSWAHLDATUM="2018-12-23"
    LOGPFADFINAL="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/Log Final.txt"
    LOGPFADTEMP="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/Temp.txt"
    LOGFEHLERPFAD="/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/Fehler.txt"
    timestamp() {
      date +"%d.%m.%Y - %T"
    }
    before=$(date)
    deleteflag() {
        rm "/volume1/DiskStation/Programme/Skripte/1LOGS/USB/Beger/USB_Beger.flag"
        exit $1
    }
    # Ziel dev Path auslesen
    zielmount=$(mount | grep -E "/volumeUSB3[1-2]/usbshare" | sed 's/ ..*//;s/[1-9]//')
    if [ -n "$zielmount" ]; then
        # Ziel setzen
        if [ -d "/volumeUSB31/usbshare" ]; then 
            usb="/volumeUSB31/usbshare"
        elif [ -d "/volumeUSB32/usbshare" ]; then 
            usb="/volumeUSB32/usbshare"
        else
            echo "Ziel nicht gefunden!"
            deleteflag 1
        fi
    else    
        echo "Zielmount konnte nicht ausgelesen werden!"
        deleteflag 2
    fi
    
    
    # Doppelte Absicherung / Abfrage ob usb festgelegt
    [ -z "$usb" ] && echo "Ziel konnte nicht festgelegt werden"
    
    
    # Schleife festlegen
    for i in Konzerte Filme Kinderfilme Serien; do
        quelle="/volume1/DiskStation/- $i"
        ziel="$usb/- $i"        
        
        # Wenn Quelle nicht vorhanden, nächste Quelle
        [ ! -d "$quelle" ] && continue
        
        cd "$quelle" && find -not \( -path "*@eaDir*" -prune \) -type f \( -name "*.mkv" -or -name "*.avi" -or -name "*.mp4" \) -newermt "$AUSWAHLDATUM" -exec cp -uv --parents "{}" "$ziel" 2>> "$LOGFEHLERPFAD" 1>> "$LOGPFADTEMP" \; | awk 'BEGIN{c=0; do{printf "#"; c++}while(c<120); printf "\n \n"}' >> $LOGPFADTEMP
    done
    awk 'BEGIN{c=0; do{printf "-"; c++}while(c<27); printf "\n"}' >> $LOGPFADTEMP
    echo -e "Diese Daten wurden kopiert:" >> $LOGPFADTEMP
    gesamtspeicherplatzderfestplatte() {
      df -h --output=size "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
    }
    belegterspeicherplatz() {
      df -h --output=used "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
    }
    freierspeicherplatz() {
      df -h --output=avail "$usb" | tail --lines +2 | sed 's/G.*/ Gigabyte/g; s/T.*/ Terabyte/g; s/M.*/Megabyte/g'
    }
    belegterspeicherplatzinprozent() {
      df -h --output=pcent "$usb" | tail --lines +2
    }
    after=$(date)
    timeDiff=$(date -u -d @$(($(date -d "$after" '+%s') - $(date -d "$before" '+%s'))) '+%M:%S')
    echo -e """\n""Freier Speicherplatz:"" $(freierspeicherplatz) \t\t "Festplatten-Größe:" $(gesamtspeicherplatzderfestplatte)" >> $LOGPFADTEMP
    echo -e "\nBelegter-Speicherplatz:" $(belegterspeicherplatz)" \t "Belegter-Speicherplatz:" $(belegterspeicherplatzinprozent)" >> $LOGPFADTEMP
    echo -e "\nScript-Laufzeit:" $timeDiff "Minuten/Sekunden" >> $LOGPFADTEMP
    echo -e "\nStartzeitpunkt: $(timestamp)\n" >> $LOGPFADTEMP
    tac "$LOGPFADTEMP" | sed 's/^.*-> /-> /' > "$LOGPFADFINAL"
    sleep 30
    
    
    # Platten trennen
    umount "$usb" && echo "umount $usb erfolgreich" || echo "umount $usb Fehler" 
    hdparm -Y "$zielmount" && echo "hdparm -Y $zielmount erfolgreich" || echo "hdparm -Y $zielmount Fehler"
    echo 1 > /sys/block/$zielmount/device/delete && echo "echo 1 > /sys/block/$zielmount/device/delete erfolgreich" || echo "echo 1 > /sys/block/$zielmount/device/delete Fehler"
    rmdir "$usb" && echo "rmdir $usb erfolgreich" || echo "rmdir $usb Fehler"
    
    sleep 30
    echo '3-1' | tee /sys/bus/usb/drivers/usb/unbind
    
    # flag löschen und exit
    deleteflag 0

  2. #22
    Anwender
    Registriert seit
    21.02.2018
    Beiträge
    62

    Standard

    So nun bräuchte ich aber nochmal deine Hilfe...
    Die DiskStation startet jeden Tag neu und somit verbinden sich die beiden USB-Platten ja auch jeden Tag automatisch neu mit dem System. Jetzt wollte ich aus dem mount/unmount/bind/unbind-Ansatz die definierten Platten wieder ausbinden nachdem die DiskStation gestartet ist.

    Jetzt habe ich das versucht und es funktioniert auch zu 99,9%, doch das Problem ist das die Meldung wieder kommt das die Platten nicht ordnungsgemäß ausgebunden wurden. Kann es sein das ich beim zusammenschreiben was übersehen habe, ich glaube der Mount/Unmount-Bereich funktioniert nicht so wie gewünscht. Oder kann ich das sich so nicht machen? Ich glaube du verstehst es wenn du dir das Skript anschaust:

    Code:
    #!/bin/bash
    
    # Definierte Platten binden ###########################
    
    echo '3-2' | tee /sys/bus/usb/drivers/usb/bind
    echo '3-1' | tee /sys/bus/usb/drivers/usb/bind
    sleep 30
    
    # (usb21-usb22) #####################################
    
    # Ziel dev Path auslesen (usb21-usb22)
    zielmount1=$(mount | grep -E "/volumeusb2[1-2]/usbshare" | sed 's/ ..*//;s/[1-9]//')
    if [ -n "$zielmount1" ]; then
        # Ziel setzen
        if [ -d "/volumeusb21/usbshare" ]; then 
            usb1="/volumeusb21/usbshare"
        elif [ -d "/volumeusb22/usbshare" ]; then 
            usb1="/volumeusb22/usbshare"
        else
            echo "Ziel nicht gefunden!"
            deleteflag 1
        fi
    else    
        echo "zielmount1 konnte nicht ausgelesen werden!"
        deleteflag 2
    fi
    
    # Doppelte Absicherung / Abfrage ob usb1 festgelegt
    [ -z "$usb1" ] && echo "Ziel konnte nicht festgelegt werden"
    
    # USB Platten (usb21-usb22) trennen
    umount "$usb1" && echo "umount $usb1 erfolgreich" || echo "umount $usb1 Fehler" 
    hdparm -Y "$zielmount1" && echo "hdparm -Y $zielmount1 erfolgreich" || echo "hdparm -Y $zielmount1 Fehler"
    echo 1 > /sys/block/$zielmount1/device/delete && echo "echo 1 > /sys/block/$zielmount1/device/delete erfolgreich" || echo "echo 1 > /sys/block/$zielmount1/device/delete Fehler"
    rmdir "$usb1" && echo "rmdir $usb1 erfolgreich" || echo "rmdir $usb1 Fehler"
    
    # (usb31-usb32) #####################################
    
    # Ziel dev Path auslesen (usb31-usb32)
    zielmount2=$(mount | grep -E "/volumeusb3[1-2]/usbshare" | sed 's/ ..*//;s/[1-9]//')
    if [ -n "$zielmount2" ]; then
        # Ziel setzen
        if [ -d "/volumeusb31/usbshare" ]; then 
            usb2="/volumeusb31/usbshare"
        elif [ -d "/volumeusb32/usbshare" ]; then 
            usb2="/volumeusb32/usbshare"
        else
            echo "Ziel nicht gefunden!"
            deleteflag 1
        fi
    else    
        echo "zielmount2 konnte nicht ausgelesen werden!"
        deleteflag 2
    fi
    
    # Doppelte Absicherung / Abfrage ob usb2 festgelegt
    [ -z "$usb2" ] && echo "Ziel konnte nicht festgelegt werden"
    
    # USB Platten (usb31-usb32) trennen
    umount "$usb2" && echo "umount $usb2 erfolgreich" || echo "umount $usb2 Fehler" 
    hdparm -Y "$zielmount2" && echo "hdparm -Y $zielmount2 erfolgreich" || echo "hdparm -Y $zielmount2 Fehler"
    echo 1 > /sys/block/$zielmount2/device/delete && echo "echo 1 > /sys/block/$zielmount2/device/delete erfolgreich" || echo "echo 1 > /sys/block/$zielmount2/device/delete Fehler"
    rmdir "$usb2" && echo "rmdir $usb2 erfolgreich" || echo "rmdir $usb2 Fehler"
    
    # Definierte Platten ausbinden ###########################
    
    sleep 30
    echo '3-2' | tee /sys/bus/usb/drivers/usb/unbind
    echo '3-1' | tee /sys/bus/usb/drivers/usb/unbind
    
    # flag löschen und exit
    deleteflag 0
    Würde mich sehr freuen wenn du mir nochmal über die Schulter schauen könntest.

    Viele liebe Grüße
    Seger

  3. #23
    Anwender
    Registriert seit
    21.02.2018
    Beiträge
    62

    Standard

    @PsychoHH @all wollte mal hoffleich nachfragen ob sich jemand schon meinen letzten Post anschauen könnte und mir unter die Arme greifen könnte?

    Viele Grüße
    Seger

  4. #24
    Anwender
    Registriert seit
    21.02.2018
    Beiträge
    62

    Standard

    Wirklich keiner da der mir vielleicht nochmal helfen kann? @PsychoHH scheint momentan offline zu sein. Würde mich sehr freuen.
    @Fusion vielleicht?

    Viele Grüße
    Seger

  5. #25
    Anwender
    Registriert seit
    02.07.2013
    Beiträge
    2.906

    Standard

    Du hast im aktuellen Script die Funktion deleteflag vergessen.
    Das Problem ist einfach, ich nutze keine bind/unbind Befehle um Geräte/einzelne Geräte zu mounten, weswegen es hier evtl. zu der Meldung kommen kann.

    Wieso lässt du es nicht einfach so von Synology mounten?
    ! Bitte Postfachgröße erhöhen !


    DS916+ | 8GB RAM | 3x3TB WD Red RAID 5 btrfs | DSM 6.1-15047-U2
    DS216+II | 8GB RAM | 2x4TB WD Red basic ext4 | DSM 6.0.2-8451-U9
    DS212j | | DSM 6.0.2-8451-U9 | Backup DS

    Fritzbox 7490 | Netgear GS108Tv2


    Projekte:

    Ultimate Backup - SPK
    Ultimate Search - SPK




  6. #26
    Anwender
    Registriert seit
    21.02.2018
    Beiträge
    62

    Standard

    Hey mein Lieber,

    entschuldige meine späte Rückmeldung, war beruflich sehr eingebunden.

    Die kleiner Fuchs, du siehst auch alles, das hab ich wohl vergessen gehabt zu kopieren. Und als ich mir dann nochmal den fertigen Code genau angeschaut hatte, habe ich gesehen das ich beim Mountbefehl im Pfad das USB kleine "usb" kleingeschrieben hatte. Lange Rede .... ;-), mit deinem Tipp und dem Anpassen des Rechtschreibfehlers hat es dann geklappt :-).

    Für die Nachwelt ein Code mit dem man einzelne USB-Platten ohne Fehlermeldung ausbilden kann:

    Code:
    #!/bin/bash
    touch "/volume1/DiskStation/Programme/Skripte/1LOGS/USB_Unbind/USB_Unbind.flag"
    
    # Definierte Platten binden ###########################
    
    echo '3-2' | tee /sys/bus/usb/drivers/usb/bind
    echo '3-1' | tee /sys/bus/usb/drivers/usb/bind
    sleep 30
    
    deleteflag() {
        rm "/volume1/DiskStation/Programme/Skripte/1LOGS/USB_Unbind/USB_Unbind.flag"
        exit $1
    }
    
    # (usb21-usb22) #####################################
    
    # Ziel dev Path auslesen (usb21-usb22)
    zielmount1=$(mount | grep -E "/volumeUSB2[1-2]/usbshare" | sed 's/ ..*//;s/[1-9]//')
    if [ -n "$zielmount1" ]; then
        # Ziel setzen
        if [ -d "/volumeUSB21/usbshare" ]; then 
            usb1="/volumeUSB21/usbshare"
        elif [ -d "/volumeUSB22/usbshare" ]; then 
            usb1="/volumeUSB22/usbshare"
        else
            echo "Ziel nicht gefunden!"
            deleteflag 1
        fi
    else    
        echo "zielmount1 konnte nicht ausgelesen werden!"
        deleteflag 2
    fi
    
    # Doppelte Absicherung / Abfrage ob usb1 festgelegt
    [ -z "$usb1" ] && echo "Ziel konnte nicht festgelegt werden"
    
    # USB Platten (usb21-usb22) trennen
    umount "$usb1" && echo "umount $usb1 erfolgreich" || echo "umount $usb1 Fehler" 
    hdparm -Y "$zielmount1" && echo "hdparm -Y $zielmount1 erfolgreich" || echo "hdparm -Y $zielmount1 Fehler"
    echo 1 > /sys/block/$zielmount1/device/delete && echo "echo 1 > /sys/block/$zielmount1/device/delete erfolgreich" || echo "echo 1 > /sys/block/$zielmount1/device/delete Fehler"
    rmdir "$usb1" && echo "rmdir $usb1 erfolgreich" || echo "rmdir $usb1 Fehler"
    
    # (usb31-usb32) #####################################
    
    # Ziel dev Path auslesen (usb31-usb32)
    zielmount2=$(mount | grep -E "/volumeUSB3[1-2]/usbshare" | sed 's/ ..*//;s/[1-9]//')
    if [ -n "$zielmount2" ]; then
        # Ziel setzen
        if [ -d "/volumeUSB31/usbshare" ]; then 
            usb2="/volumeUSB31/usbshare"
        elif [ -d "/volumeUSB32/usbshare" ]; then 
            usb2="/volumeUSB32/usbshare"
        else
            echo "Ziel nicht gefunden!"
            deleteflag 3
        fi
    else    
        echo "zielmount2 konnte nicht ausgelesen werden!"
        deleteflag 4
    fi
    
    # Doppelte Absicherung / Abfrage ob usb2 festgelegt
    [ -z "$usb2" ] && echo "Ziel konnte nicht festgelegt werden"
    
    # USB Platten (usb31-usb32) trennen
    umount "$usb2" && echo "umount $usb2 erfolgreich" || echo "umount $usb2 Fehler" 
    hdparm -Y "$zielmount2" && echo "hdparm -Y $zielmount2 erfolgreich" || echo "hdparm -Y $zielmount2 Fehler"
    echo 1 > /sys/block/$zielmount2/device/delete && echo "echo 1 > /sys/block/$zielmount2/device/delete erfolgreich" || echo "echo 1 > /sys/block/$zielmount2/device/delete Fehler"
    rmdir "$usb2" && echo "rmdir $usb2 erfolgreich" || echo "rmdir $usb2 Fehler"
    
    # Definierte Platten entbinden ###########################
    
    sleep 30
    echo '3-2' | tee /sys/bus/usb/drivers/usb/unbind
    echo '3-1' | tee /sys/bus/usb/drivers/usb/unbind
    
    # flag löschen und exit
    deleteflag 0
    Danke Dir nochmal für die sensationelle Hilfe! Wie schon mal gesagt, solltest du dich irgendwann dem Thema Skripte "App" widmen oder so ähnlich, stehe ich Dir jederzeit zur Verfügung!

    Viele Grüße
    Seger
    Geändert von goetz (07.02.2019 um 23:05 Uhr) Grund: Vollzitat entfernt.

Seite 3 von 3 ErsteErste 123

Ähnliche Themen

  1. SSD - Solid State Disks für die DS/CS
    Von T4B_ im Forum Festplattendiskussion
    Antworten: 30
    Letzter Beitrag: 01.07.2016, 12:38
  2. Exchange-Server über Synlogy abrufen (oder über web-interface abrufen)
    Von Nordfriese im Forum Installation und Konfiguration allgemein
    Antworten: 0
    Letzter Beitrag: 21.02.2015, 12:39
  3. LDAP Benutzer und Gruppenattribute abrufen
    Von FRH500 im Forum LDAP Directory Service
    Antworten: 0
    Letzter Beitrag: 28.12.2014, 16:55
  4. Antworten: 0
    Letzter Beitrag: 18.07.2013, 09:43
  5. Benutzer Status
    Von msp79 im Forum Off-Topic
    Antworten: 3
    Letzter Beitrag: 23.11.2012, 11:01

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •