3

Я хочу создать скрипт, который будет запускаться через SSH-сервер для запуска / остановки службы Windows. Пользователь SSH входит в группу администраторов. Однако, когда я выполняю сценарий, я получаю сообщение об ошибке, в котором говорится, что служба не может быть запущена.

Как я могу гарантировать, что мой скрипт запускается с правами администратора? Я сделал подобные сценарии в Linux, используя sudo service myservice start/stop . Я ищу аналог в Windows, если такая вещь существует.

Моя оболочка ps1 выглядит примерно так:

function start() { Start-Service MyService // verify service started here }

function stop() { Stop-Service MyService // verify service stopped }

function status() { // Return Running/Stopped for MyService }

3 ответа3

4

Я знаю, что вы хотите использовать bash/ssh, но в моем опыте самый простой способ администрирования Windows из Linux - это Python и WMI

http://timgolden.me.uk/python/wmi/index.html

http://timgolden.me.uk/python/wmi/cookbook.html

http://timgolden.me.uk/python/wmi/tutorial.html

import wmi

# Open a connection to a remote machine
c = wmi.WMI (
computer="other_machine",
user="you",
password="something"
)

# start the service
c.<service>.StartService ()

Это будет самый простой способ, который я знаю, если вам не нужен BASH/SSH, если вам нужно использовать SSH, он усложняется, поскольку теперь вам понадобится установить Python и WMI на любой машине, на которой вы хотите запустить это, и в этом случае вы Возможно, вы захотите использовать язык, который уже установлен на каждом компьютере (VBScript, Powershell и т. д.). Этот метод также предполагает, что у вас включена служба WMI на Windows, что некоторые администраторы не любят делать.

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

3

Я хотел бы, чтобы скрипт SSH запускал скрипт powershell. Powershell может поднять себя, а затем начать останавливать службы и проверять их статус.

Некоторый псевдокод:

ssh user@server powershell.bat

Где powershell.bat имеет весь необходимый код, чтобы делать то, что вы хотите с сервисами.

1

start = net rpc service start SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

stop = net rpc service stop SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

status = net rpc service status SERVICENAME -I IPADDRESS -U USERNAME%PASSWORD

Если в вашем пароле есть специальные символы, не используйте их с обратной косой чертой \ .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .