我正在编写一个Python脚本,它将在一个盒子上管理多个Oracle数据库。每个数据库都有其自己的OracleService,但是它们都在一个TNSListener下运行。因为每台计算机的安装名称可能有所不同,所以我想使其尽可能动态。
首先,我需要启动TNSListener服务。其中大多数位于本地便携式计算机上,仅在我们要使用Oracle数据库时才会启动侦听器。此外,某些笔记本电脑运行不同版本的Oracle,因此实际服务名称不同。为此,我需要找到完整的服务名称或包含字符串'TNSListener'的名称。
第二,所有OracleService名称都将附加在实例名称(即OracleServiceTESTING1)之后。因此,我需要获取计算机上所有OracleService的列表,然后根据服务名称的附加部分显示实例的选择。
我曾考虑过访问注册表并尝试从那里获取服务,但是解析该文件的开销似乎过多。我只是在寻找有关如何查找与字符串'TNSListener'和'OracleService'匹配的所有服务的一般指导。
答案 0 :(得分:0)
我建议使用类似pywinservicemanager的库。用于检查特定服务是否存在的简短代码示例如下所示:
from pywinservicemanager.WindowsServiceConfigurationManager import ServiceExists
serviceName = 'TestService'
serviceExists = ServiceExists(serviceName)
print serviceExists