2009-07-28 114 views
4

Windows服务我们有一个糟糕的传统的Windows应用程序(已经讨论here)的内容复制从Windows主机许多Linux主机。我们在几个盒子上运行它的几个实例。每个实例都有自己的.ini文件,其中包含一个列表目标服务器。我们经常需要更改这些文件的内容并重新启动流程,这一过程由我们的操作团队亲自完成。我想用一个简单的基于网络的实用程序(在Linux主机上运行)替换它,它允许用户生成配置文件,将它们发送到主机并重新启动服务。生成文件很简单 - 我可能会使用Perl和Template Toolkit - 并且由于服务器导出其配置目录,所以复制数据也相对容易。重新启动,从Linux中

我算什么为重新启动Windows服务的选项? Win32::Service?我还没有机会看到很远,所以如果你说“x::y使这个很容易,但注意z”你会为我节省很多时间。它甚至有可能吗?另外,也许你可以提出一个更好的方法来解决这个问题(可悲的是不是替换掉软件!)我并没有试图懒惰,只是为了避免浪费时间摆弄那些可能不会做我想做的事情的模块。

回答

1

可以使用重新从Windows命令行Windows服务:

net stop service_name 
net start service_name 

您可以通过点击服务窗口属性中找到服务名称。

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

0

最具体的方法是建立一个处理INI的和服务的重新启动的更新Web服务,但考虑到这是一个内部的解决方案,可能是巨大的矫枉过正。

3

Ubuntu包含一个实用工具,可以管理Windows系统,wmic帮助 - WMI Client。通过适当的权限,WMI可以轻松停止并启动Windows服务。

(来自人页,而不是在业务控制的一个例子。)

WMIC -U [域/]管理用户%密码//主机 “SELECT * FROM的Win32_ComputerSystem”

0

我通常远程启动telnet,telnet到框,用“净停止服务名称”和“NET START服务名称”。

2

Winexe可以做到这一点;这是Linux相当于Sysinternal非常有用的PsExec工具。

我用Winexe是一个几年前,所以这可能会改变,但在当时,有一对夫妇的注意事项的最后时间:

  • 货柜码头处理没有很好地执行,所以将非字母数字键输入到远程命令可能很奇怪。如果你正在编写脚本,这不应该是一个问题。
  • 与PsExec一样,Winexe通过在Windows盒子上安装服务来操作,然后告诉该服务运行命令。与PsExec不同的是,它之后并未清理该服务。当Winexe没有做任何事情时,安装的服务是无害的,并且不运行,所以这几乎是无害的。
2

您可以使用Winexe

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

密码'' <之间写 - 手动不要说这个,但它的工作。