Donor Perfect Backup Script Currently Donor Perfect Backups have an associated Backup Key pair with DPO and KitKat. sshpass can be installed and used to pass credentials through this script until key pair is created. %% #!/bin/bash ### Donor Perfect Online Backup Download Script ### Change the variables below for correct data file and dataset ### ----User Defined Variable Section------------ port=22 username="E11598" #scp_pass='passwordgoeshere' ### Generated key pair with passphrase and sent public key to DPO ### ssh-keygen -t rsa -b 4096 -C "E11598@softerware.com" ### saved as /path/to/.ssh/id_rsa.DPO and secured with 600 permissions ### eval $(ssh-agent) ### ssh-add /path/to/.ssh/id_rsa and provide passphrase for agent storage hostserv="sftp.softerware.com" #hostserv="52.2.60.11" hostdir="/" hostfile=DPOBACKUP$(date +%m%d%Y).zip dest="/export/dp-online/" logfilepath="/var/log/donorperfect/" logfilename="DP-Online" ### ---Script Variables-------------------------- logdate=$(date +"%m%d%Y") scppf="SCP Succeeded." filepf="No File Saved." #md5pf="MD5SUM Passed." logtitle="Backup Succeeded." starttime=$(date +"%H:%M:%S") USER=root # Required for environment if keypair with passphrase used ### ---Set Environment Variables for SSH key pair SSH_AGENT_PID=`pgrep -U $USER ssh-agent` for PID in $SSH_AGENT_PID; do let "FPID = $PID - 1" FILE=`find /tmp -path "*ssh*" -type s -iname "agent.$FPID"` export SSH_AGENT_PID="$PID" export SSH_AUTH_SOCK="$FILE" done ### ---Download File----------------------------- # for debugging purposes #echo "Debug: My home dir is $HOME" #sshpass -p $scp_pass scp $username@$hostserv:$hostdir$hostfile $dest scp -i /root/.ssh/id_rsa_DPO $username@$hostserv:$hostdir$hostfile $dest scpcode=$? ### ---Validate SCP Success---------------------- if [ $scpcode != "0" ]; then scppf="SCP Failed! Escape Code: "$scpcode logtitle="Backup Failed!" fi ### ---Validate File Transfer-------------------- if [ -f $dest$hostfile ]; then filepf=$dest$hostfile" transferred." else logtitle="Backup Failed!" fi ### ---Validate MD5SUM--------------------------- # there is no longer the ability to ssh into DPO and get MD5 #ssh E11598@sftp.softerware.com cat /home/E11598/DPOBACKUP05272016.zip | md5sum #hostmd5=($(sshpass -p $scp_pass ssh $username@$hostserv cat $hostdir$hostfile | md5sum)) #destmd5=($(md5sum $dest$hostfile)) #if [ $hostmd5 != $destmd5 ]; then # md5pf="MD5 Sums do not match" #fi ### ---File Retention---------------------------- # Remove files older than 30 days, bacula has 90 day retention find $dest* -mtime +29 -exec rm {} \; ### ---Create Log File--------------------------- # NOTE: single greater than to overwrite logfile is purposeful to ensure good email. echo === $logtitle > $logfilepath$logfilename-$logdate.log echo ================================================ >> $logfilepath$logfilename-$logdate.log echo === Download Filename: $hostfile >> $logfilepath$logfilename-$logdate.log echo === Download Start: $starttime >> $logfilepath$logfilename-$logdate.log echo === Download Complete: $(date +"%H:%M:%S") >> $logfilepath$logfilename-$logdate.log echo ------------------------------------------------ >> $logfilepath$logfilename-$logdate.log echo === SCP Status: $scppf >> $logfilepath$logfilename-$logdate.log echo === File Status: $filepf >> $logfilepath$logfilename-$logdate.log #echo === MD5 Status: $md5pf >> $logfilepath$logfilename-$logdate.log #echo === Host MD5: $hostmd5 >> $logfilepath$logfilename-$logdate.log #echo === Destination MD5: $destmd5 >> $logfilepath$logfilename-$logdate.log echo ================================================ >> $logfilepath$logfilename-$logdate.log echo >> $logfilepath$logfilename-$logdate.log echo Donor Perfect Support >> $logfilepath$logfilename-$logdate.log echo Phone: 215-628-4343 >> $logfilepath$logfilename-$logdate.log echo Account Manager: David Kinneman >> $logfilepath$logfilename-$logdate.log echo Email: dkinneman@softerware.com >> $logfilepath$logfilename-$logdate.log ### ---Email Notification------------------------ cat $logfilepath$logfilename-$logdate.log | mail -s "DPO Nightly Backup" bacula@votesmart.org %%