The cksum Problem


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting The cksum Problem
# 1  
Old 08-14-2006
The cksum Problem

Hi,

I have a working script, well it works on my machine but when I try it on others the cksum section does not work properly (I know the scripting is not of a high quality but I'm just trying to get it working)

Heres the script:

#!/bin/sh

case $# in
0) echo "usage: enshar filename filename2 ...";;

*) for file
do

if [ -d $file ]
then echo "usage: cannot shar directory"

elif [ ! -f $file ]
then echo "usage: file does not exist"

elif [ ! -r $file ]
then echo "usage: file is not readable"

else
echo "cat > $file <<\!EnShAr!"
cat $file
echo "!EnShAr!"
echo "set 'cksum $file'"
cksum $file > temp1
awk '/^/ {print $1}' temp1 > temp2
echo "test \$1 =" > temp1
more temp2 >> temp1
echo "|| echo \$0: BAD checksum in $file >&2" >> temp1
tr "\n" " " < temp1 > temp2
more temp2
echo
fi

done ;;

esac


My problem is: I need to get cksum to function properly, I need it to check the file before transfer, then after and display the number ( in some cases in just shows ::::::::: ), any help is very appreciated.
# 2  
Old 08-14-2006
You still don't like using code tags.
Code:
#!/bin/sh

case $# in
    0) echo "usage: enshar filename filename2 ...";;

    *) for file
        do

            if [ -d $file ]
            then echo "usage: cannot shar directory"

            elif [ ! -f $file ]
            then echo "usage: file does not exist"

            elif [ ! -r $file ]
            then echo "usage: file is not readable"

            else
                echo "cat > $file <<\!EnShAr!"
                cat $file
                echo "!EnShAr!"
                echo "set 'cksum $file'"
                cksum $file > temp1
                awk '/^/ {print $1}' temp1 > temp2
                echo "test \$1 =" > temp1
                more temp2 >> temp1
                echo "|| echo \$0: BAD checksum in $file >&2" >> temp1
                tr "\n" " " < temp1 > temp2
                more temp2
                echo
            fi

    done ;;

esac

Adding the tags is very simple and is very much appreciated by everyone helping you debug your code.
# 3  
Old 08-14-2006
Quote:
Originally Posted by Dim-Wit
My problem is: I need to get cksum to function properly, I need it to check the file before transfer, then after and display the number ( in some cases in just shows ::::::::: )
I tried your code and I can't get any file to show ::::::::: . Can you show an example of this happening?
# 4  
Old 08-14-2006
By the and for what it's worth, your code looks to me like it could be greatly simplified if you used variables instead of temporary files:
Code:
#! /bin/sh

case $# in
    0) echo "usage: enshar filename filename2 ...";;

    *) for file
       do
            if [ -d $file ]
            then continue ; echo "usage: cannot shar directory"

            elif [ ! -f $file ]
            then continue ; echo "usage: file does not exist"

            elif [ ! -r $file ]
            then continue ; echo "usage: file is not readable"

            else
...
                CHKSUM_1=$(cksum $file | awk '{print $1}')
                echo "test $file = ${CHKSUM_1}"
...
# Do your copy/transfer/whatever
...
                CHKSUM_2=$(cksum /new/location/$file | awk '{print $1}')
                echo "test $file = ${CHKSUM_2}"
                if [[ ${CHKSUM_1} != ${CHKSUM_2} ]]
                then
                     print "not the same"
                fi
            fi

       done ;;

esac

# 5  
Old 08-14-2006
Replace your code :
Code:
                echo "cat > $file <<\!EnShAr!"
                cat $file
                echo "!EnShAr!"
                echo "set 'cksum $file'"
                cksum $file > temp1
                awk '/^/ {print $1}' temp1 > temp2
                echo "test \$1 =" > temp1
                more temp2 >> temp1
                echo "|| echo \$0: BAD checksum in $file >&2" >> temp1
                tr "\n" " " < temp1 > temp2
                more temp2
                echo

by (not tested) :
Code:
                CHKSUM=$(cksum $file | awk '{print $1}')
                echo "cat > $file <<\!EnShAr!"
                cat $file
                echo "!EnShAr!"
                echo "chksum=`cksum $file | awk '{print \$1}'`
                echo "test \$chksum = $CHKSUM || echo \$0: BAD checksum in $file >&2" 
                echo


Jean-Pierre.
# 6  
Old 08-15-2006
I have tried this code and I am told there is asyntax error from the very first line, it says it is unexpected, could any one give me some help on this?
# 7  
Old 08-15-2006
The fifth line in aigle's code is missing a ". Also, make sure you're using ksh. (#!/usr/bin/ksh).
Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. AIX

Directory csum / cksum

I've created a directory in /tmp/csum-test on AIX 6.1. Then another under AIX 7.1 host called /tmp/csum-test. There is no files in the directories. When I run csum -h SHA1 /tmp/csum-test on AIX 6.1 host it gives me a different value then if I run csum -h SHA1 /tmp/csum-test under the AIX 7.1... (2 Replies)
Discussion started by: Devyn
2 Replies

2. UNIX for Dummies Questions & Answers

cksum does not give me crc32

Is cksum the right command to calculate the crc32 checksum value? I tried it for a number of files now and every time the results dont match. So there is nothing wrong with the file. Also, cksum gives me an all numerical value while crc32 is alpha numeric. What am I doing wrong? Thanks (9 Replies)
Discussion started by: utamav
9 Replies

3. Shell Programming and Scripting

EEPROM CKSUM? what is this?

Hi all, So I have a binary file and I need to generate an expected EEPROM checksum for it. Ideally, I would like to input the file (with the path) and output a computed checksum. Ive been using (cksum file1) with no avail and I was just curious as to whether there is such thing as EEPROM cksum,... (1 Reply)
Discussion started by: TeamUSA
1 Replies

4. UNIX for Dummies Questions & Answers

EEPROM CKSUM - Is there such thing?

Hi all, So I have a binary file and I need to generate an expected EEPROM checksum for it. Ideally, I would like to input the file (with the path) and output a computed checksum. Ive been using (cksum file1) with no avail and I was just curious as to whether there is such thing as EEPROM... (1 Reply)
Discussion started by: TeamUSA
1 Replies

5. UNIX for Dummies Questions & Answers

sorting cksum output.

Hi guys, I have a service directory with a lot of files in. I have to cksum the whole directory and compare it to a release note document. However the problem I have is the files are listed in different lines when running cksum as they are in the release doc. Therefore cksum shows... (1 Reply)
Discussion started by: Stin
1 Replies

6. UNIX for Advanced & Expert Users

Cksum dependencies

Hi, On what factors does the cksum depend. If i build 2 machines exactly the same, then can i get the checksum of 2 compiled files same. Thanks (3 Replies)
Discussion started by: vibhor_agarwali
3 Replies

7. Shell Programming and Scripting

using cksum

hi, I am trying to use the cksum feature in unix. when i make a call to it i get returned something along the lines of: 4603435 14 file3 how do i get the first part of this response only; i.e: 4603435 I'm trying to use at a way without the use of sed and creating temp... (4 Replies)
Discussion started by: leeRoberts2007
4 Replies

8. Shell Programming and Scripting

cksum question

Hi there, I have a query about cksum. I'm running a script on the Unix box and in a script the cksum result differs from when I run it manually. As far as I can see the file is not being changed, is there any other times that the cksum would be different. (4 Replies)
Discussion started by: rjsha1
4 Replies

9. Shell Programming and Scripting

Anyone know how cksum works?

hello all. I'm not asking about the algorithm - or how it goes about computing the checksum - I'm asking how it views/looks at the files it does the cksum on. For instance: Say you had a directory named "dir_A" And within this directory you had some files. So: dir_A - file1 -... (5 Replies)
Discussion started by: kapolani
5 Replies
Login or Register to Ask a Question