首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >db2命令行处理器&包含“$”的密码

db2命令行处理器&包含“$”的密码
EN

Stack Overflow用户
提问于 2016-11-29 17:34:32
回答 1查看 577关注 0票数 1

当密码包含$字符时,我们在DB2 CLP中看到一个失败。我将命令解压缩成一个简单的bash脚本:

代码语言:javascript
复制
su - db2apm -c "db2 -v attach to APM_NODE user db2apm using 'apm$2016'"

IBM文档建议引用特殊字符应该有效:

http://www-01.ibm.com/support/docview.wss?uid=swg21303153

但是当我运行这个命令时:

代码语言:javascript
复制
[root@picard ~]# ./test.sh
+ su - db2apm -c 'db2 -v attach to APM_NODE user db2apm using '\''apm016'\'''
attach to APM_NODE user db2apm using
SQL30082N  Security processing failed with reason "24" ("USERNAME AND/OR
PASSWORD INVALID").  SQLSTATE=08001

如您所见,'$2‘被解释为没有值的脚本变量。这方面的一个变体,用单引号将整个命令括在一起:

代码语言:javascript
复制
su - db2apm -c 'db2 -v attach to APM_NODE user db2apm using apm$2016'

看起来应该有效,但没有:

代码语言:javascript
复制
[root@picard ~]# ./test.sh
+ su - db2apm -c 'db2 -v attach to APM_NODE user db2apm using apm$2016'
attach to APM_NODE user db2apm using
SQL30082N  Security processing failed with reason "24" ("USERNAME AND/OR
PASSWORD INVALID").  SQLSTATE=08001

如果我手动运行该命令,它也会失败:

代码语言:javascript
复制
[root@picard ~]# su - db2apm -c 'db2 -v attach to APM_NODE user db2apm using apm$2016'
attach to APM_NODE user db2apm using
SQL30082N  Security processing failed with reason "24" ("USERNAME AND/OR
PASSWORD INVALID").  SQLSTATE=08001

但如果我分了它,它就能用了!

代码语言:javascript
复制
[root@picard ~]# su - db2apm
Last login: Tue Nov 29 11:17:56 EST 2016 on pts/3
[db2apm@picard ~]$ db2 -v 'attach to APM_NODE user db2apm using apm$2016'
attach to APM_NODE user db2apm using

   Instance Attachment Information

 Instance server        = DB2/LINUXX8664 10.5.6
 Authorization ID       = DB2APM
 Local instance alias   = APM_NODE

这感觉就像我是一些bash、su和DB2 CLP以某种意想不到的方式消费$的组合的牺牲品。有什么办法能让这一切顺利进行吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-29 17:50:20

如果你只是逃避了美元符号,它就会起作用(当我刚刚尝试的时候,它在我的系统上起作用了):

代码语言:javascript
复制
su - db2apm -c "db2 -v attach to APM_NODE user db2apm using 'apm\$2016'"

您也可以尝试将其放入自己的脚本中:

test.sh:

代码语言:javascript
复制
db2 -v attach to APM_NODE user db2apm using \''apm$2016'\'

(我不确定是否需要转义引号,如果不需要转义,可以尝试以下方法:)

代码语言:javascript
复制
db2 -v attach to APM_NODE user db2apm using 'apm$2016'

然后运行它:

代码语言:javascript
复制
su - db2apm test.sh

(注:没有-c)

希望这能解决你的问题!

编辑:此外,如果这仍然没有帮助,您可以尝试通过在echo调用前面放置一个db2来调试它,这样您就可以看到正在展开的内容以及如何展开:

代码语言:javascript
复制
su - db2apm -c "echo db2 -v attach to APM_NODE user db2apm using 'apm\$2016'"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40872179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档