md5check

Dieses Thema: "md5check" im Forum "Shell-Skripte" wurde erstellt von hehejo, 03.05.2004.

  1. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Hallo, ich wollte mir mal ein kleines Skript schreiben das von einer die md5summe bestimmt und sie dann mit einer vergleicht.

    md5checl <to_check> <md5summe>


    so sind bisher meine Überlegungen:
    Code:
    !#/bin/bash
    md5= md5sum $1 | awk '{print $1}'
    if[md5sum != $2] then
      echo "$1 is corrupt!"
    fi
    Lässt sich leider nicht ausführen... Irgendwas mit der Variablenzuweisung stimmt nicht.
    In Bashprogrammierung bin ich echt NOOB.
    Was mach ich falsch?
     
  2. Anzeige

    schau mal hier --> (hier klicken). Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Steve

    Steve 13te

    Dabei seit:
    13.04.2002
    Beiträge:
    381
    Zustimmungen:
    0
    Code:
    !#/bin/bash
    md5=$(md5sum $1 | awk '{print $1}')
    if[md5sum != $2] then
      echo "$1 is corrupt!"
    fi
    
    das sollte gehen.

    Steve
     
  4. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Danke.

    Die Variable nimmt er jetzt an, aber ich bekomme diesen Fehler:
    Code:
    !#/bin/bash
    md5=$(md5sum $1 | awk '{print $1}')
    if[md5sum != $2] then
      echo "$1 is corrupt!"
    fi
    
    ./md5check.sh: line 5: syntax error near unexpected token `fi'
    ./md5check.sh: line 5: `fi'
    Wenn ich hinter die ] ein ; mache kommt der Fehler, dass er [mdsum nicht kennt...
     
  5. #4 qmasterrr, 03.05.2004
    qmasterrr

    qmasterrr Foren Gott

    Dabei seit:
    01.01.2004
    Beiträge:
    2.735
    Zustimmungen:
    0
    Ort:
    Germany/NRW/Wesel
    also ich mach das immer so
    md5sum datei && echo 1234556789...
     
  6. #5 nikster77, 03.05.2004
    nikster77

    nikster77 Routinier

    Dabei seit:
    15.03.2004
    Beiträge:
    307
    Zustimmungen:
    0
    !#/bin/bash
    md5= `md5sum $1 | awk '{print $1}'`
    if[ "$md5" != "$2" ]; then
    echo "$1 is corrupt!";
    fi

    versuch es doch mal so...
    Ich hoffe ich hab nicht nur auf eine dumme Art die Fehlermeldung eliminiert

    Niels
     
  7. Steve

    Steve 13te

    Dabei seit:
    13.04.2002
    Beiträge:
    381
    Zustimmungen:
    0
    Code:
    #!/bin/bash
    md5=$(md5sum $1 | awk '{print $1}')
    if[ $md5 != $2 ]; then
      echo "$1 is corrupt!"
    fi
    
     
  8. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Ich habs jetzt genau so wie es bei Steve steht und es kommt dieser Fehler:
    Code:
    ./md5check.sh: line 3: [15cfa4a7402315f5f218509d7ea7b34c: command not found
    und bei nikster77s Version kommt das hier:
    Code:
    ./md5check.sh: line 2: 3680b0b542c9aa9b1e812d0d192ae6bf: command not found
    ./md5check.sh: line 3: syntax error near unexpected token `then'
    ./md5check.sh: line 3: `if[ "$md5" != "$2" ]; then'
    Also ich weiß nicht was ich falsch mache!
     
  9. #8 nikster77, 05.05.2004
    nikster77

    nikster77 Routinier

    Dabei seit:
    15.03.2004
    Beiträge:
    307
    Zustimmungen:
    0
    Er scheint den HASH-Wert bei dir für ein "substituiertes" kommando (oder wie man sowas nennt) zu halten.

    !#/bin/bash
    md5=` md5sum $1 | awk '{print $1}'`
    if [ "$md5" != "$2" ]; then
    echo "$1 is corrupt!";
    fi

    Die Leer- und Anführungszeichen sind auch sehr wichtig (z.B.: mit [ $md5 != $2 ] kann man der Shell nur
    eine reine Zahlenkombi übergeben und dann auch nur mit: -eq , -lt statt != oder < usw.) hab ich mir sagen lassen... Auch muss man wohl genau diese `` Accent Graves (oder so) benutzen.

    Dann ./<name_des_progs> <name_des_zu_checkende_files> <hashsumme_d_z_checkenden_Files>


    Wenn es dann immer noch nicht funktioniert starte das Programm mal mit:

    strace ./name_des_progs

    Wenn da irgendwo (wahrscheinlich bei einer Library) -1 ENOENT auftaucht, lassen sich wahrscheinlich
    Rückschlüsse auf den Fehler ziehen.

    Lacht mich aus wenn ihr das alles schon gewusst habt, ich hab jedenfalls was gelernt.

    Gruss

    Niels
     
  10. Locke

    Locke Reenigne Esrever

    Dabei seit:
    26.04.2004
    Beiträge:
    69
    Zustimmungen:
    0
    hmm wo is das prob?
    hier mal das funzende script dazu:

    #!/bin/bash

    md5=$(md5sum "$1" | awk '{print $1}')

    if [ "$md5" != "$2" ]
    then
    echo "$1 is corrupt!"
    fi

    exit 0
     
  11. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Danke!
    Aber ich frage mich echt, was bei meiner Version dann immer falsch war.
     
  12. Cyber

    Cyber .:DISTORTED:.

    Dabei seit:
    16.05.2003
    Beiträge:
    999
    Zustimmungen:
    0
    Ort:
    D -> BW -> Karlsruhe
    Du hast in der zweiten Zeile ein blank zwischen dem dollar und der öffnenden Klammer. Zumindest ist das bei Steves Codeschnippsel der Fall.
     
  13. hehejo

    hehejo blöder Purist

    Dabei seit:
    12.10.2003
    Beiträge:
    1.280
    Zustimmungen:
    0
    Ort:
    Stein (Mittelfranken)
    Wow,
    ich wusste garnicht, dass man hier so genau sein muss.
    Kenn halt nur C/C++/Java... Denen ist mal so ein Leerzeichen egal.
    Danke für den Hinweis!
     
Thema:

md5check