Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用CCDT文件、用户ID和密码连接到Python中的IBM MQ_Python_Ibm Mq_Tde_Pymqi - Fatal编程技术网

如何使用CCDT文件、用户ID和密码连接到Python中的IBM MQ

如何使用CCDT文件、用户ID和密码连接到Python中的IBM MQ,python,ibm-mq,tde,pymqi,Python,Ibm Mq,Tde,Pymqi,我能够使用带有用户id和Java密码的CCDT文件连接到TDE MQ。我无法用Python实现这一点 在Python中,我已经为MQCHLLIB和MQCHLTAB设置了环境变量,但是当我尝试使用pymqi.connect进行连接时,得到的是MQRC 2538。我的代码如下 import pymqi import os os.environ['MQCHLLIB']='/root/pythonmq/' os.environ['MQCHLTAB']='APPTDECH.TAB' queue_man

我能够使用带有用户id和Java密码的CCDT文件连接到TDE MQ。我无法用Python实现这一点

在Python中,我已经为MQCHLLIB和MQCHLTAB设置了环境变量,但是当我尝试使用pymqi.connect进行连接时,得到的是MQRC 2538。我的代码如下

import pymqi
import os

os.environ['MQCHLLIB']='/root/pythonmq/'
os.environ['MQCHLTAB']='APPTDECH.TAB'

queue_manager = 'QM_APP'
user = "******" 
password = "*****"

qmgr = pymqi.connect(queue_manager, pymqi.CD(),None, user, password )

print('Connected')

qmgr.disconnect()
例外情况是:

pymqi.MQMIError: MQI Error. Comp: 2, Reason 2538: FAILED: MQRC_HOST_NOT_AVAILABLE.

如果有人知道我如何做到这一点,请告诉我。

为了使用CCDT,您必须使用未指定频道内容的
pymqi.connect
版本(例如
pymqi.CD()
),例如

但是,您没有任何参数可以将
用户
密码
放入

简而言之,Python接口没有您需要的所有组合

IBM MQ提供了一个名为
mqccred
的出口,它可以在凭据中为您替换无法更改或无法传递用户id和密码的应用程序

进一步阅读


实现此功能的唯一方法是使用
mqccred
exit。谢谢Josh!。。你说得对。我做了一些更改,但得到了相同的错误。更新通道定义还有一个步骤。我正在研究。您使用的是哪个版本的pymqi?即使是最新版本1.8.0也无法与
mqccred
退出一起工作,除非在
mqccred.ini
文件中指定
Force=TRUE
选项。以下问题已修复,但尚未发布:我正在使用pymqi 1.8版。我有“Force=True”的值,但仍然得到相同的错误。正如在下面的博客文章链接中提到的,我想我需要更新CLNTCONN通道定义以具有SCYEXIT('mqccred(ChlExit)')属性。这是正确的,如果不在CCDT中指定或以编程方式指定客户端安全出口,则无法使用它。您希望使用CCDT而不是直接通过pymqi connect调用指定连接详细信息,这有什么原因吗?嗨,Morag!谢谢你的回答。我正在处理第二部分“通过更新CLNTCONN通道定义以具有SCYEXIT('mqccred(ChlExit)')属性来调用通道出口”。我假设这是在客户端完成的,也就是说无论你在哪里创建你的CCDT。CLNTCONN定义在CCDT中。您当然可以使用
runmqsc-n
在客户端对其进行编辑。另外,如果不明显,退出和配置都在客户端完成。谢谢!!运行runmqsc-n后如何引用CCDT?抱歉问了太多问题!我已经设置了环境变量。MQCHLLIB、MQCHLTAB和MQCCRED。我可以通过运行runmqrc进行编辑。命令已成功执行。现在MQRC代码已更改为2059。pymqi.MQMIError:MQI错误。组件:2,原因2059:失败:MQRC\U Q\U MGR\U不可用。
qmgr = pymqi.connect(queue_manager)