Ajuda para passar parâmetros para um arquivo e buscar as credenciais

0

Eu desenvolvi um script de shell que pega o id do esquema e a senha como parâmetro para acessar o banco de dados usando o sqlplus, executa uma consulta e envia o resultado por e-mail.

Abaixo está o trecho de código:

#!/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

Aqui estou passando id e senha como parâmetro para buscar o resultado. Eu não quero passar minhas credenciais para o script, em vez disso posso armazená-lo em um arquivo .txt com permissão restrita.

E passe say id do ambiente e nome do esquema como parâmetro para o arquivo .txt que me fornecerá ID do usuário e senha.

    
por karthik adiga 06.05.2015 / 07:13

2 respostas

1

Você pode usar source a arquivo de configuração .

No seu script, você pode fazer:

#!/bin/sh

#...

CONFIG="${HOME}/myconfig"

DB_USER=""
DB_PWD=""

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

#...

qual sources (lê e executa comandos a partir de) um arquivo de configuração myconfig em seu diretório inicial, se presente com o dot operator .

Conteúdo do arquivo myconfig :

DB_USER="admin"
DB_PWD="insecure"
    
por 06.05.2015 / 09:37
0

Se você armazenar as credenciais em um arquivo como este:

SCHEMA:DB_USER:DB_PWD

então você pode fazer:

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

A partir de então, você pode usar $ DB_USER e $ DB_PWD.

Observe que isso pressupõe que não haja caracteres especiais no campo DB_USER ou DB_PWD, ou seja, caracteres especiais para o shell, como ; , & , ( e assim por diante. Se houver, você terá que alterar o comando awk para adicionar cotações extras.

    
por 06.05.2015 / 09:00