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