저는 스키마 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