recv.sh

From Lousy Meerkat, 5 Years ago, written in Plain Text, viewed 254 times.
URL https://paste.steamr.com/view/f02c109c Embed
Download Paste or View Raw
  1. #!/bin/bash
  2.  
  3.  
  4. function chksum (){
  5.         echo -n "$1" | md5sum | awk '{print $1}'
  6. }
  7.  
  8. function rx_data (){
  9.         Filename="$1"
  10.  
  11.         if [ -f $Filename.b64 ] ; then
  12.                 rm $Filename.b64
  13.         fi
  14.  
  15.         echo > /dev/ttyUSB0
  16.         (sleep 1 && echo "/bin/sh /xfer.sh $Filename" > /dev/ttyUSB0) &
  17.  
  18.         read MD5Sum
  19.         MD5Sum=$(echo $MD5Sum | tr -d '\r')
  20.         echo "Expected sum is $MD5Sum"
  21.  
  22.         (sleep 1 && echo > /dev/ttyUSB0) &
  23.         while read x ; do
  24.                 x=$(echo $x | tr -d '\r')
  25.                 if [[ "$x" == "EOF" ]] ; then
  26.                         break
  27.                 fi
  28.  
  29.                 Payload=$(echo "$x" | awk -F: '{print $1}')
  30.                 SumActual=$(echo "$x" | awk -F: '{print $2}' )
  31.                 Sum=$(chksum "$Payload")
  32.  
  33.                 if [[ "$Sum" == "$SumActual" ]] ; then
  34.                         # Valid data, write it somewhere
  35.                         echo $Payload >> $Filename.b64
  36.                         # Ack data
  37.                         echo $Sum > /dev/ttyUSB0
  38.                         echo -n "."
  39.                 else
  40.                         echo "FAIL" > /dev/ttyUSB0
  41.                         echo -n 'x'
  42.                 fi
  43.         done  < /dev/ttyUSB0
  44.  
  45.         cat $Filename.b64 | base64 -d > $Filename
  46.         rm $Filename.b64
  47.  
  48.         ActualSum=$(md5sum $Filename | awk '{print $1}')
  49.         if [[ "$ActualSum" == "$MD5Sum" ]] ; then
  50.                 return 0
  51.         else
  52.                 return 1
  53.         fi
  54. }
  55.  
  56.  
  57. File="$1"
  58.  
  59. if rx_data "$File" ; then
  60.         echo "File transferred OK!"
  61. else
  62.         echo "File appears corrupt."
  63.         echo "Retry?"
  64. fi
  65.  

Reply to "recv.sh"

Here you can reply to the paste above