Skip to content

Instantly share code, notes, and snippets.

@ldante86
Created November 7, 2016 20:45
Show Gist options
  • Save ldante86/dca1822f6da1fef40efddb1f969fa056 to your computer and use it in GitHub Desktop.
Save ldante86/dca1822f6da1fef40efddb1f969fa056 to your computer and use it in GitHub Desktop.
Get uptime and second conversion
#!/bin/bash -
PROGRAM="${0##*/}"
IFS="."
for i in $(cat /proc/uptime)
do
UPTIME=$i
break
done
SECONDS_IN_DAY=86400
SECONDS_IN_HOUR=3600
MINUTES_IN_HOUR=60
SECONDS_IN_MINUTE=60
VERBOSE=0
HELP="\
$PROGRAM - report uptime and second conversion
Usage: $PROGRAM [-h] [-v] [-s sec]
-h show this help and exit
-v show verbose output
-s sec convert seconds to formatted time\
"
while [ $# -gt 0 ]
do
case $1 in
-h|--h*)
echo "$HELP"
exit
;;
-v|--v*)
shift
VERBOSE=1
;;
-s|--s*)
shift
if [ "$1" ]; then
case $1 in
*[!0-9]*)
echo "invalid argument - $1"
echo "$HELP"
exit 1
;;
*)
UPTIME=$1
shift
;;
esac
else
echo "-s flag requires an argument."
echo "$HELP"
exit 1
fi
;;
*)
echo "invalid flag - $1"
echo "$HELP"
exit 1
;;
esac
done
case $VERBOSE in
0)
days=$(( UPTIME / SECONDS_IN_DAY ))
SECONDS=$(( UPTIME % SECONDS_IN_DAY ))
printf "%02d:%02d:%02d:%02d\n" "$days" "$((SECONDS / SECONDS_IN_HOUR))" \
"$(((SECONDS / MINUTES_IN_HOUR) % MINUTES_IN_HOUR))" "$((SECONDS % SECONDS_IN_MINUTE))"
;;
1)
days=$(( UPTIME / SECONDS_IN_DAY ))
SECONDS=$(( UPTIME % SECONDS_IN_DAY ))
printf "$days days, $((SECONDS / SECONDS_IN_HOUR)) hours, "
printf "$(((SECONDS / MINUTES_IN_HOUR) % MINUTES_IN_HOUR)) minutes, "
printf "$((SECONDS % SECONDS_IN_MINUTE)) seconds\n"
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment