Oracle 데이터베이스를 종료하는 스크립트를 생성했지만 데이터베이스 종료가 성공적으로 완료되면 종료 출력을 보내지 못합니다. 이메일의 에코 부분만 수신하고 실제 종료 부분은 수신하지 않습니다. 종료 출력을 캡처하여 mailx
내 emailid
.
또한 이 로그를 HTML 형식으로 캡처하여 를 통해 보낼 수 있는 방법도 알려주십시오 emailid
.
LOG_FILE="Shutdown_of_$ORACLE_SID_`hostname`_Completed_`date "+%Y_%b_%d"`.txt"
echo "">>$LOG_FILE
echo "">>$LOG_FILE
echo " ========================================================= ">>$LOG_FILE
echo "">>$LOG_FILE
echo " Step : SHUTTING Down of database ">>$LOG_FILE
echo " Start : `date ` ">>$LOG_FILE
echo " ======================================================== ">>$LOG_FILE
echo "">>$LOG_FILE
echo "">>$LOG_FILE
export SHUT=/home/oracle/SHUT.txt
>$SHUT
sqlplus -s / as sysdba << EOF
set feedback off verify off termout off linesize 120 pagesize 500;
spool $SHUT
shut immediate;
spool off;
exit;
EOF
echo "">>$LOG_FILE
echo " ========================================= " >>$LOG_FILE
echo " Status : Completed ">>$LOG_FILE
echo " End : `date` ">>$LOG_FILE
echo " ========================================= ">>$LOG_FILE
echo "">>$LOG_FILE
mailx -s "Shutdown_of_'$ORACLE_SID'_`hostname`_Completed_`date "+%Y_%b_%d"` " [email protected] < $LOG_FILE
노트:내 Bash 버전: GNU bash, 버전 4.1.2(1)-릴리스(x86_64-redhat-linux-gnu).
답변1
나는 보통 당신이 원하는 것을 다음과 같이 합니다:
#!/bin/bash
{
cat <<-EOF
=========================================================
Step : SHUTTING Down of database
Start : `date `
========================================================
EOF
export SHUT=/home/oracle/SHUT.txt
>$SHUT
sqlplus -s / as sysdba <<-EOF
set feedback off verify off termout off linesize 120 pagesize 500;
spool $SHUT
shut immediate;
spool off;
exit;
EOF
cat $SHUT
cat <<-EOF
=========================================
Status : Completed
End : $(date)
=========================================
EOF
} | mailx -s "Shutdown_of_'$ORACLE_SID'_$(hostname)_Completed_$(date "+%Y_%b_%d") " \
[email protected]
위의 내용은 그 안에 있는 명령의 모든 출력을 캡처하는 하위 셸을 만듭니다. 그런 다음 mailx
이 모든 출력을 직접 파이프합니다.
노트:EOF
이 문서를 작업할 때 마크업 주위에 추가 공백이 있는지 특히 주의하세요. 끝에 잘못된 추가 공백이 있으면 EOF
작동하지 않을 수 있습니다.