Differences

This shows you the differences between two versions of the page.

Link to this comparison view

rb:sftp [06/10/2011 12:09]
andrew
rb:sftp [10/10/2013 15:21]
Line 1: Line 1:
-====== sftp batch mode ====== 
- 
- 
-  #!/bin/bash 
-  #written by Andrew Stringer 25/07/2011 onwards 
-  #This script is intended to be run from cron hourly 
-  #It will ftp all the files it finds to remote ftp server 
-  ​ 
-  #turn on debugging, -x starts, +x stops 
-  set +x 
-  ​ 
-  BASE=/​wworks_ftp/​bar_ia 
-  SCRIPTS=${BASE}/​scripts 
-  UPLOADS=${BASE}/​uploads 
-  ARCHIVE=${BASE}/​archive 
-  EMAIL=${SCRIPTS}/​emailtmp-$$ 
-  MAILTO=andrew.stringer@xxx.com 
-  SENDEMAIL=no 
-  DATENUM=`date +%d` 
-  #Test to force 1st of the month 
-  #DATENUM=01 
-  if [ $DATENUM == 01 ] 
-  then 
-        MONTHTEST="​ - 1st of the month test email."​ 
-        SENDEMAIL=yes 
-  fi 
-  ​ 
-  SFTP=/​usr/​bin/​sftp 
-  IAFTP=123.123.123.123 
-  IAUSER=username 
-  IAPASSWD=password 
-  ​ 
-  PUBKEY=${SCRIPTS}/​incomeaccess.pub 
-  PRIVKEY=${SCRIPTS}/​incomeaccess.key 
-  OPTIONS="​-oIdentityFile=${PRIVKEY}"​ 
-  ​ 
-  ​ 
-  #add trailing / to IABASEPATH if set, this copes when base path is just / 
-  IABASEPATH= 
-  REG=${IABASEPATH}downloads 
-  SALES=${IABASEPATH}sales 
-  ​ 
-  ​ 
-  ​ 
-  #write out start of email log file 
-  echo "From /​wworks_ftp/​bar_ia_ftp/​scripts/​ia_ftpupload.sh on gy-asp-cms01 at `date +%H:%M:%S` UTC." > ${EMAIL} 
-  echo ""​ >> ${EMAIL} 
-  ​ 
-  ​ 
-  echo "File upload to Incomes Access"​ >> ${EMAIL} 
-  echo "​============================="​ >> ${EMAIL} 
-  echo ""​ >> ${EMAIL} 
-  ​ 
-  ​ 
-  #Outer loop controls Registration and Sales loops 
-  for FILETYPE in REG SALES 
-  do 
-  ​ 
-          #Test to see if files are present to ftp. 
-          #If files exist (rc=0), carry on. 
-          #If not, continue to next part of loop 
-          echo "​Filetype to test is ${FILETYPE}"​ 
-          ls  ${UPLOADS}/​*${FILETYPE}* > /dev/null 2>&1 
-          FILESEXIST=$?​ 
-          #echo "​filesexist is $FILESEXIST"​ 
-          if [[ $FILESEXIST != 0 ]] 
-          then 
-                  echo "No files of type ${FILETYPE} to send to IA" >> ${EMAIL} 
-                  echo " " ​ >> ${EMAIL} 
-                  echo "​------- " ​ >> ${EMAIL} 
-                  continue 
-          fi 
-  ​ 
-  ​ 
-          #Inner loop actually sends files 
-          for FILE in `ls -1 ${UPLOADS}/​*${FILETYPE}*` 
-          do 
-  ​ 
-          if [[ $FILE =~ csv$ ]] 
-          then 
-                  #echo "File ends .csv" 
-                  DUMMY=true 
-          else 
-                  echo "​${FILE} does not end .csv, so adding extension."​ >> ${EMAIL} 
-                  mv ${FILE} ${FILE}.csv 
-                  FILE=${FILE}.csv 
-                  #echo "new filename is ${FILE}"​ 
-          fi 
-  ​ 
-          echo "​FTP'​ing `basename ${FILE}` " >> ${EMAIL} 
-          echo " " >> ${EMAIL} 
-  ​ 
-          eval IAPATH=\$$FILETYPE 
-          #echo "​IAPATH is eval result is ${IAPATH}"​ 
-  ​ 
-          #echo "sftp command is:- ${SFTP} ${OPTIONS} ${IAUSER}@${IAFTP}"​ 
-          ${SFTP} ${OPTIONS} ${IAUSER}@${IAFTP} << EOF 
-  cd ${IAPATH} 
-  lcd ${UPLOADS} 
-  put ${FILE} 
-  bye 
-  EOF 
-  ​ 
-          SFTPRESULT=$?​ 
-          #Force result code for testing 
-          #​SFTPRESULT=1 
-  ​ 
-          if [ ${SFTPRESULT} -eq 0 ] 
-          then 
-                  echo "​Returncode is 0, so moving ${FILE} to archive."​ >> ${EMAIL} 
-                  echo " " ​ >> ${EMAIL} 
-                  mv ${FILE} ${ARCHIVE} 
-          else 
-                  echo "sftp copy of ${FILE} was not successful, return code was ${SFTPRESULT}."​ >> ${EMAIL} 
-                  echo " " ​ >> ${EMAIL} 
-                  SENDEMAIL=yes 
-          fi 
-  ​ 
-          echo "​------- " ​ >> ${EMAIL} 
-  ​ 
-          #end of FILE loop 
-          done 
-  ​ 
-  #end of FILETYPE do 
-  done 
-  ​ 
-  ​ 
-  #Mail Out 
-  if [  ${SENDEMAIL} == yes ] 
-  then 
-          #echo ${SENDEMAIL} >> ${EMAIL} 
-          echo "​Sending notification mail at `date +%H:%M:%S` UTC." >> ${EMAIL} 
-          /bin/mail ${MAILTO} -s "BAR Casino upload to Incomes Access failed.${MONTHTEST}"​ < ${EMAIL} 
-  else 
-          #don't send mail, so mail command is commented out. Left in for testing 
-  ​ 
-          #DONTSEND is a dummy statement to prevent an error when everything else is commented out. 
-          DONTSEND=true 
-  ​ 
-          echo "​Sending notification mail at `date +%H:%M:%S` UTC." >> ${EMAIL} 
-          /bin/mail ${MAILTO} -s "BAR Casino upload to Incomes Access succeded.${MONTHTEST}"​ < ${EMAIL} 
-  fi 
-  ​ 
-  #cleanup 
-  rm ${EMAIL} 
-  ​ 
-  exit 0 
  

rb/sftp.txt ยท Last modified: 10/10/2013 15:21 (external edit)