PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : md5check



hehejo
03.05.2004, 20:04
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:

!#/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?

Steve
03.05.2004, 20:34
!#/bin/bash
md5=$(md5sum $1 | awk '{print $1}')
if[md5sum != $2] then
echo "$1 is corrupt!"
fi


das sollte gehen.

Steve

hehejo
03.05.2004, 20:40
Danke.

Die Variable nimmt er jetzt an, aber ich bekomme diesen Fehler:

!#/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...

qmasterrr
03.05.2004, 21:31
also ich mach das immer so
md5sum datei && echo 1234556789...

nikster77
03.05.2004, 22:38
!#/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

Steve
04.05.2004, 12:09
#!/bin/bash
md5=$(md5sum $1 | awk '{print $1}')
if[ $md5 != $2 ]; then
echo "$1 is corrupt!"
fi

hehejo
04.05.2004, 20:08
Ich habs jetzt genau so wie es bei Steve steht und es kommt dieser Fehler:

./md5check.sh: line 3: [15cfa4a7402315f5f218509d7ea7b34c: command not found
und bei nikster77s Version kommt das hier:

./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!

nikster77
04.05.2004, 23:31
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

Locke
04.05.2004, 23:32
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

hehejo
06.05.2004, 17:40
Danke!
Aber ich frage mich echt, was bei meiner Version dann immer falsch war.

Cyber
06.05.2004, 17:47
Du hast in der zweiten Zeile ein blank zwischen dem dollar und der öffnenden Klammer. Zumindest ist das bei Steves Codeschnippsel der Fall.

hehejo
06.05.2004, 17:55
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!