我在 CherryPy 服务器中运行一个 Python Web 应用程序,该服务器作为 Windows 服务运行。我有一个批处理文件来部署此应用程序,但我仍然需要远程桌面进入服务器以重新启动服务。有什么方法可以编写脚本吗?
我试过:
psexec \\server "net restart cherrypyservice"
但这似乎不起作用。
答案1
您可以使用 sc 命令行工具,但我不知道如何在 python 中具体执行此操作。
描述:SC 是一个用于与 NT 服务控制器和服务进行通信的命令行程序。用法:sc [命令] [服务名称] ...
The option has the form "\\ServerName"
Further help on commands can be obtained by typing: "sc [command]"
Commands:
query-----------Queries the status for a service, or
enumerates the status for types of services.
queryex---------Queries the extended status for a service, or
enumerates the status for types of services.
start-----------Starts a service.
pause-----------Sends a PAUSE control request to a service.
interrogate-----Sends an INTERROGATE control request to a service.
continue--------Sends a CONTINUE control request to a service.
stop------------Sends a STOP request to a service.
config----------Changes the configuration of a service (persistant).
description-----Changes the description of a service.
failure---------Changes the actions taken by a service upon failure.
qc--------------Queries the configuration information for a service.
qdescription----Queries the description for a service.
qfailure--------Queries the actions taken by a service upon failure.
delete----------Deletes a service (from the registry).
create----------Creates a service. (adds it to the registry).
control---------Sends a control to a service.
sdshow----------Displays a service's security descriptor.
sdset-----------Sets a service's security descriptor.
GetDisplayName--Gets the DisplayName for a service.
GetKeyName------Gets the ServiceKeyName for a service.
EnumDepend------Enumerates Service Dependencies.
The following commands don't require a service name:
sc
boot------------(ok | bad) Indicates whether the last boot should
be saved as the last-known-good boot configuration
Lock------------Locks the Service Database
QueryLock-------Queries the LockStatus for the SCManager Database
示例:sc start MyService
答案2
使用 Russinovich 的服务端:
psservice \\server restart cherrypyservice
答案3
如果您想使用 psexec:
psexec \\Server cmd "/c net stop servicename"
psexec \\Server cmd "/c net start servicename"
不过在这种情况下,建议使用 sc。如果您愿意花钱,它可以满足您的所有需求。
答案4
net stop cherrypyservice
net start cherrypyservice
使用您喜欢的任何远程执行引擎。