Как я могу вызвать скрипты Python на удаленном сервере из z / OS? - PullRequest
0 голосов
/ 07 октября 2019

В рамках переноса пакетных заданий (и с использованием EXEC PGM) на другой язык (Python здесь), сталкивающихся с проблемой в межсерверном соединении.

Мы стремимся перенести несколько наших пакетных заданий мэйнфреймов на COBOL-программы впитон. В этом процессе некоторые пакетные задания будут полностью контролироваться с помощью планировщиков, а программы будут переписываться в скриптах Python. Но некоторые программы для мэйнфреймов останутся без изменений и пока не будут перенесены в python. Поскольку на данный момент мы нацелены на частичную миграцию, некоторые пакетные задания мэйнфреймов должны вызывать скрипты python в облаке. Здесь я сталкиваюсь с проблемой, как вызывать скрипты Python из пакетных заданий мэйнфреймов.

Ответы [ 4 ]

3 голосов
/ 08 октября 2019

Я предполагаю, что в этом ответе приложения COBOL выполняются в операционной системе z / OS на вашем мэйнфрейме, но если это предположение неверно, пожалуйста, опубликуйте продолжение.

Cschneid имеет отличныйответ: просто запустите скрипты Python на своем мэйнфрейме. Python для z / OS можно бесплатно загрузить с Rocket Software здесь:

https://www.rocketsoftware.com/zos-open-source

При желании вы можете приобрести поддержку Python для z / OS в Rocket Software. (Все дистрибутивы Linux для компьютеров IBM Z также включают Python, обычно поддерживаемый дистрибьютором Linux.) Python, работающий на IBM Z, может напрямую работать с хранилищами данных / базами данных на основе IBM Z, включая хорошо защищенные, зашифрованные z / OS наборы данных. И вы можете довольно легко создавать и управлять гибридными облачными архитектурами, которые включают ресурсы IBM Z во всех операционных системах. Это было бы наилучшим решением, так как в противном случае у вас могут возникнуть проблемы с эксплуатацией и управлением. Вам не нужно заглядывать очень далеко, чтобы найти реальные примеры организаций, которые пострадали от серьезных, чрезвычайно важных для бизнеса проблем пакетного планирования, которые, например, полностью разрушили их платежные процессы. (Кроме того, Python не является планировщиком заданий предприятия).

Хорошо, это говорит о том, что если вы все еще собираетесь идти по этому (возможно, неразумному) пути таким образом, то вот некоторые другие опции, в частностиorder:

  1. Сконфигурируйте z / OS Management Facility (входит в базовую, включенную, поддерживаемую функцию в z / OS) и используйте его авторизованные API REST для отправки заданий. Подробности доступны здесь (предполагается z / OS 2.4, но эта функция доступна во всех поддерживаемых в настоящее время выпусках z / OS и даже ранее):

https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.4.0/com.ibm.zos.v2r4.izua700/IZUHPINFO_API_RESTJOBS.htm

Убедитесь, что выпредпринять разумные, соответствующие шаги для обеспечения этого пути передачи задания, поскольку он достаточно мощный.

Оснастите свою установку z / OS программным продуктом IBM z / OS Connect Enterprise Edition, создайте необходимые REST API (как простые, так и мощные) и вызывайте их из Python. Более подробная информация о z / OS Connect EE доступна здесь:

https://www.ibm.com/us-en/marketplace/connect-enterprise-edition

Если у вас есть MQ для z / OS, то возьмите MQ-клиент, отправьте соответствующим образом отформатированное сообщение MQ из Python в соответствующим образом настроенную очередь MQ в z / OS и таким образом вызывайте / запускайте свои программы. (MQ Advanced для z / OS рекомендуется для Advanced Message Security.) Клиенты MQ бесплатны для неограниченного использования при подключении ко всем поддерживаемым IBM лицензионным версиям MQ и MQ Advanced для z / OS, поддерживаемым в настоящее время. Последние выпуски MQ и MQ Advanced for z / OS также поддерживают API-интерфейсы REST (и полезные нагрузки JSON), поэтому вы можете форматировать свои сообщения таким образом прямо сейчас. Клиенты MQ доступны для загрузки здесь:

https://developer.ibm.com/messaging/mq-downloads/

По крайней мере, некоторые из вариантов, которые я предоставляю в этом списке, могут быть объединены с MQ, который обеспечивает гарантированный обмен сообщениями -- что очень полезно, если вы пытаетесь заставить все это работать надежно.

Узнайте, какой планировщик заданий предприятия установлен на вашем мэйнфрейме (возможно, он есть), и используйте его авторизованные API для планирования и запуска программ. Например, IBM Z Workload Scheduler предоставляет авторизованные API REST. Обратитесь к этой документации для ознакомления:

https://www.ibm.com/support/knowledgecenter/en/SSRULV_9.5.0/com.ibm.tivoli.itws.doc_9.5/common/src_dgd/awsddrestapi.htm

Если вы перейдете к образцам, вы найдете пример кода Python.

.. ... И есть много других возможных способов, поэтому, если по какой-то причине вам не нравится какой-либо из этих вариантов, пожалуйста, опубликуйте продолжение.

2 голосов
/ 09 октября 2019

У Cschneid есть другой разумный ответ: Dovetailed's Co: Z Toolkit («Гибридная партия z / OS»). Вот еще несколько возможностей в произвольном порядке:

  1. Клиентский веб-инструмент z / OS, включающий поддерживаемую IBM функцию в базовой операционной системе z / OS. Этот инструментарий позволяет вызывать REST API практически из любой программы в z / OS. Образец КОБОЛ доступен здесь:

https://github.com/IBM/zOS-Client-Web-Enablement-Toolkit

z / OS Connect Enterprise Edition, которая является двунаправленной.

Планировщик заданий предприятия, часто устанавливаемый и размещаемый в z / OS, обычно может запускать и управлять «удаленными» задачамив других системах. IBM Z Workload Scheduler (например), безусловно, может, и здесь есть целое руководство, обсуждающее эту тему:

https://www.ibm.com/support/knowledgecenter/SSRULV_9.5.0/com.ibm.tivoli.itws.doc_9.5/eqqlwmst.pdf

Удаленные вызовы процедур (RPC), в соответствии с IETF RFC 1831 и 1832. Если вы используете программу COBOL с RPC, вы вызываете интерфейсы C, незначительный бит программирования на разных языках.
1 голос
/ 09 октября 2019

Dovetailed Technologies гибридная партия - это еще один продукт, который позволяет выполнять код, находящийся на удаленных серверах, в виде этапов пакетной работы, аналогично решениям в ответах, опубликованных @TimothySipples и @ KevinMcKenzie.

0 голосов
/ 08 октября 2019

Не зная больше, на этот вопрос невозможно ответить.

Однако, вообще говоря, вы можете выдавать USS-команды из пакета, используя bpxbatch . Таким образом, вы можете установить что-то вроде curl или wget из Rocket Software , а затем вызывать python через REST API, или что-то подобное в облачной среде, встроенное в Django или Flask. Если вы действительно хотите сделать что-то ужасное, вы можете написать сценарий оболочки, который будет подключаться к ssh к облачной системе, и выполнить команду на удаленной системе.

Однако, и я понимаю, что вы, вероятно, не имеетеМного говоря об этом, я бы также указал на ответ Тимоти Сиппла и сказал, что это не очень хорошая идея, и она будет хрупкой. Вам понадобится несколько таких сценариев, потому что вам нужно будет отправить работу, а затем вернуться позже и получить результаты, и вести себя соответствующим образом на основе результатов. Вам нужно будет встроить всевозможные возможности обработки ошибок в эти пакетные задания / сценарии оболочки.

...