2017-01-24 4 views
0

Der Code unten führt den folgenden Fehler importieren:Import: nicht Name CertificateError

Traceback (most recent call last): 
    File "./python_PAN_traffic_scraper.py", line 4, in <module> 
    import urllib3 
    File "/usr/lib/python2.7/site-packages/urllib3/__init__.py", line 10, in <module> 
    from .connectionpool import (
    File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 29, in <module> 
    from ssl import CertificateError 
ImportError: cannot import name CertificateError 

Was mache ich falsch? Ich möchte zur Firewall-Portalschnittstelle navigieren, die ein selbstsigniertes Zertifikat verwendet, und beim Versuch, mithilfe einer bestimmten API-URL und eines API-Schlüssels zur Site zu navigieren, einen Zertifikatfehler ausgeben. Letztendlich möchte ich den Code so erweitern, dass er das XML durchsucht, um nach bestimmten Tags und Attributen (Quelle/Ziel/Ports/etc) zu suchen.

#!/usr/bin/env python 
import ssl 
import urllib 
import urllib3 
import xml.etree.ElementTree as ET 

ctx = ssl.create_default_context() 
ctx.check_hostname = False 
ctx.verify_mode = ssl.CERT_NONE 

DAL = "1.1.1.1" 
CHI = "2.2.2.2" 

firewall_ip = [ 'Dallas', 'Chicago' ] 

datacenter=raw_input('Which firewall do you want traffic logs for? \"DAL\" or \"CHI\"?: ') 

contents = "" 

cmd = "/api/?type=log&log-type=traffic&query=(receive_time geq '2017/1/22 23:00:00')" 
key = "&key=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa=" 
url = "https://"+pan_ip[0]+urllib3.urlencode(cmd)+key 

response = urllib3.urlopen(url, verify=False) 
contents = ET.fromstring(response.read()) 


if DC is "DAL": 
    print contents 
else: 
    print "Goodbye" 

#result = "" 



#for i in contents[0][0]: 
    # if i[0][0].tag == entry: 
    #  for j in i[0][0]: 
    #   if j.tag == 'src' and j.text == src: 
    #    result = i.attrib['name'] 
    #print result 
+0

Können Sie bitte näher erläutern, welche Fehlerbehebungsschritte Sie bisher ausprobiert haben und diese Frage zur Frage hinzufügen? –

+0

'CertificateError' existiert im Standard' ssl' Modul. Sie würden nicht zufällig eine Datei namens 'ssl.py' oder einen Modulordner namens' ssl' in Ihrem Pfad haben, der anstelle des Standard-Pfades importiert wird, oder? – slezica

+0

Harshdeep - Ich habe keine spezifischen Debugging-Schritte versucht. Wenn Sie etwas haben, das Sie gerne empfehlen würden, wäre ich gerne bereit. slezica - Ich habe 'env' in meinem Terminalfenster überprüft und sehe nichts wie Sie beschrieben. Soweit ich weiß, ist alles Standard. – utiliz3

Antwort

0

ich deinstalliert urllib3 und hat eine frische Installation:

$ git clone git://github.com/shazow/urllib3.git 
cd to the folder containing urllib3/ 
$ python setup.py install 

Dieses wurde vollständig von den Fehler beseitigen.