#!/usr/bin/env python3 import os import sys import time # Minutes before reboot to trigger notification. intervals = [1, 5, 15, 60] def notify(interval): s = "" if interval == 1 else "s" time.sleep((minutes - interval) * 60) message = ('"[commit-confirm] System is going to reboot in ' f'{interval} minute{s} to rollback the last commit.\n' 'Confirm your changes to cancel the reboot."') os.system("wall -n " + message) if __name__ == "__main__": # Must be run as root to call wall(1) without a banner. if len(sys.argv) != 2 or os.getuid() != 0: print('This script requires superuser privileges.', file=sys.stderr) exit(1) minutes = int(sys.argv[1]) # Drop the argument from the list so that the notification # doesn't kick in immediately. if minutes in intervals: intervals.remove(minutes) for interval in sorted(intervals, reverse=True): if minutes >= interval: notify(interval) minutes -= (minutes - interval) exit(0)