我有一个由10个Windows 7 Professional工作站组成的系统,join到一个域中。
作为“紧急”系统closures过程的一部分,我想要一个从Linux控制器(这又是一个服务编排工具)触发远程closures的机制。 “紧急”这个词在引用中是因为它并不是真正的紧急情况,但仍然需要一种机制,而不是简单地告诉用户closures工作站。
所以,我看了psexec ,这几乎是理想的,除了似乎只能从另一个Windows机器触发。 ..我想这不是不可能有一个Windows服务器触发工作站关机程序,但这并不理想。
我收集一个选项是安装Cygwin和OpenSSH,但坦率地说,这似乎很笨重 。
我想,理想情况下..程序作为服务运行,具有本地(或域)pipe理员权限,侦听端口,SSLencryption,RESTful API调用,如http://workstation:8888/admin/shutdown?key=secretsharedkey 。
我是否需要用C#.net编写一些东西,或者是否有跨平台触发windows工作站closures的工具?
如何使用Samba软件包中的net工具?
例如:
net rpc shutdown -S workstation1 -U Administrator -w example.com
您可能需要稍微不同的命令行选项,例如-k使用Kerberos进行身份validation; 检查手册页。
你可以使用winexe 。 它使用RPC调用在目标计算机上安装服务,然后使用此服务在其上执行命令。 您可以指定凭据,并且Linux服务器不必是域的成员。
请注意,它是基于Samba代码,但;)
RPC是这样的,但是可能有更多的设置要做,特别是对于Windows Vista,Windows 7和更高版本的Windows,以允许远程关机:
A)Win7机器上的部分设置:
1)运行“secpol.msc”
在程序树中,打开“安全设置/本地策略/用户权限分配”
find条目“强制从远程系统关机”
编辑条目,添加将用于关机的CONCRETE用户(例如:nouknouk)
2)以pipe理员身份运行regedit.exe
findHKLM / SOFTWARE / Microsoft / Windows / CurrentVersion / Policies / System
创build一个名为“LocalAccountTokenFilterPolicy”的新registryDWORD(32)值,然后为其分配值“1”
3)设置远程registry服务:
以pipe理员身份打开“cmd.exe”
执行以下两个命令:
sc config RemoteRegistry start = auto
sc启动RemoteRegistry
B)安装在Linux机器上的一部分:
1)安装“samba-common”包:
这取决于你的Linux发行版,但是对于Debian和推导(Ubuntu,Linux Mint,…),apt-get命令可以这样执行:
apt-get install samba-common
2)要真正closures您的Windows机器的Linux机器,运行以下命令:
net rpc shutdown -f -t 0 -C'message'-U userName%password -I xxx.yyy.zzz.ttt
哪里:
'-f'表示“强制”closures(我认为这是强制性的)
'-t 0'是在做之前的延迟(0表示'现在')。
'-U user%password'是本地用户及其在Windows机器上的密码(在A点已被允许远程关机的密码)。
'-I'是要关机的Windows机器的IP地址。