매개변수를 파일에 전달하고 자격 증명을 얻는 데 도움

매개변수를 파일에 전달하고 자격 증명을 얻는 데 도움

저는 스키마 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(명령 읽기 및 실행)구성 파일 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 필드에 특수 문자, 즉 와 같은 쉘 특정 문자가 없다고 가정합니다 &. 있는 경우 추가 따옴표를 추가하도록 (명령을 변경해야 합니다 .awk

관련 정보