점프 서버에서 Oracle에 연결하기 위한 스크립트를 작성하려고 합니다. 즉, 점프 서버에서 스크립트를 실행하고 스크립트에는 아래와 같은 구성 파일이 있습니다.
#USERNAME PASSWORD TNSNAMES SUCCESS/FAIL
ODB ODB123 ODB1
CDC CDC123 CDC1
이제 구성 파일을 반복해서 살펴보겠습니다.
${ORACLE_HOME}/bin/sqlplus -S ${USER}/${PASSWORD}@${TNSNAMES}
따라서 루프에서 처음으로 위의 쿼리를 실행하면 됩니다. 위의 사용자 이름과 비밀번호를 사용하여 서버에 로그인을 시도해야 하며 파일에 성공적인 연결 및 연결 실패를 기록 config
해야 PASS
합니다 FAIL
.
#USERNAME PASSWORD TNSNAMES SUCCESS/FAIL
ODB ODB123 ODB1 PASS
CDC CDC123 CDC1 FAIL
업데이트된 파일을 다시 읽어야 하며 config
, 전달된 경우 데이터베이스로 이동하여 호출한 해당 SQL을 실행해야 합니다. 그렇다면 데이터베이스를 무시해야 합니다 FAIL
.
내용을 다른 파일에 쓰는 다음 스크립트를 시도했습니다.
#!/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"
새 파일에 동일한 내용을 작성해 보았더니 위 스크립트가 작동했습니다.
원시 파일에 "합격/실패" 등을 쓰는 방법을 알아보세요. 원본 문서는 아래에 있습니다.
#USERNAME PASSWORD TNSNAMES SUCCESS/FAIL
ODB ODB123 ODB1
CDC CDC123 CDC1
답변1
그러니 딱 맞는 편집이다. 나는 sed -i
이것을 선호한다:
tail -n+2 test.txt|while read -r line ; do
user_name=`echo "$line"|cut -d\ -f 1`
password=`echo $line|cut -d\ -f 2`
TNS_NAME=`echo $line|cut -d\ -f 3`
echo "exit" | ${ORACLE_HOME}/bin/sqlplus -S ${user_name}/${password}@${TNS_NAME} |grep -E 'ORA|SP2' > /dev/null
if [ $? -ne 0 ]; then
result=PASS
else
result=FAIL
fi
sed -i -E "/$line/s/\t*FAIL|\t*PASS|$/$result/" test.txt
done
따라서 해당 사례에 대해 후행 또는 및 해당 탭을 $line
제거하고 이것이 도움이 되기를 바랍니다.PASS
FAIL
$result