Перезагрузите Windows-машины в определенное время суток и автоматически войдите в систему с помощью Python - PullRequest
1 голос
/ 18 июня 2010

Я знаю, как перезагружать машины удаленно, так что это легко.Тем не менее, сложность проблемы пытается настроить следующее.Я хотел бы управлять машинами в сети для использования в нерабочее время, чтобы, когда пользователи выходят из системы и уходят домой или выключают свои компьютеры, что угодно, python или некоторая комбинация окон python + могли перезагружать свои машины (для чистоты) и автоматически входить в систему, запустив процесс на ночь, а затем утром, остановите указанный процесс и перезапустите машину, чтобы пользователь мог легко войти в систему, как обычно.

Я посмотрел вокруг, мне не слишком повезло,хотя, похоже, можно было бы сделать это с изменением реестра.Это звучит как грубая идея, изменяя реестр на ежедневной основе.Есть ли более простой способ?

Ответы [ 3 ]

3 голосов
/ 18 июня 2010

Возможно, вы захотите запустить любую программу, которую вы рассматриваете как Служба Windows , если только вам абсолютно не нужен рабочий стол. Есть несколько вопросов, касающихся этого, например, здесь и здесь , а также рецепты на Активное состояние . Для этого не нужно запускать компьютер или входить в него.

Также всегда есть возможность запланированных задач, а что нет. Это может быть сделано программно через Python, например, как в этом сообщении в блоге .

Что касается включения выключенных компьютеров, хотя я ничего с ним не делал, я знаю, что Windows поддерживает Wake-on-LAN функциональность, и, кажется, есть некоторые хорошие ресурсы , включая, опять же, рецепт в ActiveState .

Если вам нужен рабочий стол для запуска вашей программы, я не думаю, что у вас есть какой-либо выбор, кроме как связываться с реестром, чтобы разрешить автологины, так как я не верю, что GINA Window может быть в любой форме или в виде сценария.

1 голос
/ 18 июня 2010

Я не могу придумать, как делать строго то, что вы хотите, не считая реестра, по крайней мере, без более решительных мер. Но делать это изменение реестра не имеет большого значения; просто измените имя пользователя / пароль autologon и перезагрузите компьютер. Чтобы перезагрузить компьютер, когда пользователь выходит из системы, дайте ему опцию «выход из системы», которая фактически перезагружается, а не выходит из системы; Я видел, как это делают другие места.

(edit) К сведению: для редактирования реестра в Windows есть команда REG, которая будет полезна, если вы решите пойти по этому маршруту. (/ Edit)

Кроме того, какой процесс вы пытаетесь запустить? Если это не приложение с графическим интерфейсом, которое требует вашего взаимодействия, вам не нужно проходить через большие трудности; просто запустите приложение удаленно. На моей работе мы используем psexec, чтобы сделать это очень просто, и я также создал программы на C ++, которые запускают код удаленно. Это не так сложно, так как я делаю это, чтобы C ++ вызывал функцию WinAPI для удаленной регистрации службы на удаленном ПК и запуска ее, затем служба делала все, что я хочу (сама, или в качестве промежуточной точки для запуска других вещей). ), затем отменяется регистрация. Я использовал Python только для простых веб-страниц, поэтому я не уверен, какая поддержка у него для доступа к необходимым DLL, но если он может это сделать, вы все равно можете использовать Python здесь.

Или, что еще лучше, если вам не нужно делать это удаленно, а просто делать это каждую ночь, вы можете просто использовать планировщик Windows для запуска любого приложения, которое вы хотите запустить ночью. Вы даже можете сделать это программно, так как для этого есть пара команд Windows: одна - это команда «at», и я сейчас не помню, что такое другая, но только небольшой поиск в Google должен найти ее для вас.

0 голосов
/ 19 июня 2010

Спасибо за ответы. Для большей ясности в том, что я делаю, у меня есть программа, которая автоматически запускается при загрузке, поэтому вход в систему предпочтительнее. Я пишу менеджер для фермы рендеринга для работы, которая возьмет все машины, которые наши парни используют в течение дня, и превратит их в серверы рендеринга ночью (или всякий раз, когда они выходят из системы, например).

Я не уверен, что мне обязательно потребуется приложение с графическим интерфейсом, но компьютер должен был бы загрузиться и войти в систему, чтобы запустить серверное приложение, выполняющее рендеринг, и я не уверен, что это можно сделать без входа в систему. Что мне нужно для запуска, так это Autodesk's Backburner Server.exe

Может быть, это можно запустить без особой необходимости входа в систему, но я не знаю, как делать подобные вещи.

...