当我尝试在Shell脚本中提供密码以连接ot DB2时,它失败并显示错误

时间:2018-11-27 10:49:18

标签: shell db2

当我尝试在Shell脚本中提供密码以连接ot DB2时,它失败并显示错误

Shell脚本-----

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

$ sh connectdb2.sh

。在SQL处理期间,它返回:

  

SQL30082N安全处理失败,原因为“ 24”(“ USERNAME”   和/或密码无效”)。SQLSTATE = 08001 DB21034E命令为   因为它不是有效的命令行,所以被处理为SQL语句   处理器命令

但是当我没有在Shell脚本中提供密码时,它会提示您输入密码,并且密码已连接。

我的问题是,我不希望提示密码,而是有人可以通过在外壳脚本中对passowrd进行隐式硬编码来帮助我连接到DB2。

谢谢, 萨姆拉特

2 个答案:

答案 0 :(得分:2)

如果在shell脚本中对密码进行硬编码,则很明显存在安全风险。考虑将密码保存在具有特殊权限的单独文件中,该文件会被脚本插入。

但是,如果您在任何地方对密码进行硬编码,那么如果密码包含对shell有意义的字符(在您的情况下为bash),则必须转义这些字符以确保shell忽略它们。

对于您的密码示例,应为P333vLMP \ $ dFa4M0而不是P333vLMP $ dFa4M0 因为$对shell有特殊的意义。

答案 1 :(得分:0)

您可以将密码用单引号引起来,以免可能被unix shell误解特殊字符。如果您不知道密码是否预先包含一些特殊字符,这可能会很有用。

k_int