Here is a Python script to reboot a remote Windows server. It requires the Python Win32 Extensions to be installed.
# Reboot a remove server import win32security import win32api import sys import time from ntsecuritycon import * def RebootServer(message='Server Rebooting', timeout=30, bForce=0, bReboot=1): AdjustPrivilege(SE_SHUTDOWN_NAME) try: win32api.InitiateSystemShutdown(None, message, timeout, bForce, bReboot) finally: # Remove the privilege we just added. AdjustPrivilege(SE_SHUTDOWN_NAME, 0) def AbortReboot(): AdjustPrivilege(SE_SHUTDOWN_NAME) try: win32api.AbortSystemShutdown(None) finally: # Remove the privilege we just added. AdjustPrivilege(SE_SHUTDOWN_NAME, 0) def AdjustPrivilege(priv, enable=1): # Get the process token. flags = TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY htoken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), flags) # Get the ID for the system shutdown privilege. id = win32security.LookupPrivilegeValue(None, priv) # Obtain the privilege for this process. # Create a list of the privileges to be added. if enable: newPrivileges = [(id, SE_PRIVILEGE_ENABLED)] else: newPrivileges = [(id, 0)] # and make the adjustment. win32security.AdjustTokenPrivileges(htoken, 0, newPrivileges) if __name__=='__main__': message = 'This server is pretending to reboot\nThe shutdown will stop in 10 seconds' RebootServer(message) print 'Sleeping for 10 seconds' time.sleep(10) print 'Aborting shutdown' AbortReboot()
Note: This code came from somewhere on the net and was not attributed to anyone. If you wrote it, let me know.
1 comment:
The code is from Mark Hammond's book, "Python Programming on Win32", published by O'Reilly in 2000, pp 305-306
Post a Comment