远程关闭 Windows 工作站(从 Linux)

远程关闭 Windows 工作站(从 Linux)

我有一个由 10 个 Windows 7 Professional 工作站组成的系统,这些工作站都加入到了一个域。

作为“紧急”系统关闭程序的一部分,我希望有一种从 Linux 控制器(反过来,它是一种服务编排工具)触发远程关闭的机制。“紧急”一词之所以加引号,是因为它不是真的紧急情况,但仍然需要一种机制,而不是简单地告诉用户关闭工作站。

所以,我研究了一下psexec,这几乎是理想的,但似乎只能从另一台 Windows 机器上触发。...我想让 Windows 服务器触发工作站关机过程并非不可能,但这并不理想。

我了解到一个选项是安装 Cygwin 和 OpenSSH,但坦率地说,这似乎笨重

理想情况下,我想要的是一个作为服务运行的程序,具有本地(或域)管理员权限,监听端口,进行 SSL 加密的 RESTful API 调用,例如http://workstation:8888/admin/shutdown?key=secretsharedkey

我是否需要用 C#.net 编写一些内容,或者是否存在可以跨平台触发 Windows 工作站关闭的工具?

答案1

如何使用netSamba 包中的工具?

例如:

net rpc shutdown -S workstation1 -U Administrator -w example.com

您可能需要稍微不同的命令行选项,例如-k使用 Kerberos 进行身份验证;检查手册页。

答案2

您可以使用操作系统。它使用 RPC 调用在目标计算机上安装服务,然后使用此服务在其上执行命令。您可以指定凭据,并且 Linux 服务器不必是域的成员。

当心尽管基于 Samba 代码 ;)

答案3

RPC 是一种方式,但可能需要进行更多设置,特别是对于 Windows Vista、Windows 7 和其他 Windows 版本,以允许远程关机:

A)在 Win7 机器上进行的部分设置:

1)运行“secpol.msc”

  • 在程序树中,打开“安全设置/本地策略/用户权限分配”

  • 找到条目“从远程系统强制关机”

  • 编辑条目,添加用于关机的具体用户(例如:nouknouk)

2)以管理员身份运行 regedit.exe

  • 找到 HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System

  • 创建一个名为“LocalAccountTokenFilterPolicy”的新注册表 DWORD(32) 值,然后为其赋值“1”

3)设置远程注册服务:

  • 以管理员身份打开“cmd.exe”

  • 执行以下两个命令:

    sc config RemoteRegistry 启动 = 自动

    sc 启动 RemoteRegistry

B)在 Linux 机器上进行的部分安装:

1)安装“samba-common”包:

这取决于你的 Linux 发行版,但对于 Debian 及其衍生版本(Ubuntu、Linux Mint 等),apt-get 命令可以像这样执行:

apt-get 安装 samba-common

2)要从 Linux 计算机实际关闭 Windows 计算机,请运行以下命令:

net rpc shutdown -f -t 0 -C ‘消息’ -U 用户名%密码 -I xxx.yyy.zzz.ttt

在哪里:

  • '-f' 表示“强制”关机(我认为这是强制性的)

  • '-t 0' 是执行之前的延迟(0 表示“现在”)。

  • '-U user%password' 是 Windows 机器上的本地用户及其密码(在 A 点被允许执行远程关机的机器)。

  • ‘-I’ 是要关闭的 Windows 机器的 IP 地址。

相关内容