Skip to content

Instantly share code, notes, and snippets.

@pl12133
Created July 24, 2015 02:27
Show Gist options
  • Save pl12133/2d645b9346ef9b253bfa to your computer and use it in GitHub Desktop.
Save pl12133/2d645b9346ef9b253bfa to your computer and use it in GitHub Desktop.
Check the last time a influxDb Series was updated
#!/bin/bash
# Returns latest measurement from a series
# $1 = Series name
__getMeasurement() {
curl "http://weatherspot.us/db/query.php?db=weather&q=SELECT+temperature+FROM+${1}+LIMIT+1" 2>/dev/null
}
# Returns latest timestamp from a series
# $1 = Series name
__getLatestTimeStamp() {
echo "$(__getMeasurement ${1})" \
| sed 's/"points":/\r\n/' \
| tail -n 1 \
| tr ',' '\n' \
| head -n 1 \
| sed 's/\[\[//'
}
# Returns the ammount of seconds since this series has had an update
# $1 = Series name
__howLongSinceUpdated() {
declare latest="$(__getLatestTimeStamp ${1})"
latest=$(printf "%d" "${latest}" 2>/dev/null)
if [ "$latest" -eq 0 ]; then
echo "-1"
else
latest=$(( ${latest} / 1000 ))
declare now="$(date +%s)"
echo "$(( ${now} - ${latest} ))"
fi
}
# Prints a seconds value as a string
# $1 = number of seconds
# $2 = series name
__secondsToStr() {
if [ $# -gt 0 ]; then
declare lastUpdated="${1}"
declare timeStr=""
if [ "$lastUpdated" -le 0 ]; then
echo "Error: Series Not Found"
exit
fi
if [ $lastUpdated -gt 86400 ]; then
declare days=$(( $lastUpdated / 86400 ))
lastUpdated=$(( $lastUpdated - 86400 * $days ))
declare hours=$(( $lastUpdated / 3600 ))
lastUpdated=$(( $lastUpdated - 3600 * $hours ))
declare minutes=$(( $lastUpdated / 60 ))
lastUpdated=$(( $lastUpdated - 60 * $minutes))
declare seconds=$(( $lastUpdated ))
timeStr="${days} days ${hours} hours ${minutes} minutes ${seconds} seconds"
elif [ $lastUpdated -gt 3600 ]; then
declare hours=$(( $lastUpdated / 3600 ))
lastUpdated=$(( $lastUpdated - 3600 * $hours ))
declare minutes=$(( $lastUpdated / 60 ))
lastUpdated=$(( $lastUpdated - 60 * $minutes))
declare seconds=$(( $lastUpdated ))
timeStr="${hours} hours ${minutes} minutes ${seconds} seconds"
elif [ $lastUpdated -gt 60 ]; then
declare minutes=$(( $lastUpdated / 60 ))
lastUpdated=$(( $lastUpdated - 60 * $minutes))
declare seconds=$(( $lastUpdated ))
timeStr="${minutes} minutes ${seconds} seconds"
else
declare seconds=$(( $lastUpdated / 60 ))
timeStr="${seconds} seconds"
fi
echo "It has been ${timeStr} since ${2} has been updated"
fi
}
# Main
# $1 = series name
if [ $# -gt 0 ]; then
__secondsToStr "$(__howLongSinceUpdated ${1})" "${1}"
echo "$(__howLongSinceUpdated ${1})"
else
echo "Usage: $0 series"
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment