作为将批处理作业(和使用的EXEC PGM)迁移到其他语言(此处为python)的一部分,面临跨服务器连接的挑战。
我们的目标是将我们的大型机批处理作业中的少数COBOL程序迁移到python。在此过程中,将使用计划程序完全控制某些批处理作业,并且程序将用python脚本重写。但是某些大型机程序将保持不变,并且暂时不会在python中迁移。由于我们目前的目标是部分迁移,因此一些大型机批处理作业需要在云上调用python脚本。我在这里面临挑战,如何从大型机批处理作业中调用python脚本。
我在这个答案中假设COBOL应用程序在大型机上的z / OS操作系统上运行,但是如果该假设不正确,请发布后续报告。
Cschneid有一个很好的答案:只需在大型机上运行Python脚本。可从Rocket Software免费下载适用于z / OS的Python:
https://www.rocketsoftware.com/zos-open-source
如果需要,您可以选择从Rocket Software购买z / OS上的Python支持。 (IBM Z机器的所有Linux发行版还包括Python,通常受Linux发行商支持。)在IBM Z上运行的Python可以直接在基于IBM Z的数据存储/数据库上运行,包括受保护的,z / OS加密的数据集。而且,您可以非常轻松地创建和管理包含跨所有操作系统的IBM Z资源的混合云体系结构。这将是最好的安排,因为否则您可能会遇到运营和管理问题。例如,您不必走太远就可以找到组织的真实实例,这些组织遭受了严重的,对业务有重大影响的批处理调度问题,这些问题完全破坏了他们的支付流程。 (相关地,Python不是企业作业调度程序。)
好的,也就是说,如果您仍然要以这种方式继续执行此(可能是不明智的)路径,那么以下是一些其他选项,但顺序没有特定:
由于功能强大,因此请确保采取合理,适当的步骤来确保此作业提交路径的安全。
https://www.ibm.com/us-en/marketplace/connect-enterprise-edition
https://developer.ibm.com/messaging/mq-downloads/
我在此列表中提供的至少一些选择可以与MQ结合使用,MQ提供有保证的消息传递-如果您要使所有这些都可靠地运行,这将非常有用。
如果单击示例,您将找到一些Python示例代码。
...。还有许多其他可能的方法,因此,如果由于某些原因您不喜欢这些选择中的任何一种,请发表后续报告。
[不知道更多,这个问题就不可能回答。
但是,一般来讲,您可以使用bpxbatch批量发布USS命令。因此,您可以从Rocket Software安装类似curl或wget之类的东西,然后通过REST API调用python,或者在Django或Flask内置的云端类似的东西。如果您确实想做些可怕的事情,则可以编写一个shell脚本,将其ssh到云系统中,然后在远程系统上发出命令。
但是,我意识到您可能对此没有太多发言权,我还要指出蒂莫西·西普尔斯(Timothy Sipples)的回答,并说这不是一个好主意,而且会很脆弱。您将需要多个这样的脚本,因为您需要提交工作,然后稍后再返回以获取结果,并根据结果进行适当的操作。您将必须在这些批处理作业/ shell脚本中构建各种错误处理功能。
[燕尾技术hybrid batch是另一种产品,允许您执行批处理作业中作为步骤执行的远程服务器上驻留的代码,类似于@TimothySipples和@KevinMcKenzie发布的答案中的解决方案。
Cschneid有另一个合理的答案:Dovetailed的Co:Z工具包(“ 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