次のようなスクリプトを使用します:
#!/bin/sh
echo "exit" | sqlplus -L uid/[email protected] | grep Connected > /dev/null
if [ $? -eq 0 ]
then
echo "OK"
else
echo "NOT OK"
fi
echo "exit" は、プログラムがすぐに終了することを保証します (これは sqlplus にパイプされます)。-L は、資格情報に問題がある場合に sqlplus がパスワードを要求しないことを保証します (同様にスタックする可能性があります)。
(> /dev/null は、grep からの出力を非表示にするだけです。この場合、結果は $? 経由でアクセスされるため、これは必要ありません)
次のようにして、SQL プロンプトを回避できます。
sqlplus uid/[email protected] < /dev/null
SqlPlus はすぐに終了します。
上記の出力を以下のように grep するだけです:
if sqlplus uid/[email protected] < /dev/null | grep 'Connected to'; then
# have connectivity to Oracle
else
# No connectivity
fi