我正在嘗試編寫一個shell腳本來檢查數據庫連接。在我的腳本中,我使用命令使用Shell腳本檢查數據庫連接
sqlplus uid/[email protected]
連接到我的Oracle數據庫。
現在我想在臨時文件中保存此命令生成的輸出(在它放到SQL提示符之前),然後從該文件grep /找到字符串「連接到」以查看連接是否正常。
任何人都可以請幫助我趕上輸出並擺脫那個提示,並測試連接是否正常?
我正在嘗試編寫一個shell腳本來檢查數據庫連接。在我的腳本中,我使用命令使用Shell腳本檢查數據庫連接
sqlplus uid/[email protected]
連接到我的Oracle數據庫。
現在我想在臨時文件中保存此命令生成的輸出(在它放到SQL提示符之前),然後從該文件grep /找到字符串「連接到」以查看連接是否正常。
任何人都可以請幫助我趕上輸出並擺脫那個提示,並測試連接是否正常?
使用的腳本是這樣的:
#!/bin/sh
echo "exit" | sqlplus -L uid/[email protected] | grep Connected > /dev/null
if [ $? -eq 0 ]
then
echo "OK"
else
echo "NOT OK"
fi
回聲「退出」可以確保你立刻退出了(這被輸送到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
是的它一直在揭露密碼一個不錯的選擇!謝謝Jochem和codaddict ... – mohona 2010-09-27 06:51:26
#!/bin/bash
output=`sqlplus -s "user/[email protected] " <<EOF
set heading off feedback off verify off
select distinct machine from v\\$session;
exit
EOF
`
echo $output
if [[ $output =~ ERROR ]]; then
echo "ERROR"
else
echo "OK"
fi
感謝您的答案iddqd。 – mohona 2010-10-04 08:10:39
#! /bin/sh
if echo "exit;" | sqlplus UID/[email protected] 2>&1 | grep -q "Connected to"
then echo connected OK
else echo connection FAIL
fi
不知道是否「已連接到「消息被放到標準輸出或標準錯誤,這將同時檢查。 「qrep -q」而不是「grep ...>/dev/null」假定Linux。
謝謝你的答案。 – mohona 2010-10-04 08:11:13
這裏是不命令行
#!/bin/bash
CONNECT_STRING=<USERNAME>/<PASS>@<SID>
sqlplus -s -L /NOLOG <<EOF
whenever sqlerror exit 1
whenever oserror exit 1
CONNECT $CONNECT_STRING
exit
EOF
SQLPLUS_RC=$?
echo "RC=$SQLPLUS_RC"
[ $SQLPLUS_RC -eq 0 ] && echo "Connected successfully"
[ $SQLPLUS_RC -ne 0 ] && echo "Failed to connect"
exit SQLPLUS_RC
非常感謝你們所有人的投入......是的,但是我在那一天自己嘗試過,但是有點晚了。 – mohona 2010-09-27 06:50:01