Когда я пытаюсь предоставить пароль в сценарии оболочки для подключения к DB2, происходит сбой и отображается ошибка - PullRequest
0 голосов
/ 27 ноября 2018

Когда я пытаюсь предоставить пароль в сценарии оболочки для подключения к DB2, происходит сбой и отображается ошибка

сценарий оболочки -----

#!/bin/bash
getResults()
{
db2 "connect to xyz user sam using P333vLMP$dFa4M0"
echo "Connected"
}
getResults

$ sh connectdb2.sh

.Во время обработки SQL он возвратил:

SQL30082N Ошибка обработки безопасности по причине «24» («ИМЯ ПОЛЬЗОВАТЕЛЯ И / ИЛИ ПАРОЛЯ НЕДЕЙСТВИТЕЛЬНО»).SQLSTATE = 08001 DB21034E Команда была обработана как оператор SQL, поскольку она не была действительной командой процессора командной строки

Но когда я не предоставляю пароль в сценарии оболочки, он запрашивает пароль, и этоСоединение.

Мой вопрос заключается в том, что я не хочу, чтобы пароль запрашивался, а может кто-нибудь, пожалуйста, помогите мне подключиться к DB2 путем неявного жесткого кодирования passowrd в сценарии оболочки.Самрат

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Вы можете заключить свой пароль в одинарные кавычки, чтобы избежать возможной неверной интерпретации специальных символов оболочкой unix.Это может быть полезно, если вы заранее не знаете, содержит ли пароль какой-либо специальный символ.

printf "Password: "; stty -echo; read pwd; stty echo; db2 "connect to xyz user sam using '${pwd}'"
0 голосов
/ 27 ноября 2018

Если вы жестко закодировали пароль в сценарии оболочки, это явная угроза безопасности.Подумайте о том, чтобы иметь пароль в отдельном файле со специальными правами доступа, который указывается вашим сценарием.

Однако, если вы где-нибудь жестко закодируете пароль, тогда, если пароль содержит символы, которые имеют значение для оболочки (в вашемcase bash), то вы должны экранировать эти символы, чтобы гарантировать, что оболочка их игнорирует.

Для вашего примера пароля вместо P333vLMP $ dFa4M0 это должно быть P333vLMP \ $ dFa4M0, потому что $ имеет особое значение для оболочки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...