从Linux系统重启Windows服务

5
我们有一个糟糕的遗留Windows应用程序(已经在这里讨论过),它将内容从Windows主机复制到多个Linux主机。我们有几个实例在几个盒子上运行。每个实例都有自己的.ini文件,其中包含目标服务器列表。相当频繁地,我们需要更改这些文件的内容并重新启动进程,这是由我们的运维团队手动完成的。我想用一个简单的基于Web的实用程序(在Linux主机上运行)替换它,允许用户生成配置文件,将它们发送到主机并重新启动服务。生成文件很容易 - 我可能会使用Perl和Template Toolkit - 由于服务器导出其配置目录,因此复制数据也相对容易。
我的选择是重新启动Windows服务?Win32::Service?我还没有仔细看,所以如果你说"x::y很容易做到,但要注意z",你会为我节省很多时间。这是否可能?或者,也许你可以建议更好的方法来解决这个问题(替换软件可悲地不是其中之一!)我不想偷懒,只是想避免浪费时间摆弄可能不符合我的要求的模块。
7个回答

3

Ubuntu包含一个工具,可以帮助管理Windows系统,即wmic - WMI Client。在获得适当的权限后,WMI可以轻松地停止和启动Windows服务。

(这是来自手册页面的例子,不是关于服务控制的例子。)

EXAMPLE

wmic -U [domain/]adminuser%password //host "select * from Win32_ComputerSystem"


2

你可以使用Winexe。

$ winexe -U HOME/Administrator%'Pass123' //host 'cmd /C net stop wuauserv && net start wuauserv && echo AutoUpdates service restarted'

密码写在''之间 <-- 手册没有提到,但这样做可行。


2

Winexe可以实现这一点;它是Linux下类似于Sysinternal非常有用的PsExec工具。

我上次使用Winexe是几年前的事情了,所以可能已经发生了变化,但当时有一些注意事项:

  • 终端处理没有很好地实现,因此在远程命令中键入非字母数字键可能会有问题。如果您正在编写脚本,则不应该出现此问题。
  • 与PsExec一样,Winexe通过在Windows框上安装服务然后告诉该服务运行命令来操作。与PsExec不同的是,它在之后没有清理服务。安装的服务是无害的,并且在Winexe没有执行任何操作时不会运行,因此这基本上是无害的。

1

您可以使用Windows命令行重新启动Windows服务:

net stop service_name
net start service_name

您可以通过在服务窗口中单击属性来查找服务名称。

这可能使您能够编写脚本。


1
尝试使用。
net rpc service list
net rpc service start
net rpc service stop

0
最具体的方法是构建一个Web服务来处理ini文件的更新和服务的重启,但考虑到这是一个内部解决方案,可能会显得过于复杂。

-1

我通常启用 Telnet,远程登录到框中,并使用“net stop ServiceName”和“net start ServiceName”。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接