mirror of
https://github.com/classilla/tenfourfox.git
synced 2025-01-03 20:30:00 +00:00
63 lines
2.3 KiB
Python
Executable File
63 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python
|
|
# encoding: utf-8
|
|
# Created by Chris AtLee on 2008-11-04
|
|
"""count_and_reboot.py [-n maxcount] -f countfile
|
|
|
|
Increments the value in countfile, and reboots the machine once the count
|
|
reaches or exceeds maxcount."""
|
|
|
|
import os, sys, time
|
|
|
|
if sys.platform in ('darwin', 'linux2'):
|
|
def reboot():
|
|
# -S means to accept password from stdin, which we then redirect from
|
|
# /dev/null
|
|
# This results in sudo not waiting forever for a password. If sudoers
|
|
# isn't set up properly, this will fail immediately
|
|
os.system("sudo -S reboot < /dev/null")
|
|
# After starting the shutdown, we go to sleep since the system can
|
|
# take a few minutes to shut everything down and reboot
|
|
time.sleep(600)
|
|
|
|
elif sys.platform == "win32":
|
|
# Windows
|
|
def reboot():
|
|
os.system("shutdown -f -r -t 0")
|
|
# After starting the shutdown, we go to sleep since the system can
|
|
# take a few minutes to shut everything down and reboot
|
|
time.sleep(600)
|
|
|
|
def increment_count(fname):
|
|
try:
|
|
current_count = int(open(fname).read())
|
|
except:
|
|
current_count = 0
|
|
current_count += 1
|
|
open(fname, "w").write("%i\n" % current_count)
|
|
return current_count
|
|
|
|
if __name__ == '__main__':
|
|
from optparse import OptionParser
|
|
|
|
parser = OptionParser(__doc__)
|
|
parser.add_option("-n", "--max-count", dest="maxcount", default=10,
|
|
help="reboot after <maxcount> runs", type="int")
|
|
parser.add_option("-f", "--count-file", dest="countfile", default=None,
|
|
help="file to record count in")
|
|
parser.add_option("-z", "--zero-count", dest="zero", default=False,
|
|
action="store_true", help="zero out the counter before rebooting")
|
|
|
|
options, args = parser.parse_args()
|
|
|
|
if not options.countfile:
|
|
parser.error("countfile is required")
|
|
|
|
if increment_count(options.countfile) >= options.maxcount:
|
|
if options.zero:
|
|
open(options.countfile, "w").write("0\n")
|
|
print "************************************************************************************************"
|
|
print "*********** END OF RUN - NOW DOING SCHEDULED REBOOT; FOLLOWING ERROR MESSAGE EXPECTED **********"
|
|
print "************************************************************************************************"
|
|
sys.stdout.flush()
|
|
reboot()
|