I know how to reboot machines remotely, so that’s the easy part. However, the complexity of the issue is trying to setup the following. I’d like to control machines on a network for after-hours use such that when users logoff and go home, or shutdown their computers, whatever, python or some combination of python + windows could restart their machines (for cleanliness) and automatically login, running a process for the night, then in the morning, stop said process and restart the machine so the user could easily login like normal.
I’ve looked around, haven’t had too terribly much luck, though it looks like one could do it with a changing of the registry. That sounds like a rough idea though, modifying the registry on a per-day basis. Is there an easier way?
I can’t think of any way to do strictly what you want off the top of my head other than the registry, at least not without even more drastic measures. But doing this registry modification isn’t a big deal; just change the autologon username/password and reboot the computer. To have the computer reboot when the user logs off, give them a “logoff” option that actually reboots rather than logging off; I’ve seen other places do that.
(edit)FYI: for registry edits, Windows has a REG command that will be useful if you decide to go with that route.(/edit)
Also, what kind of process are you trying to run? If it’s not a GUI app that needs your interaction, you don’t have to go through any great pains; just run the app remotely. At my work, we use psexec to do it very simply, and I’ve also created C++ programs that run code remotely. It’s not that difficult, the way I do it is to have C++ call the WinAPI function to remotely register a service on the remote PC and start it, the service then does whatever I want (itself, or as a staging point to launch other things), then unregisters itself. I have only used Python for simple webpage stuff, so I’m not sure what kind of support it has for accessing the DLLs required, but if it can do that, you can still use Python here.
Or even better yet, if you don’t need to do this remotely but just want it done every night, you can just use the Windows scheduler to run whatever application you want run during the night. You can even do this programmatically as there are a couple Windows commands for that: one is the “at” command, and I don’t recall right now what the other is but just a little Googling should find it for you.