#!/usr/bin/env bash #defaults values. will be overwritten by argument parsing if option has been set SOURCE_DIR="/space/projects/Live_Viewer/source/" # directory which will be watched for new files. #SOURCE_DIR="/tmp/data" # directory which will be watched for new files. TARGET_IP="127.0.0.1" # where new files will be send to via network TARGET_PORT="6061" # where new files will be send to via network PARALLEL_DATA_STREAMS=1 # number of parallel streams used to send data to target PYTHON_CMD=$(which python) # executable of python LOG_DIR="/space/projects/Live_Viewer/logs" # place to put logfiles #LOG_DIR="/tmp/log" # place to put logfiles FILE_MOVER_IP="127.0.0.1" # ip-adress of fileMover process, it is waiting for new file events FILE_MOVER_PORT="6060" # port of fileMover process, it is waiting for new file events VERBOSE=0 # set to 1 for more verbose output PID_WATCHFOLDER="" PID_FILEMOVER="" startWatchFolder() { echo "starting 'watcher_lsyncd.py'..." if [ "${VERBOSE}" == "0" ] then ${PYTHON_CMD} watcher_lsyncd.py --watchFolder="${SOURCE_DIR}" \ --logfilePath="${LOG_DIR}" \ --pushServerIp="${FILE_MOVER_IP}" \ --pushServerPort=${FILE_MOVER_PORT} \ --verbose 1>/dev/null 2>/dev/null & else ${PYTHON_CMD} watcher_lsyncd.py --watchFolder="${SOURCE_DIR}" \ --logfilePath="${LOG_DIR}" \ --pushServerIp="${FILE_MOVER_IP}" \ --pushServerPort=${FILE_MOVER_PORT} 1>/dev/null 2>/dev/null & fi local PID=${!} echo "starting 'watcher_lsyncd.py'... started as background job with PID=${PID}" PID_WATCHFOLDER=${PID} #to kill single process #kill -s 24 ${PID} } startFileMover() { echo "starting 'fileMover.py'..." if [ "${VERBOSE}" == "0" ] then ${PYTHON_CMD} fileMover.py --logfilePath="${LOG_DIR}" \ --bindingIpForSocket="127.0.0.1" \ --logfileName="fileMover.log" \ --parallelDataStreams ${PARALLEL_DATA_STREAMS} \ --dataStreamIp="${TARGET_IP}" \ --dataStreamPort="${TARGET_PORT}" 1>/dev/null 2>/dev/null & else ${PYTHON_CMD} fileMover.py --logfilePath="${LOG_DIR}" \ --bindingIpForSocket="127.0.0.1" \ --logfileName="fileMover.log" \ --parallelDataStreams ${PARALLEL_DATA_STREAMS} \ --dataStreamIp="${TARGET_IP}" \ --dataStreamPort="${TARGET_PORT}" \ --verbose 1>/dev/null 2>/dev/null & fi local PID=${!} echo "starting 'fileMover.py'... started as background job with PID=${PID}" PID_FILEMOVER=${PID} #to kill process #kill -s 24 ${PID} } printHelpMessage() { echo "" } printOptions() { printf "\ SOURCE_DIR = %s \n\ TARGET_IP = %s \n\ TARGET_PORT = %s \n\ PARALLEL_DATA_STREAMS = %s \n\ PYTHON_CMD = %s \n\ LOG_DIR = %s \n\ FILE_MOVER_IP = %s \n\ FILE_MOVER_PORT = %s \n\ VERBOSE = %s \n\ " "${SOURCE_DIR}" \ "${TARGET_IP}" \ "${TARGET_PORT}" \ "${PARALLEL_DATA_STREAMS}" \ "${PYTHON_CMD}" \ "${LOG_DIR}" \ "${FILE_MOVER_IP}" \ "${FILE_MOVER_PORT}" \ "${VERBOSE}" } argumentParsing() { local ARGUMENT_COUNT=$# # if [ $ARGUMENT_COUNT -lt 1 ] # then # printHelpMessage # exit 0 # fi while [[ $# > 1 ]] # while true do key="$1" case $key in -s|--parallelDataStreams) PARALLEL_DATA_STREAMS="$2" shift ;; -d|--sourceDirectory) SOURCE_DIR="$2" shift ;; -l|--logDir) LOG_DIR="$2" shift ;; -fmi|--fileMoverIp) FILE_MOVER_IP="$2" shift ;; -fmp|--fileMoverPort) FILE_MOVER_PORT="$2" shift ;; -v|--verbose) VERBOSE=1 shift ;; *) # unknown option ;; esac shift done return 0 } checkDependencies() { local FAILED_DEPENDENCIES=0 #watchdog echo "import watchdog" | python 1> /dev/null 2> /dev/null local DEPENDENCY_WATCHDOG=${?} if [ "${DEPENDENCY_WATCHDOG}" -ne "0" ] then echo "Missing python library: watchdog" FAILED_DEPENDENCIES=1 fi #zeromq echo "import zmq" | python 1> /dev/null 2> /dev/null local DEPENDENCY_WATCHDOG=${?} if [ "${DEPENDENCY_WATCHDOG}" -ne "0" ] then echo "Missing python library: zmq" FAILED_DEPENDENCIES=1 fi #exit on error if [ ${FAILED_DEPENDENCIES} == 1 ] then echo "aborting. missing libraries detected." exit 1 fi } argumentParsing $@ checkDependencies printOptions startWatchFolder startFileMover echo echo "You can now take data in '${SOURCE_DIR}'" echo #get process group of all sub-processed started during the script PROCESS_GROUP_ID=$(ps x -o "%p %r %c" | grep ${PID_FILEMOVER} | awk '{print $2}' | head -n1) echo "to stop execute: kill -- -${PROCESS_GROUP_ID}" echo