
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
あります。