reworked log and logError for pipes
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
FG_RED="\e[31m"
|
||||||
BG_RED="\e[41m\e[97m"
|
BG_RED="\e[41m\e[97m"
|
||||||
FG_BLUE="\e[34m"
|
FG_BLUE="\e[34m"
|
||||||
FG_YELLOW="\e[33m"
|
FG_YELLOW="\e[33m"
|
||||||
|
|||||||
@@ -10,9 +10,22 @@ source output.sh
|
|||||||
|
|
||||||
# Include all sensor scripts
|
# Include all sensor scripts
|
||||||
if [ -d "sensor-scripts" ]; then
|
if [ -d "sensor-scripts" ]; then
|
||||||
for script in $(ls sensor-scripts/*.sh 2>/dev/null); do
|
for SCRIPT in $(ls sensor-scripts/*.sh 2>/dev/null); do
|
||||||
log "Loading sensor function $(basename ${script} .sh)"
|
log "Loading sensor function $(basename ${SCRIPT} .sh)"
|
||||||
source "${script}"
|
|
||||||
|
TMP_LOG=$(mktemp /tmp/tmp.sf-XXXXXXXX.log)
|
||||||
|
source "${SCRIPT}" >${TMP_LOG} 2>&1
|
||||||
|
|
||||||
|
if [ $? -ne 0 ] ; then
|
||||||
|
cat ${TMP_LOG} | logError
|
||||||
|
logError "An error occured loading sensor function $(basename ${SCRIPT} .sh)"
|
||||||
|
|
||||||
|
rm ${TMP_LOG}
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
cat ${TMP_LOG} | log
|
||||||
|
rm ${TMP_LOG}
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|||||||
@@ -7,36 +7,78 @@ function _now {
|
|||||||
}
|
}
|
||||||
|
|
||||||
# Write log to stdout
|
# Write log to stdout
|
||||||
|
# Usage: log <text>
|
||||||
|
# Usage with tag: log -t <tag> <text>
|
||||||
|
# Usage with pipe: log -p [<tag>]
|
||||||
function log {
|
function log {
|
||||||
echo "[ $(_now) :: INFO ] $@"
|
if ! [ "${1}" ] || [ "${1}" = "-p" ]; then
|
||||||
}
|
# Read from pipe
|
||||||
|
PREFIX="PIPE"
|
||||||
|
[ "${2}" = "" ] || PREFIX="${2}"
|
||||||
|
|
||||||
# Log with custom tag
|
while read -r LINE; do
|
||||||
function logAdv {
|
echo -e "${FG_YELLOW}[ $(_now) :: ${PREFIX} ] ${LINE}${C_RESET}"
|
||||||
TAG="${1}"
|
done
|
||||||
shift
|
else
|
||||||
|
# Read from arguments
|
||||||
|
PREFIX="INFO"
|
||||||
|
[ "${1}" = "-t" ] && ! [ "${2}" = "" ] && PREFIX="${2}"
|
||||||
|
shift 2
|
||||||
|
|
||||||
echo -e "${FG_BLUE}[ $(_now) :: ${TAG} ] ${@}${C_RESET}"
|
echo "${@}" | while read -r LINE; do
|
||||||
}
|
echo "[ $(_now) :: ${PREFIX} ] ${LINE}"
|
||||||
|
done
|
||||||
# Log tagged for sensor scripts, can be muted with main.sh -qs
|
|
||||||
function logScript {
|
|
||||||
if ! [ "${SCRIPTS_QUIET}" = "yes" ]; then
|
|
||||||
echo -e "[ $(_now) :: SENS ] ${@}"
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Write error to stderr
|
# Write log to stderr
|
||||||
|
# Usage: logError <text>
|
||||||
|
# Usage with tag: logError -t <tag> <text>
|
||||||
|
# Usage with pipe: logError -p [<tag>]
|
||||||
function logError {
|
function logError {
|
||||||
echo -e "${BG_RED}[ $(_now) :: FAIL ] ${@}${C_RESET}" >&2
|
if ! [ "${1}" ] || [ "${1}" = "-p" ]; then
|
||||||
|
# Read from pipe
|
||||||
|
PREFIX="FAIL"
|
||||||
|
[ "${2}" = "" ] || PREFIX="${2}"
|
||||||
|
|
||||||
|
while read -r LINE; do
|
||||||
|
echo -e "${BG_RED}[ $(_now) :: ${PREFIX} ] ${LINE}${C_RESET}" >&2
|
||||||
|
done
|
||||||
|
else
|
||||||
|
# Read from arguments
|
||||||
|
PREFIX="FAIL"
|
||||||
|
[ "${1}" = "-t" ] && ! [ "${2}" = "" ] && PREFIX="${2}"
|
||||||
|
shift 2
|
||||||
|
|
||||||
|
echo "${@}" | while read -r LINE; do
|
||||||
|
echo -e "${BG_RED}[ $(_now) :: ${PREFIX} ] ${LINE}${C_RESET}" >&2
|
||||||
|
done
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
# Write pipe input to stdout
|
# Log tagged for sensor scripts, can be muted with the -qs arg on main.sh
|
||||||
function logPipe {
|
# Usage: logScript <text>
|
||||||
PREFIX="PIPE"
|
# Usage with tag: logScript -t <tag> <text>
|
||||||
[ "${1}" = "" ] || PREFIX="${@}"
|
# Usage with pipe: logScript -p [<tag>]
|
||||||
|
function logScript {
|
||||||
|
if ! [ "${SCRIPTS_QUIET}" = "yes" ]; then
|
||||||
|
if ! [ "${1}" ] || [ "${1}" = "-p" ]; then
|
||||||
|
# Read from pipe
|
||||||
|
PREFIX="SENS"
|
||||||
|
[ "${2}" = "" ] || PREFIX="${2}"
|
||||||
|
|
||||||
while read -r LINE; do
|
while read -r LINE; do
|
||||||
echo -e "${FG_YELLOW}[ $(_now) :: ${PREFIX} ] ${LINE}${C_RESET}"
|
echo -e "[ $(_now) :: ${PREFIX} ] ${LINE}"
|
||||||
done
|
done
|
||||||
|
else
|
||||||
|
# Read from arguments
|
||||||
|
PREFIX="SENS"
|
||||||
|
[ "${1}" = "-t" ] && ! [ "${2}" = "" ] && PREFIX="${2}"
|
||||||
|
shift 2
|
||||||
|
|
||||||
|
echo "${@}" | while read -r LINE; do
|
||||||
|
echo "[ $(_now) :: ${PREFIX} ] ${LINE}"
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
25
inc/sensor-scripts/speedtest.sh
Normal file
25
inc/sensor-scripts/speedtest.sh
Normal file
@@ -0,0 +1,25 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Usage: doSpeedtest [<interface>] [<speedtest-server-id>]
|
||||||
|
function doSpeedtest {
|
||||||
|
if ! [ "${1}" = "" ]; then
|
||||||
|
INTERFACE=${1}
|
||||||
|
INTERFACE_ARG="-I ${INTERFACE}"
|
||||||
|
INTERFACE_TEXT=" from NIC '${INTERFACE}'"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if ! [ "${2}" = "" ]; then
|
||||||
|
SERVER_ID=${2}
|
||||||
|
SERVER_ARG="-s ${SERVER_ID}"
|
||||||
|
SERVER_ID_TEXT=" to server ${SERVER_ID}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
logScript "Doing internet speedtest${INTERFACE_TEXT}${SERVER_ID_TEXT}"
|
||||||
|
|
||||||
|
if ! OUT=$(speedtest -f json); then
|
||||||
|
logError "Speedtest failed"
|
||||||
|
logError "${OUT}"
|
||||||
|
else
|
||||||
|
echo
|
||||||
|
fi
|
||||||
|
}
|
||||||
16
main.sh
16
main.sh
@@ -2,6 +2,16 @@
|
|||||||
cd $(dirname ${0}) >/dev/null
|
cd $(dirname ${0}) >/dev/null
|
||||||
source inc/main-inc.sh
|
source inc/main-inc.sh
|
||||||
|
|
||||||
|
# Test mode, only run specified sensor script once
|
||||||
|
if [[ "${1}" == *".sh" ]]; then
|
||||||
|
log -t "TEST" "Test mode, only running sensor script '${1}'"
|
||||||
|
|
||||||
|
source "sensors.d/${1}"
|
||||||
|
log -t "TEST" "Sensor script quit with exit code $?"
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
START_TIME=$(date +%s)
|
START_TIME=$(date +%s)
|
||||||
|
|
||||||
# Load all sensor scripts and their intervals
|
# Load all sensor scripts and their intervals
|
||||||
@@ -15,7 +25,7 @@ for SCRIPT in $(ls sensors.d/*.sh); do
|
|||||||
SCRIPTS["${BASENAME}"]=${INTERVAL}
|
SCRIPTS["${BASENAME}"]=${INTERVAL}
|
||||||
done
|
done
|
||||||
|
|
||||||
log "Starting Scheduler routine"
|
log "Starting scheduler routine"
|
||||||
|
|
||||||
if [[ "$@" == *"-qs"* ]]; then
|
if [[ "$@" == *"-qs"* ]]; then
|
||||||
log "Will suppress sensor script outputs"
|
log "Will suppress sensor script outputs"
|
||||||
@@ -29,8 +39,8 @@ while true; do
|
|||||||
for SCRIPT in "${!SCRIPTS[@]}"; do
|
for SCRIPT in "${!SCRIPTS[@]}"; do
|
||||||
SCRIPT_EVERY=${SCRIPTS[${SCRIPT}]}
|
SCRIPT_EVERY=${SCRIPTS[${SCRIPT}]}
|
||||||
if [ $( expr ${DIFF} % ${SCRIPT_EVERY} ) -eq 0 ]; then
|
if [ $( expr ${DIFF} % ${SCRIPT_EVERY} ) -eq 0 ]; then
|
||||||
logAdv "SCHD" "Launching $(basename ${SCRIPT})"
|
log -t "SCHD" "Launching $(basename ${SCRIPT})"
|
||||||
source "sensors.d/${SCRIPT}" ${QUIET_SCRIPT_PARAM} &
|
source "sensors.d/${SCRIPT}" &
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user