Estou tentando escrever um script que se conectará ao Oracle a partir de um servidor de salto (ou seja, executarei meu script de um servidor de salto. No meu script, terei um arquivo de configuração como abaixo
#USERNAME PASSWORD TNSNAMES SUCCESS/FAIL
ODB ODB123 ODB1
CDC CDC123 CDC1
Então, agora eu vou passar o arquivo de configuração em um loop e vou executar
${ORACLE_HOME}/bin/sqlplus -S ${USER}/${PASSWORD}@${TNSNAMES}
Então, executando a consulta acima pela primeira vez em um loop. Ele deve tentar fazer login no servidor usando o nome de usuário e a senha acima e deve gravar no arquivo config
como PASS
se a conexão foi bem-sucedida e FAIL
se a conexão falhar.
#USERNAME PASSWORD TNSNAMES SUCCESS/FAIL
ODB ODB123 ODB1 PASS
CDC CDC123 CDC1 FAIL
E, novamente, ele deve ler o arquivo config
atualizado e, se for PASS, ele deverá entrar no banco de dados e fazer os respectivos sqls que chamarmos. E deve ignorar o banco de dados se FAIL
.
Eu tentei o script abaixo que gravará o conteúdo em outro arquivo.
#!/bin/sh
. ~/.ODBenv
cat test.txt | grep '^#' > test1.txt
cat test.txt | grep -v '^#' | awk 'NF'|while read i;do
#if [ -z "$i" ]
#then
#break;
#fi
user_name='echo $i|awk {'print $1'}'
password='echo $i|awk {'print $2'}'
TNS_NAME='echo $i|awk {'print $3'}'
echo "exit" | ${ORACLE_HOME}/bin/sqlplus -S ${user_name}/${password}@${TNS_NAME} |grep -E 'ORA|SP2' > /dev/null
if [ $? -ne 0 ]
then
echo -e "${user_name}\t ${password}\t ${TNS_NAME}\t PASS">>test1.txt
else
echo -e "${user_name}\t ${password}\t ${TNS_NAME}\t FAIL">>test1.txt
fi
done
#done < test.txt|grep -v "^#" | awk "NF"
Eu tentei escrever o mesmo conteúdo em um novo arquivo e o script acima funcionou.
Qualquer ideia de como escrever no arquivo original, como PASSA / FALHA. Arquivo original é como mencionado abaixo.
#USERNAME PASSWORD TNSNAMES SUCCESS/FAIL
ODB ODB123 ODB1
CDC CDC123 CDC1