befehl abbrechen sobald irgendeine rückgabe kommt

  • hi,


    kurze Vorgeschichte ich will ein paar meiner kleinern Festplatten verkaufen. Auf den sollen aber keine Daten wiederherstellbar sein. Das soll ja relativ sichergestellt sein wenn beim Aufruf von

    Code
    cat /dev/hda | strings

    keine Rückmeldung (auser das Promt) kommt. Bei

    Code
    cat /dev/$PART | strings
    if [ "$?" = "1" ]; then
    ...


    würde ja cat erst mal bis zum ende durchlaufen, was ich aber gerne vorzeitig abbrechen würde. Dauert halt einiges an Zeit in der man schon wieder die festplatte mit

    Code
    dd if=/dev/zero of=/dev/hda

    neu beschreiben/löschen könnte (halt abwechselnd mit "dd if=/dev/urandom ...")


    Da gibt es doch sicher was passendes?


    Gruss Lexi

  • hi,


    gibt es hier echt keine Lösung im script selber? Könnte man alternativ die Ausgaben in eine Datei schreiben lassen und die Größe der Datei Auswerten, sobald sich was ändert wird der proßess abgebrochen. Frage hier wäre wird halbwegs "live" in die Datei geschrieben oder geschieht das auch erst wenn der befehl durchgelaufen ist?


    Bin für jedes Stichwort, Alternativen offen ;)


    Gruss Lexi

  • Nabend


    So bekommst nur Du den Rückgabewert, nach der Pipe (strings).


    Code
    cat /dev/$PART | strings
    if [ "$?" = "1" ]; then


    Sollte so kommen.


    Code
    cat /dev/$PART | strings
    if [ "${PIPESTATUS[*]}" = "<WERT VOR '|'> <WERT NACH '|'>" ]; then


    Kannst Du auch einzeln, abfragen.


    Code
    ${PIPESTATUS[0]}
    ${PIPESTATUS[1]}
    ...


    LG Ronny


  • hi Ronny,


    danke dir erst mal für deine Antwort. Kann damit aber nichts anfangen.

    Zitat

    if [ "${PIPESTATUS[*]}" = "<WERT VOR '|'> <WERT NACH '|'>" ]; then


    WERT VOR und WERT NACH? Hier sollen doch sicher vorgegebene Möglichkeiten Verglichen werden? Aber ob von

    Code
    cat /dev/$PART | strings


    nun abcde oder asdfg oder sonstwas sonstwas zurückgegeben wird weis man ja nicht vorher.


    Es soll ja abgebrochen werden sobald irgendeine Ausgabe zurückkommt und nicht zwangsweise "abcde"


    Ist aber durchaus möglich das ich gerade was nicht verstehe.


    Mal etwas anders beschrieben was ich mir im script vorstelle:


    ...
    1 Befehl a ausführen;
    2 Befehl b ausführen;
    3 überprüfen (hier mit "cat" ... und sobald irgendeine rückmeldung kommt weiter ,mit4)
    4 Rückmeldung (wenn es halt zu keiner Fehlermeldung ok und Ende, andernfalls starte an wieder an Stelle 1)


    bei 3 hängt es halt derzeit "cat" soll ja nicht bis zum Ende durchlaufen, wenn das Ergebniss schon 20 (oder weit mehr) Minuten vorher klar ist.


    Gruss Lexi

  • Hallo


    Vor continue, müßtest Du dann erweitern (also deine befehle zum löschen, eintragen).


    Der letzte Test ist es, $OUT existiert und hat Größe größer Null (will heißen strings vorhanden in $OUT) , continue (alles von vorne)... ansonnsten break (verlassen der schleife) .


    Sleep, zum last runter nehmen.



    LG Ronny

  • hi,
    der fred ist zwar schon etwas älter aber vielleicht hilfts dennoch irgendjemanden.


    Zitat

    (halt abwechselnd mit "dd if=/dev/urandom ...")
    Da gibt es doch sicher was passendes?


    ja gibt es:


    'shred' heisst das tool


    'apt-cache search -n shred'
    und mal 'man shred'



    lg
    thomas

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!