Это мой первый вопрос здесь (и в любом месте по теме perl), так голый со мной. Я пытаюсь написать сценарий для использования с op5/nagios. Что он пытается сделать, так это подключиться к базе данных, получить там значение, а затем отправить запрос в веб-службу и сопоставить ответ из веб-службы со значением из базы данных.Perl :: WSDL. Сгенерированные методы в разных направлениях, чем сценарий
Теперь писать сценарий не было проблемой. Проблема возникает при попытке запустить ее с 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 размещение автоматически сгенерированных файлов в другом каталоге, из которого вы выполняете скрипт?
Помощь любого рода оценили! Маркус
Глядя более внимательно сгенерированных методов все они ссылаются друг на друга. Кажется, для того, чтобы я мог использовать их из другого, мне пришлось бы менять место, когда скрипт выполняется или редактирует «базовый каталог», откуда импортируются методы. Возможно ли это? – user599703
Кажется, мне удалось это решить, добавив
use lib "/opt/plugins/custom/SOAP
– user599703