Search code examples
shellawkcgimd5sum

CGI output Shell - md5sum wrong value


I need to split an IPv4 address into octets, calculate the MD5 hash of each and print as a CGI output:

IP1=$(echo ${REMOTE_ADDR} | tr "." " " | awk '{print $1'} | md5sum | cut -c1-32)
printf $IP1

In this example, REMOTE_ADDR = 192.168.20.100 But the MD5 of 192 gives me a wrong MD5 IP1=6be7de648baa9067fa3087928d5ab0b4, while it should be 58a2fc6ed39fd083f55d4182bf88826d

If I do this:

cat /tmp/test.txt | md5sum | cut -c1-32

where test.txt contains 192, I get the correct MD5 hash, i.e 58a2fc6ed39fd083f55d4182bf88826d

What am I doing wrong?


Solution

  • As @Shawn said, the problem was on awk print.

    Adding tr -d '\n' solved the problem.

    Now it is working correctly; for other octects I had to change print $2..etc on awk

    IP1=$(echo ${REMOTE_ADDR} | awk -F. '{print $1'} | tr -d '\n' | md5sum | cut -c1-32 )