s4ros icon

Creatives delivery upload

s4ros | PRO | 11/25/16 09:21:47 AM UTC | 0 ⭐ | 389 👁️ | Never ⏰ | []
Bash |

2.21 KB

|

None

|

0 👍

/

0 👎

#!/bin/bash
 
# usage
if [[ $# -lt 3 ]]; then
  echo "Usage: $0 <environment> <src-dir>i <dst-dir>"
  echo "  <environment> - prod/stage"
  echo "  <src-dir> - source dir where creatives are stored, e.g. ~/tmp/creatives/new"
  echo "  <dst-dir> - 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

Comments