Ok possibly the shortest coding project I have undertaken... echo -n "Please enter filename or search criteria: " read searchcriteria files="`ls $searchcriteria`"
add this to both files, and delete any hard coded lines for "searchcriteria=" or "FILES=" enjoy! 2009/11/30 Richard Forth <richard.fo...@gmail.com> > Thanks Malcolm, that worked a treat > > I also learned from the linuxformat forum that I need not have specified > $FILES as a variable at all, I could have just run: > > for f in *.sh > ... > > which did the same thing as > > FILES="`ls *.sh`" > for f in $FILES > ... > > Both work perfectly under Ubuntu AND CentOS. > > Furthermore, for anyone interested in this thread I now have two complete > scripts that compliment each other, the first generates all the MD5 hashes, > the second compares all the files with their corresponding hash files: > > = md5all.sh = > > FILES="`ls *.sh`" > > for f in $FILES > do > md5sum $f > $f.md5 > done > > =========== > > > and > > = md5checkall.sh = > > # Searches for $searchcriteria (line 6) and checks for an associated md5 > hash, and compares the md5sum with the value stored in the .md5 file. Gives > a Pass or a Fail. > > # variables for colors used in output text > red="\033[31m"; green="\033[32m"; reset="\033[0m"; yellow="\033[33m" > > > # variables > searchcriteria="*.sh" > files="`ls $searchcriteria`" > > # main script > clear > echo "Checking md5sum(s) for all files matching: $searchcriteria." > echo "" > for f in $files > do > gethash="`md5sum $f`" > if [ -f $f.md5 ] > then > filehash="`cat $f.md5`" > else > echo -e "[$red FAIL $reset] $f >> $yellow Error: md5sum file not > found. $reset" > continue # skip rest of loop > fi > > if [ "$filehash" = "$gethash" ] > then > echo -e "[$green PASS $reset] $f" > else > echo -e "[$red FAIL $reset] $f >> $yellow Error: md5sum does > not match md5sum file. $reset" > echo "" > echo "FILE:`md5sum $f` ($f)" > echo "HASH:`cat $f.md5` ($f.md5)" > echo "" > fi > done > echo "" > ============== > > You could modify these scripts to prompt for a search criteria rather than > have the value hard coded into the files, that minght be my next little > project, anyway, if you find them useful, enjoy! > > Richard > Amateur Codemaster lol > 2009/11/28 Richard Forth <richard.fo...@gmail.com> > > -----BEGIN PGP SIGNED MESSAGE----- >> Hash: SHA1 >> >> Thanks Malc, I will try that on Monday. >> >> Malcolm Hunter wrote: >> >> As posted on Linux Format User Forums: >> >> >> >> Basically I was experimenting in shell script and was trying to create >> a >> >> useful script that took each file in the current directory (*.sh) and >> for >> >> each file, create a MD5 hash and save that hash in a file of the same >> name >> >> as the file (appended with a .md5 extension), so the basic script >> looked >> >> something like this: >> >> >> >> *Code:* >> >> FILES="*.sh" >> >> for f in $FILES >> >> do >> >> md5sum $f > $f.md5 >> >> done >> >> >> >> >> >> Now, what is annoying is I have just run this at home on ubuntu >> (debian) >> >> and >> >> it has done the job as expected, however when I ran this on a test box >> at >> >> work today running CentOS (RedHat) it kept putting ALL the MD5 hashes >> in >> >> one >> >> file called "*.sh.md5", whereas what I was expecting, and what I got on >> >> Ubuntu, was say I had some files like so: >> >> >> >> *Code:* >> >> shellscript1.sh >> >> shellscript2.sh >> >> >> >> >> >> after I run my script above in the current directory, and then run an >> "ls" >> >> I >> >> should get: >> >> >> >> *Code:* >> >> shellscript1.sh >> >> shellscript1.sh.md5 >> >> shellscript2.sh >> >> shellscript2.sh.md5 >> >> >> >> >> >> Can anyone explain this deviant behaviour on Red Hat and give any tips >> >> that >> >> would allow the shellscript to work on either platform? >> >> >> >> Oh yes and if the code above is of any use you are welcome to it, and >> >> modify/redistribute as you see fit. It was a test really as I am >> learning >> >> "loops" at the moment and wondered if I could write a script that works >> >> with >> >> each file in a given folder. >> > >> > Using "*" gives unpredictable results depending on the context. Better >> to use the output of a command: >> > >> > LIST=`ls *.sh` >> > >> > Cheers, >> > Malc >> > >> >> - -- >> ***** >> Richard Forth >> >> Great Natural Health and wellbeing products >> http://www.aloevera-crowland.co.uk/ >> >> >> ================================ >> Do you want to work from home? >> Part-Time? Running your own business? >> >> Call me now to find out about opportunities >> in your area 07870 897755. >> ================================ >> -----BEGIN PGP SIGNATURE----- >> Version: GnuPG v1.4.9 (GNU/Linux) >> Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ >> >> iEYEARECAAYFAksRppwACgkQQ6xgmxzOp8nVMwCZAclLYq/a7vRzDVgLuskPdoyj >> UXYAn2sdOBmtKBckkaKGbIv6ROOfBYHf >> =2mD7 >> -----END PGP SIGNATURE----- >> > > > > -- > ***** > Richard Forth > > For great natural health, nutrition, animal care and beauty products, visit > my online store: > > http://www.aloevera-crowland.co.uk > > To change your life and circumstances: > > http://www.soaringteam.com/users/invite/MyVideoPage.php?Passcode=2118&src=38&v=3 > > Text OPPORTUNITY and your name to: > > 07870 89 77 55 > > > > -- ***** Richard Forth For great natural health, nutrition, animal care and beauty products, visit my online store: http://www.aloevera-crowland.co.uk To change your life and circumstances: http://www.soaringteam.com/users/invite/MyVideoPage.php?Passcode=2118&src=38&v=3 Text OPPORTUNITY and your name to: 07870 89 77 55
_______________________________________________ Peterboro mailing list Peterboro@mailman.lug.org.uk https://mailman.lug.org.uk/mailman/listinfo/peterboro