Created
July 24, 2015 02:27
-
-
Save pl12133/2d645b9346ef9b253bfa to your computer and use it in GitHub Desktop.
Check the last time a influxDb Series was updated
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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