Наша компания создает серверное приложение C ++, которое может быть установлено установщиком Windows.
Я хотел бы иметь возможность удаленно войти на новый сервер Windows, установить это приложение C ++ вместе с набором тестов и сделать это с рабочей станции Linux. Я также хотел бы автоматизировать этот процесс с помощью сценария Bash, который я запускаю со своей рабочей станции Linux.
С сервером Linux это сделать довольно просто. Вы начинаете с базовой конфигурации с запущенным sshd, используете scp для перемещения серверного сценария bash с клиента Linux на сервер, а затем ssh на сервер Linux из клиента Linux и запускаете сценарий bash.
Но как мне это сделать, если клиент - Linux, а сервер - Windows Server (например, 2k8r2)?
Я думаю об использовании Chef Solo для некоторых из них, но мне все равно придется установить Chef Solo. Как бы мне сделать это удаленно с рабочей станции Linux.
Вы можете попробовать использовать winexe
для этого он имитирует psexec
из Linux. Пакет с исходным кодом (версия 1.00) фактически использует дерево исходных текстов Samba с этой утилитой в качестве дополнения.
Если в вашем дистрибутиве этого нет, вы можете скомпилировать его самостоятельно. Для версии 1.00 распакуйте tar-файл и оттуда:
$ cd source4
$ ./autogen.sh
$ ./configure
(Вам понадобится подходящая среда сборки и Python 2.) Исполняемый файл находится в папке bin
подкаталог после этого.
При первом запуске инструмента он установит (и запустит) службу на удаленном хосте Windows. Последующие звонки намного быстрее.
Пример использования:
./bin/winexe //hostname -U domain\\account "cmd.exe /c dir c:\\"
Мне пришлось установить раздел реестра, чтобы он работал на целевой Windows 7 (требуется перезагрузка):
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\policies\system
Key: LocalAccountTokenFilterPolicy
DWORD value: 1
KB 942817 есть информация о том, как установить это значение реестра при развертывании целевых объектов. Обратите внимание, что это явно имеет последствия для безопасности.