Skip to content

Instantly share code, notes, and snippets.

@xemoe
Last active December 27, 2015 14:50
Show Gist options
  • Save xemoe/20a3a71aef5cc7e5500d to your computer and use it in GitHub Desktop.
Save xemoe/20a3a71aef5cc7e5500d to your computer and use it in GitHub Desktop.
sync scripts
#!/bin/bash
type realpath &>/dev/null
if [ $? -eq 1 ]; then
sudo apt-get -qq update && sudo apt-get -qq install realpath -y
fi
type lftp &>/dev/null
if [ $? -eq 1 ]; then
sudo apt-get -qq update && sudo apt-get -qq install lftp -y
fi
SCRIPT_PATH=$(dirname $(realpath -s $0))
#
# FTP ARGS
#
FTP_USER=vagrant
FTP_PASS=vagrant
FTP_HOST=172.100.0.110
FTP_PORT=21
FTP_FILE=logs/syslog
#
# VARIABLES
#
FILE_BASE=$(basename ${FTP_FILE})
FILE_TMP=${FILE_BASE}
FILE_NAME_CODE=$(echo -n ${FTP_FILE} | sha1sum | awk '{print $1}')
DATE_PREFIX=$(date +'%Y%m%d-%H%M%S')
FILE_TARGET="${FILE_BASE}_${DATE_PREFIX}.log"
DIR_FILES=${SCRIPT_PATH}/files/${FTP_HOST}/${FILE_NAME_CODE}
DIR_TARGET=${DIR_FILES}/$(date +'%Y%m%d')
if [ ! -d "${DIR_TARGET}" ];
then
mkdir -p "${DIR_TARGET}"
fi
lftp -u ${FTP_USER},${FTP_PASS} -p ${FTP_PORT} -e "mirror --only-newer --file ${FTP_FILE} --target-directory ${DIR_FILES};quit" ${FTP_HOST}
#
# IF FTP CURL RETURN ERROR
#
if [ ! $? -eq 0 ];
then
echo 'FTP FILE NOT FOUND'
exit 1
fi
find ${DIR_FILES}/*/${FILE_BASE}_*.log &>/dev/null
if [ $? -eq 0 ];
then
#
# CHECK LAST LINE FROM RECENT FILE
#
FILE_LAST=$(find ${DIR_FILES}/*/${FILE_BASE}_*.log | sort | tail -n 1)
LINE_LAST=$(tail -n 1 ${FILE_LAST})
#
# EXIT IF LASTLINE IS EMPTY
#
if [ "" = "${LINE_LAST}" ];
then
echo "NO NEW MESSAGE";
exit 2;
fi
#
# FINE THEN RECENT LINE NUMBER
#
LINE_NUM=$(grep -Fn "${LINE_LAST}" ${DIR_FILES}/${FILE_TMP})
if [ $? -eq 0 ];
then
#
# TAIL THE NEXT LINE FROM RECENT FILE
# TO NEW FILE
#
LINE_NUM=$(echo ${LINE_NUM}| cut -f1 -d:)
NEXT_LINE_NUM=$(( ${LINE_NUM} + 1 ))
tail -n+${NEXT_LINE_NUM} ${DIR_FILES}/${FILE_TMP} > ${DIR_TARGET}/${FILE_TARGET}
else
#
# ELSE THEN CREATE NEW FILE
#
cp ${DIR_FILES}/${FILE_TMP} ${DIR_TARGET}/${FILE_TARGET}
fi
#
# REMOVE NEWLY CREATED IF EMPTY
#
if [ "$(cat ${DIR_TARGET}/${FILE_TARGET} | wc -l)" = "0" ];
then
rm ${DIR_TARGET}/${FILE_TARGET}
fi
else
#
# IF RECENTLY FILE NOT FOUND
#
echo "RECENT FILE NOT FOUND"
cp ${DIR_FILES}/${FILE_TMP} ${DIR_TARGET}/${FILE_TARGET}
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment