當密碼包含$字符時,我們看到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
但是當我運行此命令:
[[email protected] ~]# ./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'
看起來像它應該工作,但不會:
[[email protected] ~]# ./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
如果我手動運行該命令,它也失敗:
[[email protected] ~]# 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
但是,如果我分裂它,它的工作原理!
[[email protected] ~]# su - db2apm
Last login: Tue Nov 29 11:17:56 EST 2016 on pts/3
[[email protected] ~]$ 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到db2的過程中,單個ticks會被剝離,所以到db2看到一個純粹的$ 2016可以擴展(到沒有);逃避'$' –