【发布时间】:2018-03-12 19:23:15
【问题描述】:
我正在尝试编写一个用于 op5/nagios 的脚本。 它试图做的是连接到数据库并在那里获取一个值,然后向 Web 服务发送一个请求,并将来自 Web 服务的响应与来自数据库的值进行匹配。
现在编写脚本不是问题。尝试从 OP5 运行时出现问题。
当包含脚本接口时,我使用以下语法
use MyInterfaces::PortalServicesImplService::PortalServicesImplPort;
当我执行与“MyInterfaces”位于同一级别的脚本时,这工作得很好。
问题在于脚本本身位于文件夹 /opt/plugins/custom/SOAP 中,脚本和由 wsdl2perl.pl 生成的文件夹都位于该文件夹中。但是,当 OP5 执行脚本时,脚本是从文件夹 /opt/monitor 执行的。
所以我尝试使用这种语法包含“PortalServicesImplPort”
use lib "/opt/plugins/custom/SOAP/MyInterfaces/PortalservicesImplServices/PortalServicesImplPort
代码可以编译,但是在尝试运行它时,我收到一条错误消息
Can't locate object method "new" via package "MyInterfaces::PortalServicesImplService::PortalServicesImplPort" (perhaps you forgot to load "MyInterfaces::PortalServicesImplService::PortalServicesImplPort"?)
从其他位置导入方法时我做错了什么还是 SOAP::WSDL 不支持将自动生成的文件放在与执行脚本不同的目录中?
【问题讨论】:
-
更仔细地查看生成的方法,它们都相互引用。似乎为了让我能够从另一个人那里使用它们,我必须在执行脚本时更改位置或更改从其中导入方法的“基本目录”..这甚至可能吗?
-
似乎我自己通过添加
use lib "/opt/plugins/custom/SOAP解决了这个问题
标签: perl-module