#!/usr/bin/env python

   ##########################################################
  #   Written 11/10/2010 and released under the GNU/GPLv2  ##
 #  (c) Jeff Schroeder (jeffschroeder@computer.org)       # #
##########################################################  #
#                                                        #  #
# randsleep - Sleep for a random number of seconds to    #  #
#             randomize the time  before  running  an    #  #
#             arbitrary command. Useful in  crontabs.    #  #
#                                                        # #
##########################################################

import sys
from time import sleep
from os.path import basename
from random import randrange

DEFAULT_SLEEP_SECS = 60
NAME = sys.argv[0]

usage_string = """
Usage: %s [OPTIONAL SECONDS TO SLEEP]

Sleep a random number of seconds defaulting to a number <= %s.

Example:
    %s %s
""" % (basename(NAME), DEFAULT_SLEEP_SECS, NAME, randrange(DEFAULT_SLEEP_SECS + 1) )

if len(sys.argv) == 1:
    # Add + 1 because randrange picks a random number
    # less   than   the   number   you    feed    it.
    SLEEP_SECONDS = randrange(DEFAULT_SLEEP_SECS + 1)
elif len(sys.argv) == 2 and str(sys.argv[1]).isdigit():
    SLEEP_SECONDS = randrange(int(sys.argv[1]) )
else:
    sys.stderr.write(usage_string.lstrip() )
    sys.exit(1)

try:
    sleep(SLEEP_SECONDS)
except KeyboardInterrupt:
    sys.stderr.write("\nExiting due to CTRL-c\n")
    sys.exit(15)
