2010-09-23 22 views
7

का उपयोग कर डेटाबेस कनेक्टिविटी की जांच करें मैं डेटाबेस कनेक्टिविटी की जांच के लिए एक खोल स्क्रिप्ट लिखने की कोशिश कर रहा हूं। मेरी स्क्रिप्ट के भीतर मैं आदेशशैल स्क्रिप्ट

sqlplus uid/[email protected] 

उपयोग कर रहा हूँ मेरी Oracle डेटाबेस से कनेक्ट करने के लिए।

अब मैं एक temp फ़ाइल में इस आदेश द्वारा उत्पन्न आउटपुट (एसक्यूएल प्रॉम्प्ट पर जाने से पहले) को सहेजना चाहता हूं और फिर उस फ़ाइल से "कनेक्ट टू" स्ट्रिंग को grep/ढूंढने के लिए यह देखने के लिए कि कनेक्टिविटी ठीक है या नहीं ।

क्या कोई मुझे आउटपुट पकड़ने और उस प्रॉम्प्ट से बाहर निकलने में मदद कर सकता है और परीक्षण कर सकता है कि कनेक्टिविटी ठीक है या नहीं?

उत्तर

19

उपयोग एक स्क्रिप्ट:

अब बस के रूप में ऊपर के उत्पादन में 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 आश्वासन देता है कि यदि SQLentials ठीक नहीं हैं (जो इसे भी अटक जाएंगे) तो एसकप्लस पासवर्ड के लिए नहीं पूछेगा।

(>/dev/बातिल सिर्फ ग्रेप से उत्पादन है, जो हम क्योंकि परिणाम $ के माध्यम से पहुंचा जा सकता है की जरूरत नहीं है छुपाता है? इस मामले में)

+0

आपके इनपुट के लिए आप सभी को बहुत बहुत धन्यवाद .... हाँ मैंने उस दिन खुद ही कोशिश की, हालांकि, थोड़ी देर बाद जवाब दिया। – mohona

2

आप ऐसा करके एसक्यूएल शीघ्र बच सकते हैं:

sqlplus uid/[email protected] < /dev/null 

sqlplus बाहर निकालता है तुरंत। इस तरह

if sqlplus uid/[email protected] < /dev/null | grep 'Connected to'; then 
    # have connectivity to Oracle 
else 
    # No connectivity 
fi 
+0

हाँ यह काम किया है पर पासवर्ड का खुलासा नहीं करता है !! धन्यवाद जोकेम और कोडडिक्ट ... – mohona

1
#!/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 
+0

धन्यवाद आपके उत्तर के लिए iddqd। – mohona

1
#! /bin/sh 

if echo "exit;" | sqlplus UID/[email protected] 2>&1 | grep -q "Connected to" 
then echo connected OK 
else echo connection FAIL 
fi 

नहीं जानते हुए भी कि क्या "कनेक्ट किया गया "संदेश को मानक आउटपुट या मानक त्रुटि में डाल दिया गया है, यह दोनों जांचता है। "grep ...>/dev/null" के बजाय "qrep -q" लिनक्स मानता है।

+0

आपके उत्तर के लिए धन्यवाद Frayser। – mohona

0

यहाँ एक अच्छा विकल्प है जो कमांड लाइन

#!/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 
संबंधित मुद्दे