Copy and verify file from remote host script
November 1, 2012 Leave a comment
Here is a simple script to copy & verify oracle binary file from remote host:
#!/bin/bash #copy the lastest tested binary # if [ $# -lt 1 ]; then echo " usage: get_binary.sh <version> example: get_binary.sh 11203 " exit 1 fi oraver=$1 target_dir=/oracle/binary/$oraver source_host=source.wordpress.com source_dir=/oracle/home/products/ logfile=$target_dir/get_binary_$oraver.log tarfile=$oraver.tar.Z cksumfile=$tarfile.cksum lsinventoryfile=$tarfile.lsinventory #Check if there is new binary cd $target_dir #check if source cksum file is valid recksum=0 scksum=`ssh $source_host "cat $source_dir/$cksumfile" 2>&1` if [ $? -ne 0 ]; then echo "cksum file $source_host:$source_dir/$cksumfile doesn't exit" recksum=1 else fsz=`ssh $source_host "stat --printf="%s" $source_dir/$tarfile"` tsz=`echo $scksum | awk '{print \$2}'` if [ $fsz -ne $tsz ]; then echo "$source_host:$source_dir/$tarfile size $fsz didn't match size $tsz in $source_host:$source_dir/$cksumfile" recksum=1 fi fi if [ $recksum -eq 1 ]; then echo "recreate cksum file" ssh $source_host "cd $source_dir; cksum $tarfile > $cksumfile" scksum=`ssh $source_host "cat $source_dir/$cksumfile" 2>&1` fi tcksum=`cat $cksumfile 2>&1` if [[ "$scksum" == "$tcksum" ]] ; then echo "The source binary is the same as target. Exit." echo "If you want to update anyway, pls first rm $target_dir/$cksumfile at `hostname`" exit; else #Copy binary date > $logfile scp $source_host:$source_dir/$tarfile $tarfile.new scp $source_host:$source_dir/$lsinventoryfile . re=`mv $tarfile $tarfile.old 2>&1` mv $tarfile.new $tarfile cksum $tarfile > $cksumfile #Check result scksum=`ssh $source_host "cat $source_dir/$cksumfile"` tcksum=`cat $cksumfile` if [[ "$scksum" == "$tcksum" ]] ; then echo "Copying binary is successful" else echo "Looks like copying binary is failed, cksum file didn't match, restore $tarfile" echo "Source $source_host:$source_dir/$cksumfile :" echo "$scksum" echo "Target $cksumfile :" echo "$tcksum" mv $tarfile $tarfile.new re=`mv $tarfile.old $tarfile 2>&1` fi echo "Source cksum: $scksum" >> $logfile echo "Dest cksum: $tcksum" >> $logfile date >> $logfile echo "logfile: $logfile at `hostname`" fi