Как удаленно перезапустить сервис на компьютере, защищенном паролем, используя Python? - PullRequest
0 голосов
/ 26 августа 2009

Я решил использовать Python как новый язык для изучения. Первое, что я хочу сделать, это написать скрипт, который позволит мне удаленно перезапускать сервисы на других машинах с моей локальной машины. Как бы я это сделал, если для входа на удаленную машину требуется имя пользователя и пароль? Мне не нужно, чтобы мне давали полное решение, но, возможно, есть некоторые указатели на то, какие библиотеки мне следует использовать, или какие-либо проблемы, которые мне нужно решить при написании сценария.

РЕДАКТИРОВАТЬ: Все удаленные машины используют Windows 2003

Ответы [ 5 ]

3 голосов
/ 26 августа 2009

Взгляните на Ткань , которая основана на paramiko . Это действительно хороший инструмент для автоматизации удаленных задач с помощью Python.

Тканевая документация покажет вам, как легко пользоваться.

3 голосов
/ 26 августа 2009

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

Редактировать : В Windows проще всего использовать утилиту SysInternals psservice , которая вызывается с помощью os.system; это может запустить удаленную службу и принять учетные данные для входа.

Если вы хотите сделать это непосредственно в Python, вам нужно win32service.StartService . Перед этим необходимо открыть диспетчер удаленных сервисов, а затем удаленный сервис. Перед этим вам необходимо выдать себя за пользователя, которому вы хотите выполнить операцию, см. Пример .

1 голос
/ 26 августа 2009

Какая ОС для целевых машин? Если «service» - это «служба Windows NT», а ваш локальный компьютер - также Windows, я бы использовал IronPython в качестве реализации языка Python и обратился бы прямо к средствам WMI в пространстве имен .net System.Management - они предназначены для удаленного администратора, как это.

1 голос
/ 26 августа 2009

Какая ОС работает на вашей удаленной машине? Если это Linux, запустите ssh(1), используя модуль subprocess .

Если это windows, тогда получите win32 extensions . Они позволяют вызывать функции Windows. Должен быть API для доступа к сервисам. Если это не так, есть инструмент под названием sc ( docs ), который можно запустить с помощью модуля подпроцесса.

0 голосов
/ 13 марта 2013

В Windows модуль wmi теперь отлично подходит для этого.

...