我们公司构建了一个基于服务器的 C++ 应用程序,可以通过 Windows 安装程序进行安装。
我希望能够远程登录到全新的 Windows 服务器,安装该 C++ 应用程序以及测试套件,并从 Linux 工作站执行此操作。我还想使用从 Linux 工作站运行的 Bash 脚本来自动执行此过程。
对于 Linux 服务器来说,这非常简单。首先从运行 sshd 的基本配置开始,使用 scp 将服务器端 bash 脚本从 Linux 客户端移动到服务器,然后从 Linux 客户端通过 ssh 进入 Linux 服务器并运行 bash 脚本。
但是当客户端是 Linux,但服务器是 Windows Server(例如 2k8r2)时,我该怎么做呢?
我正在考虑使用 Chef Solo 来完成其中的一些任务,但我仍然需要安装 Chef Solo。我该如何从 Linux 工作站远程执行此操作。
答案1
您可以尝试使用 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
知识库 942817有一些关于如何在部署目标时设置该注册表值的信息。请注意,这显然存在安全隐患。