#!/bin/bash # usage if [[ $# -lt 3 ]]; then echo "Usage: $0 i " echo " - prod/stage" echo " - source dir where creatives are stored, e.g. ~/tmp/creatives/new" echo " - destination directory where creatives should be written, e.g. 55" echo " Warning! Directory prefix is already set to /opt/ang/var/easybidder!" exit 1 fi if [[ "$4" == "-d" ]];then readonly REPLACE=1 fi readonly SXPSharedKey=~/.ssh/smartclip_shared_rsa readonly SSHOPTS="-i $SXPSharedKey -o StrictHostKeyChecking=no" readonly ENVIRONMENT=$1 readonly SRCDIR=$2 readonly DESTDIR=/opt/ang/var/easybidder/$3 readonly PROGNAME=$(basename "$0") readonly LOCKFILE_DIR=/tmp readonly LOCK_FD=200 # HOSTS setup HOSTS=$1 lock() { local prefix=$1 local fd=${2:-$LOCK_FD} local lock_file=$LOCKFILE_DIR/$prefix.lock # create lock file eval "exec $fd>$lock_file" # acquier the lock flock -n $fd \ && return 0 \ || return 1 } eexit() { local error_str="$@" echo $error_str exit 1 } main() { lock $PROGNAME \ || eexit "Only one instance of $PROGNAME can run at one time." # echo $ENVIRONMENT # echo $SRCDIR # echo $HOSTS # echo $DESTDIR DIRNAME="creatives_$(date '+%F.%s')" # upload creatives to remote hosts for hh in $(cat $HOSTS); do echo -n "[$hh] Creating /tmp/$DIRNAME directory - " ssh $SSHOPTS ubuntu@${hh} "mkdir /tmp/$DIRNAME" > /dev/null && echo OK || echo FAIL echo -n "[$hh] Copying creatives - " scp $SSHOPTS $SRCDIR/*.creative ubuntu@${hh}:/tmp/$DIRNAME/ > /dev/null && echo OK || echo FAIL # delete old creatives if $4 == -d if [[ $REPLACE == 1 ]]; then echo -n "[$hh] Deleting $DESTDIR -" ssh $SSHOPTS ubuntu@${hh} "sudo -u anguser rm -rf $DESTDIR" && echo OK || echo FAIL fi # move creatives to the proper place ssh $SSHOPTS ubuntu@${hh} "sudo -u anguser mkdir -p $DESTDIR" echo -n "[$hh] Copying creatives to destination dir $DESTDIR - " ssh $SSHOPTS ubuntu@${hh} "sudo -u anguser cp /tmp/$DIRNAME/*.creative ${DESTDIR}/" && echo OK || echo FAIL done } main