• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

求教关于DDM file的问题。

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 27次 | 进入软件测试论坛讨论

领测软件测试网
我们有两台400在局域网上。我在其中一台400中建立一个DDM file,远程的实际文件为另一台400上的PF。可是我用DFU试图输入数据到这个ddm file时出错:

CPF9190:Authorization failure on DDM TCP/IP connection attempt. 
Cause . . . . . :   A connection attempt failed with reason code 17.
...
...
    17 -- The security mechanism requested by the client is not supported or   
  allowed at the server. See recovery information below.                       
Recovery  . . . :   Correct the problem indicated by the reason code if        
  possible, and attempt to connect again.  A common cause for reason code 17   
  is that the server requires a password but the client sends only a user ID,  
  or the server requires an encrypted (substitute) password, which an AS/400   
  client does not support at this time.  A DB2/400 server can be configured to 
  not require a password or an encrypted password by using the CHGDDMTCPA CL   
  command.                                                                     
                                                                               
看样子是在连接另外一台400时只发送了用户名而没有发送口令,所以登录失败。但是我不知道登录用户名和口令如何才能发送以使其能正确登录。请高手执教!!

 xuguopeng 回复于:2005-08-29 10:29:49
使用CHGDDMTCPA命令  系统提示的已经很清楚了 就不知道看看。。

 mickeycheng 回复于:2005-08-29 10:37:35
如果修改 CHGDDMTCPA 的参数PWDRQD(*NO),则会有系统安全的问题。所以不希望修改此参数的啊!谢谢你的回复!但是我不希望修改此参数。。。

 qingzhou 回复于:2005-08-29 11:15:13
是按如下步骤的执行过程出错的吗?

1. 首先确保双方系统上的分布式处理服务已启动:
===>STRTCPSVR SERVER(*DDM)

2. 为目标系统创建DDM文件:
===>CRTDDMF FILE(LIB/TESTDDM) RMTFILE(LIB/MYPF) RMTLOCNAME(s65f6f8b *IP)
其中:TESTDDM是DDM文件名; MYPF是远程系统s65f6f8b上要操作的文件的名称。

3. 在本地系统上运行更新MYPF文件命令: 
 ===> SBMRMTCMD CMD(' QSYS/UPDDTA FILE(LIB/MYPF) ') DDMFILE(LIB/TESTDDM)

 mickeycheng 回复于:2005-08-29 12:33:45
是按如下步骤:
1、远程400中DDM服务已经运行
2、本地400中建立DDM FILE
     CRTDDMF FILE(TSTLIB/TSTDDMF) RMTFILE(TZKMLIB/STUPF)
         RMTLOCNAME('10.0.0.10' *IP)  
3、本地400中运行:
      UPDDTA  TSTLIB/TSTDDMF
结果报以上错误。

 qingzhou 回复于:2005-08-29 12:59:32
本地400执行:[b:12b430033b]===>SBMRMTCMD CMD(' UPDDTA FILE(TSTLIB/TSTDDMF) ')  DDMFILE(TSTLIB/TSTDDMF)[/b:12b430033b]后的结果呢?

 mickeycheng 回复于:2005-08-29 13:06:36
执行:SBMRMTCMD CMD(' UPDDTA FILE(TSTLIB/TSTDDMF) ')  DDMFILE(TSTLIB/TSTDDMF)
或者
SBMRMTCMD CMD(' UPDDTA FILE(TZKMLIB/STUPF) ')  DDMFILE(TSTLIB/TSTDDMF)
后的结果:
都是报如下错误:
CPF9190:Authorization failure on DDM TCP/IP connection attempt. 
Cause . . . . . :   A connection attempt failed with reason code 17

 qingzhou 回复于:2005-08-29 13:26:08
[b:94c5a1acfb]===>WRKMSGD CPF9190[/b:94c5a1acfb]
[code:1:94c5a1acfb]
                              显示格式化信息文本                                
                                                              系统 :   S65F6F8B 
 信息 ID  . . . . . . . . . . :   CPF9190                                       
 信息文件 . . . . . . . . . . :   QCPFMSG                                       
   库 . . . . . . . . . . . . :     QSYS2989                                    
                                                                                
  消息 . . . . . :    尝试 DDM TCP/IP 连接时授权失败。                          
  原因 . . . . . :    尝试连接失败,原因代码是 &1 。原因代码及其含义如下:      
   0 --  未知的原因。                                                           
   1 --  密码到期。                                                             
   2 --  密码无效。                                                             
   3 --  密码丢失。                                                             
   4 --  协议违例。                                                             
   5 --  找不到用户标识。                                                       
   6 --  用户标识无效。对于 iSeries 服务器来说,这可能表示损坏的用户概要文件或  
     PASSWORD(*NONE) 。                                                         
   7 --  用户标识被撤销或禁用。                                                 
   15 --  对服务器进行安全性处理时失败。                                        
   16 --  新密码无效。                                                          
                                                                       尚有 ... 
 按“执行”键以继续。                                                           
                                                                                
 F3= 退出   F11= 显示非格式化信息正文   F12= 取消                               
                                                                                
[/code:1:94c5a1acfb]

[code:1:94c5a1acfb]
                              显示格式化信息文本                                
                                                              系统 :   S65F6F8B 
 信息 ID  . . . . . . . . . . :   CPF9190                                       
 信息文件 . . . . . . . . . . :   QCPFMSG                                       
   库 . . . . . . . . . . . . :     QSYS2989                                    
                                                                                
   17 --  客户机所要求的安全机制在服务器上不受支持或不允许。查看下面的恢复息。                                                          
   22 --  对客户机进行安全性处理时失败。      

                                  
  恢复 . . . . . :    若有可能,则更正由原因代码指示的问题,并尝试再次连接。原因代码 17 的常见原因是服务器需要密码,但客户机只发送了用户标识,或服务器需要加密的密码,但客户机未发送加密的密码。可以使用CHGDDMTCPA CL 命令将iSeries DDM 服务器配置为不需要密码或加密密码。                               
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                         底部   
 按“执行”键以继续。                                                           
                                                                                
 F3= 退出   F11= 显示非格式化信息正文   F12= 取消                               
                                                                              
[/code:1:94c5a1acfb]

17代码提示在400的安全机制这关过不去,DDM文件的创建过程都没问题,如果在创建DDM文件时修改参数: ===> CRTDDMF FILE(LIB/TESTDDM) RMTFILE(LIB/MYPF) RMTLOCNAME('x.x.x.x'  *IP) AUT(*CHANGE) 估计也没多大意义。                                            
执行了===> CHGDDMTCPA AUTOSTART(*YES) PWDRQD(*NO) 就可以通过,对吗?
但哪边可以追加密码呢?奇怪。。。 :roll:

 mickeycheng 回复于:2005-08-29 13:41:08
执行 CHGDDMTCPA AUTOSTART(*YES) PWDRQD(*NO) 之后,
upddta就能正常读取和修改远程的PF的数据!

但是偶不希望修改DDMTCP属性啊!

偶也在找到底在哪里登录用户名和密码呢。。。
找啊找。。。

 qingzhou 回复于:2005-08-29 13:52:02
[b:569df3f0cf]启动 *DDM TCP 服务后,对应如下2点:[/b:569df3f0cf]

1、当这个TCP 服务启动时,系统提交 QRWTLSTN 批作业到 QSYSWRK 子系统的 QSYSNOMAX 作业队列中,同时在 QSYSWRK 中还可发现预起作业 QRWTSRVR,二个作业的用户为QUSER。
2、如果上述命令执行成功,用户可用 NETSTAT *CNN 命令找到名‘DRDA’的端口处于侦听状态,默认端口号应为:446。

[b:569df3f0cf]如果启动 *DDM的TCP服务:DRDA出错,可以按照如下进行诊断和处理。[/b:569df3f0cf]

1、如果提交STRTCPSVR *DDM 命令后,但446 端口不处于侦听状态,则用WRKJOB QRWTLSTN 检查 QRWTLSTN 生成的作业记录。
2、当首次启动STRTCPSVR *DDM时,系统在IFS中 /QIBM/ProdData/OS400/DRDA 目录中创建名为endSock 的 UNIX 套接字,在这目录路径中每个目录必须存在,否则QRWTLSTN会自动结束,并在作业记录中发现错误信息:
MSGCPE3465 F/QRWXDLL *STMT T/QRWXDLL *STMT, No such file or directory.
此时用户应该用MDDIR创建所需的目录。

可问题现在不是DDM出错呀,是AS/400的安全机制过关不了。

CHGDDMTCPA AUTOSTART(*YES) PWDRQD(*NO)就会造成系统不安全了吗?应该不会,要实施DDM服务,首先需要利用USERPRF登陆OS/400;其次要具备*SERVICE权限才能启动*DDM服务,所以即使修改了PWDRQD(*NO)问题也是不大。

问题有点棘手,只能再想想看~~~ :roll:

 mickeycheng 回复于:2005-08-29 14:04:55
如果使用CHGDDMTCPA AUTOSTART(*YES) PWDRQD(*NO),则任意用户都可以修改远程400的数据库文件了,因为没有用户合法性校验,这势必会造成系统安全隐患啊。

谢谢你答复。一起再找找看。。。

 qingzhou 回复于:2005-08-29 14:14:56
是否先要用ADDRDBDIRE创建数据库连接,在创建时设定参数 RMTAUTMTH(*USRIDPWD),然后再启动DDM服务STRTCPSVR *DDM,这样应该实现了不需要执行CHGDDMTCPA AUTOSTART(*YES) PWDRQD(*NO)修改参数,同时也保证了数据安全,因为系统会提示输入USRPRF和PASSWORD才能执行更新PF。

测试看看是否如此?



ADDRDBDIRE命令




ADDRDBDIRE RMTAUTMTH(*USRIDPWD) 参数


 mickeycheng 回复于:2005-08-29 14:40:57
老兄用什么版本的os?我的怎么没有这个参数?






 mickeycheng 回复于:2005-08-29 14:45:36
我想是不是需要追加APPC设备?我不懂APPC,请阁下指点一二。。。

 qingzhou 回复于:2005-08-29 14:58:58
本地OS/400 V5R2。

APPC是高级程序到程序通信(Advance Program Program Communication),这里应该还用不上这个玩意。

你直接用:
 [b:b687101f03]===> ADDRDBDIRE RDB(RMTRDB) RMTLOCNAME(X.X.X.X *IP) TEXT('CONNECT REMOTE AS/400 BY DDM SERVIC') RMTNETID(S65xxxxx) [/b:b687101f03]    
创建远程AS/400数据库目录,可以不用理睬RMTAUTMTH(*USRIDPWD)参数。

 mickeycheng 回复于:2005-08-29 15:13:48
刚刚试过,追加了远程数据库目录,然后运行UPDDTA试图修改DDM File,但是问题依旧。。。

 qingzhou 回复于:2005-08-29 15:35:13
[quote:eb8f1f5d66="mickeycheng"]刚刚试过,追加了远程数据库目录,然后运行UPDDTA试图修改DDM File,但是问题依旧。。。[/quote:eb8f1f5d66]
如何追加的?把命令帖出来看看。
没有V5R2环境吗?本地没有双机环境,否则可以自行测试。

遗憾。。。 :shock:

另外,可以看看以下资料了解一下DDM用法。

http://www.chinaunix.net/jh/10/463457.html

 mickeycheng 回复于:2005-08-29 16:02:10
就是使用你上面提供的ADDRDBDIRE。。。追加的。

谢谢你提供的链接,看了一下,其中4.5讲到安全性,“在DDM中必须注意安全性。DDM在目标系统和源系统中都有LOCPWD(location password)、SECURE(Secure location)参数可进行设置。具体如下图:”我没有看到图,而且也不知道locpwd和secure这两个参数在哪里。着急啊!

 qingzhou 回复于:2005-08-29 16:24:10
这个资料是代号是“胖老头”的朋友发表的,把这个帖子顶出来,向他要图片,这个可能就是解决这个问题的突破点了。。。 :m01:

 mickeycheng 回复于:2005-08-29 16:44:24
Thank you!偶赶紧找他,呵呵。。。

 kempzhang 回复于:2005-08-29 16:49:03
学到不少......

 qingzhou 回复于:2005-08-30 09:18:45
参照cy767朋友的回帖,试试以下处理办法,希望可以解决问题。

1、DSPSYSVAL QRETSVRSEC检查系统值是否为“1”,如果不是修改为“1=保留数”:
[code:1:679aa435f0]
                                  显示系统值                                    
                                                                                
 系统值 . . . . . . . . :   QRETSVRSEC                                          
 描述 . . . . . . . . . :    保留服务器安全性数据                               
                                                                                
                                                                                
 保留服务器安全性数据 . :   1              0= 不保留数据                        
                                           1= 保留数据                          
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
                                                                                
 按“执行”键继续。                                                             
                                                                                
 F3= 退出   F12= 取消                                                           
                                                                                
[/code:1:679aa435f0]

2、 在目标服务器上执行 ADDSVRAUTE +F4命令,添加验证信息:






 mickeycheng 回复于:2005-08-30 11:28:40
刚刚试过,还是不行!出错信息和先前的一样!~~~~~~~~~

 mickeycheng 回复于:2005-08-30 11:29:58
>> UPDDTA FILE(FTPLIB/TST)                                         
   Database connection started over TCP/IP or a local socket.      
   Database TCP/IP or local socket connection ended.               
   Authorization failure on DDM TCP/IP connection attempt.         
   Errors occurred while using DDM file TST.

 mickeycheng 回复于:2005-08-30 11:38:03
刚刚试过:在源服务器上执行ADDSVRAUTE命令,
结果成功!!

终于解决了!谢谢各位热心的朋友!THANK YOU!!

 qingzhou 回复于:2005-08-30 12:31:59
恭喜、我也由衷感到高兴。 :mrgreen: 

加精存档备用。 :m01:

 胖老头 回复于:2005-08-30 13:12:30
嘿嘿,刚看到帖子。没有参加到讨论中,真可惜了。

我这里的DDMF是SNA 的,不是TCP的。DMTCP属性是 PWDRQD(*YES),系统值QRETSVRSEC是'0',但可以通过UPDDTA增加、删除记录。

 qingzhou 回复于:2005-08-30 13:15:50
[quote:2c62fb45af="胖老头"]嘿嘿,刚看到帖子。没有参加到讨论中,真可惜了。

我这里的DDMF是SNA 的,不是TCP的。DMTCP属性是 PWDRQD(*YES),系统值QRETSVRSEC是'0',但可以通过UPDDTA增加、删除记录。[/quote:2c62fb45af]
现在还来得及,把那篇资料的图片补上吧。。。 :mrgreen:

 mickeycheng 回复于:2005-08-30 14:15:59
DDM File问题是解决了。但是我最初的想法是通过DDM DataQ通讯。见

http://bbs.chinaunix.net/forum/viewtopic.php?t=587737

这个我到现在还没试通!主要的难点是建立DDM DataQ时,
RMTLOCNAME等参数不知道如何设置,这里不允许输入IP的。希望大虾们能继续指教!!

 xuguopeng 回复于:2005-08-30 14:56:27
如果实在不行 有个笨办法

在CFGTCP 10中做一个远程系统名和IP的映射 然后在RMTLOCNAME中写远程系统的名字 就等于写IP了

 mickeycheng 回复于:2005-08-30 15:05:22
我追加了映射。我PING 这个映射名都能通的,但是发送数据到DATAQ中时报错:
Remote location S101558M for program device DDMDEVICE was not found.   
Cannot establish DDM connection with remote system.               
Operation on DDM data queue ZKMDTAQ in TSTLIB failed.

 xuguopeng 回复于:2005-08-30 15:12:22
这个DDMDEVICE是什么东东?

 mickeycheng 回复于:2005-08-30 15:21:37
偶也不知道如何会出来个DDMDEVICE。用
WRKOBJ OBJ(*ALL/DDMDEVICE) OBJTYPE(*ALL)命令去找,没有找到任何对象!

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网