帮助将参数传递到文件并获取凭据

帮助将参数传递到文件并获取凭据

我开发了一个 shell 脚本,它使用 schema id 和密码作为参数来使用 sqlplus 登录数据库,运行查询并邮寄结果。

下面是代码片段:

#!/bin/sh
#Two input parameters USER_ID and Password
DB_USER=$1
DB_PWD=$2
result=`sqlplus -s $DB_USER@D1TFDDS/$DB_PWD<<EOF
spool sample.txt
sql query
spool off
EOF`
v1_result=`cat sample.txt | sed -e 's/ //g' | tr " " "\n"`
echo "${v1_result}" > mail.txt
mailx -s "Samplemail" [email protected]  < mail.txt

在这里传递 ID 和密码作为参数来获取结果。我不想将我的凭据传递给脚本,而是可以将其存储在具有受限权限的 .txt 文件中。

并将环境 ID 和架构名称作为参数传递给 .txt 文件,该文件将为我提供用户 ID 和密码。

答案1

source可以配置文件

在你的脚本中你可以这样做:

#!/bin/sh

#...

CONFIG="${HOME}/myconfig"

DB_USER=""
DB_PWD=""

if [ -f "${CONFIG}" ]
then
    . "${CONFIG}"
fi

#...

其中sources(读取并执行命令)a配置文件 myconfig在您的主目录中,如果存在dot operator.

文件内容myconfig

DB_USER="admin"
DB_PWD="insecure"

答案2

如果您将凭据存储在如下文件中:

SCHEMA:DB_USER:DB_PWD

那么你可以这样做:

eval $(grep "^$SCHEMA:" credentials-file | awk -F : '{print "DB_USER=" $2 "; DB_PWD=" $3}')

从那时起,您可以使用 $DB_USER 和 $DB_PWD。

请注意,这假设 DB_USER 或 DB_PWD 字段中没有特殊字符,即 shell 特有的字符,例如;&(。如果有,您将必须更改命令awk以添加额外的引号。

相关内容