#!/bin/bash USAGE="Usage: $0 --hostname --interface --username --password [--sleep ] " # default values SLEEPTIME=120 # read parameters while :; do case "$1" in --hostname) shift; HOSTNAME="$1"; shift ;; --interface) shift; INTERFACE="$1"; shift ;; --username) shift; USERNAME="$1"; shift ;; --password) shift; PASSWORD="$1"; shift ;; --sleep) shift; SLEEPTIME="$1"; shift ;; -*) # Unexpected option echo $USAGE exit 2 ;; *) break ;; esac done # Required Parameters if [ -z "$HOSTNAME" -o -z "$INTERFACE" -o -z "$USERNAME" -o -z "$PASSWORD" ]; then echo $USAGE exit 2 fi function GetNextJobInQueue { local HOSTNAME=$1 local INTERFACE=$2 local USERNAME=$3 local PASSWORD=$4 JOBS_IN_QUEUE=$(curl 'https://'${HOSTNAME}'/xml/jobqueue' --data-urlencode "Interfacename=${INTERFACE}" --user ${USERNAME}:${PASSWORD} --silent --fail --show-error ) RETVAL=$? if [ $RETVAL -ne 0 ]; then echo "Could not get jobqueue via http request: https://${HOSTNAME}/xml/jobqueue?Interfacename=${INTERFACE}. Maybe username:password wrong? Please check." return 255; fi if [ "$JOBS_IN_QUEUE" == "" ]; then FOUND_JOBFILE=""; echo "No job in ${INTERFACE} queue" return; fi JOBS_IN_QUEUE=($JOBS_IN_QUEUE); FOUND_JOBFILE=${JOBS_IN_QUEUE[0]} } function GetJob { local HOSTNAME=$1 local INTERFACE=$2 local JOBNAME=$3 local USERNAME=$4 local PASSWORD=$5 HTTP_STATUS=$(curl --output ${JOBNAME} --write-out "%{http_code}" --data-urlencode "Interfacename=${INTERFACE}" --data-urlencode "Jobname=${JOBNAME}" 'https://'${HOSTNAME}'/xml/job' --user ${USERNAME}:${PASSWORD} --silent --fail --show-error) RETVAL=$? if [ $RETVAL -ne 0 -o $HTTP_STATUS -ne 200 ]; then echo "Could not get job via http request: https://${HOSTNAME}/xml/job?Interfacename=${INTERFACE}. Maybe username:password wrong? Please check." return 255; fi echo "Fetched ${JOBNAME} (HTTP-status-code ${HTTP_STATUS})" } function ProcessJob { local JOBNAME=$1 echo "Processing ${JOBNAME}" } # Loop endless while [ 1 == 1 ]; do GetNextJobInQueue $HOSTNAME $INTERFACE $USERNAME $PASSWORD if [ "$FOUND_JOBFILE" != "" ]; then GetJob $HOSTNAME $INTERFACE $FOUND_JOBFILE $USERNAME $PASSWORD ProcessJob $FOUND_JOBFILE fi # Sleep until next poll-cycle sleep $SLEEPTIME done