PPSS can now substitute %ITEM% in commando string for the current item.

This commit is contained in:
Louwrentius 2009-03-01 10:17:27 +00:00
parent f6b9fad83a
commit aa15c6f868

55
ppss.sh
View File

@ -72,7 +72,8 @@ SSH_MASTER_PID=""
PPSS_HOME_DIR="ppss" PPSS_HOME_DIR="ppss"
ITEM_LOCK_DIR="PPSS_ITEM_LOCK_DIR" # Remote directory on master used for item locking. ITEM_LOCK_DIR="PPSS_ITEM_LOCK_DIR" # Remote directory on master used for item locking.
PPSS_LOCAL_WORKDIR="PPSS_LOCAL_WORKDIR" # Local directory on slave for local processing. PPSS_LOCAL_TMPDIR="PPSS_LOCAL_TMPDIR" # Local directory on slave for local processing.
PPSS_LOCAL_OUTPUT="PPSS_LOCAL_OUTPUT" # Local directory on slave for local output.
TRANSFER_TO_SLAVE="0" # Transfer item to slave via (s)cp. TRANSFER_TO_SLAVE="0" # Transfer item to slave via (s)cp.
SECURE_COPY="1" # If set, use SCP, Otherwise, use cp. SECURE_COPY="1" # If set, use SCP, Otherwise, use cp.
REMOTE_OUTPUT_DIR="" # Remote directory to which output must be uploaded. REMOTE_OUTPUT_DIR="" # Remote directory to which output must be uploaded.
@ -303,8 +304,11 @@ do
;; ;;
-c ) -c )
COMMAND=$2 COMMAND=$2
COMMAND=\'$COMMAND\' if [ "$MODE" == "config" ]
add_var_to_config COMMAND "$COMMAND" then
COMMAND=\'$COMMAND\'
add_var_to_config COMMAND "$COMMAND"
fi
shift 2 shift 2
;; ;;
@ -447,9 +451,14 @@ init_vars () {
exit exit
fi fi
if [ ! -e "$PPSS_LOCAL_WORKDIR" ] && [ ! -z "$SSH_SERVER" ] if [ ! -e "$PPSS_LOCAL_TMPDIR" ] && [ ! -z "$SSH_SERVER" ]
then then
mkdir "$PPSS_LOCAL_WORKDIR" mkdir "$PPSS_LOCAL_TMPDIR"
fi
if [ ! -e "$PPSS_LOCAL_OUTPUT" ] && [ ! -z "$SSH_SERVER" ]
then
mkdir "$PPSS_LOCAL_OUTPUT"
fi fi
} }
@ -754,10 +763,10 @@ download_item () {
log DEBUG "Transfering item $ITEM to local disk." log DEBUG "Transfering item $ITEM to local disk."
if [ "$SECURE_COPY" == "1" ] if [ "$SECURE_COPY" == "1" ]
then then
scp -q $SSH_OPTS $SSH_KEY $USER@$SSH_SERVER:"$ITEM_WITH_PATH" $PPSS_LOCAL_WORKDIR scp -q $SSH_OPTS $SSH_KEY $USER@$SSH_SERVER:"$ITEM_WITH_PATH" $PPSS_LOCAL_TMPDIR
log DEBUG "Exit code of transfer is $?" log DEBUG "Exit code of transfer is $?"
else else
cp "$ITEM_WITH_PATH" $PPSS_LOCAL_WORKDIR cp "$ITEM_WITH_PATH" $PPSS_LOCAL_TMPDIR
log DEBUG "Exit code of transfer is $?" log DEBUG "Exit code of transfer is $?"
fi fi
fi fi
@ -774,19 +783,19 @@ upload_item () {
return 1 return 1
fi fi
if [ -e "$PPSS_LOCAL_WORKDIR/$ITEM" ] if [ -e "$PPSS_LOCAL_OUTPUT/$ITEM" ]
then then
log DEBUG "Uploading item $ITEM." log DEBUG "Uploading item $ITEM."
if [ "$SECURE_COPY" == "1" ] if [ "$SECURE_COPY" == "1" ]
then then
scp -q $SSH_OPTS $SSH_KEY $PPSS_LOCAL_WORKDIR/"$ITEM" $USER@$SSH_SERVER:$REMOTE_OUTPUT_DIR scp -q $SSH_OPTS $SSH_KEY $PPSS_LOCAL_OUTPUT/"$ITEM" $USER@$SSH_SERVER:~/$REMOTE_OUTPUT_DIR
ERROR="$?" ERROR="$?"
if [ ! "$ERROR" == "0" ] if [ ! "$ERROR" == "0" ]
then then
log DEBUG "ERROR - uploading of $ITEM failed." log DEBUG "ERROR - uploading of $ITEM failed."
fi fi
else else
cp "$PPSS_LOCAL_WORKDIR/$ITEM" $REMOTE_OUTPUT_DIR cp "$PPSS_LOCAL_OUTPUT/$ITEM" $REMOTE_OUTPUT_DIR
ERROR="$?" ERROR="$?"
if [ ! "$ERROR" == "0" ] if [ ! "$ERROR" == "0" ]
then then
@ -964,7 +973,7 @@ commando () {
then then
ITEM="$SRC_DIR/$ITEM" ITEM="$SRC_DIR/$ITEM"
else else
ITEM="$PPSS_LOCAL_WORKDIR/$ITEM" ITEM="$PPSS_LOCAL_TMPDIR/$ITEM"
fi fi
LOG_FILE_NAME=`echo $ITEM | sed s/^\\\.//g | sed s/^\\\.\\\.//g | sed s/\\\///g` LOG_FILE_NAME=`echo $ITEM | sed s/^\\\.//g | sed s/^\\\.\\\.//g | sed s/\\\///g`
@ -977,7 +986,20 @@ commando () {
else else
echo "HOST = $HOSTNAME" > "$ITEM_LOG_FILE" echo "HOST = $HOSTNAME" > "$ITEM_LOG_FILE"
EXECME='$COMMAND"$ITEM" >> "$ITEM_LOG_FILE" 2>&1' TMP=`echo $COMMAND | grep -i "%ITEM%"`
if [ "$?" == "0" ]
then
echo "ITEM IS $ITEM"
ESCAPED=`echo $ITEM | sed -e s:\\\\\/:\\\\\\\\/:g`
echo "ESCAPED is $ESCAPED"
COMMAND=`echo $COMMAND | sed -e s:%ITEM%:$ESCAPED:g`
echo "COMMAND = $COMMAND"
EXECME='$COMMAND >> "$ITEM_LOG_FILE" 2>&1'
echo EXECME is "$EXECME"
else
EXECME='$COMMAND"$ITEM" >> "$ITEM_LOG_FILE" 2>&1'
echo EXECME is "$EXECME"
fi
eval "$EXECME" eval "$EXECME"
ERROR="$?" ERROR="$?"
@ -1089,10 +1111,14 @@ main () {
start_ppss_on_node "$NODE" start_ppss_on_node "$NODE"
done done
fi fi
cleanup
exit 0
;; ;;
config ) config )
log INFO "Generating configuration file $CONFIG" log INFO "Generating configuration file $CONFIG"
add_var_to_config PPSS_LOCAL_TMPDIR "$PPSS_LOCAL_TMPDIR"
add_var_to_config PPSS_LOCAL_OUTPUT "$PPSS_LOCAL_OUTPUT"
cleanup cleanup
exit 0 exit 0
;; ;;
@ -1154,10 +1180,7 @@ do
if [ ! -z "$REMOTE_OUTPUT_DIR" ] if [ ! -z "$REMOTE_OUTPUT_DIR" ]
then then
log INFO "Transfering all processed items back to server." log INFO "Transfering all processed items back to server."
for x in `ls -1 $PPSS_LOCAL_WORKDIR` upload_item "$x"
do
upload_item "$x"
done
fi fi
log INFO "Killing listener and remainig processes." log INFO "Killing listener and remainig processes."
log INFO "Dying processes may display an error message." log INFO "Dying processes may display an error message."