Мы видим сбой в DB2 CLP, когда пароль содержит символ $. Я извлек команду в простой Баш скрипт:
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
Это чувство, что я стал жертвой какой-то комбинации Баша, су и DB2 CLP потребляя $ в каком-то неожиданном образе. Любые мысли о том, как заставить это работать?
в одиночные тики убираются на пути от su до db2, поэтому к тому времени, когда db2 увидит голый $ 2016, чтобы развернуть (ни к чему); избегайте '$' –