Archiv verlassen und diese Seite im Standarddesign anzeigen : md5check
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?
!#/bin/bash
md5=$(md5sum $1 | awk '{print $1}')
if[md5sum != $2] then
echo "$1 is corrupt!"
fi
das sollte gehen.
Steve
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
#!/bin/bash
md5=$(md5sum $1 | awk '{print $1}')
if[ $md5 != $2 ]; then
echo "$1 is corrupt!"
fi
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
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
Danke!
Aber ich frage mich echt, was bei meiner Version dann immer falsch war.
Du hast in der zweiten Zeile ein blank zwischen dem dollar und der öffnenden Klammer. Zumindest ist das bei Steves Codeschnippsel der Fall.
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!
Powered by vBulletin® Version 4.2.0 Copyright ©2013 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.