gpt4 book ai didi

linux - 包含 '$' 的 db2 命令行处理器和密码

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:22:34 26 4
gpt4 key购买 nike

当密码包含 $ 字符时,我们发现 DB2 CLP 出现故障。我已将该命令提取到一个简单的 bash 脚本中:

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

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

[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”被解释为没有值的脚本变量。对此的一种变体,将整个命令括在单引号中:

su - db2apm -c 'db2 -v attach to APM_NODE user db2apm using apm$2016'

看起来它应该工作,但没有:

[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

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

[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

但如果我拆分它,它就可以工作!

[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 以某种意外方式使用 $ 的某种组合的受害者。关于如何让它运行的任何想法?

最佳答案

如果你只转义美元符号,它应该可以工作(我刚试过时它在我的系统上工作):

su - db2apm -c "db2 -v attach to APM_NODE user db2apm using 'apm\$2016'"

你也可以尝试放入它自己的脚本中:

测试.sh:

db2 -v attach to APM_NODE user db2apm using \''apm$2016'\'

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

db2 -v attach to APM_NODE user db2apm using 'apm$2016'

然后运行它:

su - db2apm test.sh

(注意没有-c)

希望这能解决您的问题!

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

su - db2apm -c "echo db2 -v attach to APM_NODE user db2apm using 'apm\$2016'"

关于linux - 包含 '$' 的 db2 命令行处理器和密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40872179/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com