2011-06-16 6 views
6

मैं पाइथन में एक स्क्रिप्ट लिख रहा हूं जो एसएसएच कनेक्शन के लिए पैरामीको का उपयोग कर सिस्को राउटर से कॉन्फ़िगरेशन खींचता है। मैं यह भी सत्यापित करने की कोशिश कर रहा हूं कि लॉगिन प्रमाण-पत्र डिवाइस के लिए असफल होने के बिना सही हैं।पैरामीको प्रमाणीकरण सत्यापन (पाइथन अपवाद हैंडलिंग के रूप में सामने आता है)

अभी कोड कोड कनेक्ट और चलाएगा जो मैं चाहता हूं कि क्रेडेंशियल्स सही हैं। महान! हालांकि अगर मैं इसे गलत प्रमाण-पत्र खिलाता हूं तो स्क्रिप्ट प्रमाणीकरण त्रुटि के साथ विफल हो जाती है।

कोड:

ip = *.*.*.* 
u = username 
p = password 


ssh = paramiko.SSHClient() 

ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 

ssh.connect(ip, username=u, password=p) 

shell = ssh.invoke_shell() 

एक बार मैं कार्यक्रम शुरू कर दिया है और यह गलत क्रेडेंशियल्स इस उत्पादन है तंग आ गया है।

paramiko. प्रमाणीकरण अपवाद: प्रमाणीकरण विफल।

यह मुझे पता है कि प्रमाण पत्र गलत हैं, लेकिन मैं नहीं चाहता कि स्क्रिप्ट बस असफल हो, मैं चाहता हूं कि यह समस्या प्रदर्शित करे और शेष स्क्रिप्ट को जारी रखें।

कोई विचार?

उत्तर

7

Python manual पर सेक्शन 8.3 (हैंडलिंग अपवाद) पर एक नज़र डालें। आप अपवाद को "पकड़" सकते हैं और इसे संभाल सकते हैं, इससे अपवाद को आपके प्रोग्राम से बाहर निकलने से रोका जा सकता है। यदि कोई कोड इसे पकड़ता है तो आपका प्रोग्राम केवल अपवाद पर बाहर निकल जाएगा।

try: 
    ssh = paramiko.SSHClient() 
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
    ssh.connect(ip, username=u, password=p) 
    shell = ssh.invoke_shell() 
except paramiko.AuthenticationException: 
    print "We had an authentication exception!" 
    shell = None 

लेकिन, आप अगर shellNone है इतना है कि यह विफल नहीं अपना कोड लिखना होगा।

संबंधित मुद्दे