2016-10-27 3 views
0

Mein Problem ist sehr ähnlich zu dieser Frage bereits gestellt: No handlers could be found for logger paramikokompilierten Python-Skript paramiko.transport ‚„No-Handler für Logger gefunden werden können‘

Der Unterschied ist, dass mein Skript im Python-Interpreter völlig in Ordnung läuft Aber ich werde den erwähnten Fehler bei der Kompilierung mit PyInstaller in eine EXE-Datei werfen.Ich habe ein paar verschiedene Logging-Handler ohne Glück ausprobiert, und ich bin auf der Suche nach einer eigenständigen ausführbaren Datei, die ich von jedem Windows-System ausführen kann als Referenz:

from netmiko import ConnectHandler 
net_connect = ConnectHandler(device_type='hp_procurve', ip='10.1.2.20', username='myusername', password='mypassword') 
output = net_connect.send_command("show run") 
print output 
net_connect.disconnect() 
raw_input("Press enter to exit...") 

Danke für die Hilfe!

+0

Haben Sie versucht, die Lösung aus diesem Link mit 'paramiko.util .log_to_file'? –

Antwort

1

hinzufügen Konsolentreiber (zum Beispiel) paramiko.transport:

paramiko_logger = logging.getLogger('paramiko.transport') 
if not paramiko_logger.handlers: 
    console_handler = logging.StreamHandler() 
    console_handler.setFormatter(
     logging.Formatter('%(asctime)s | %(levelname)-8s| PARAMIKO: ' 
          '%(lineno)[email protected]%(module)-10s| %(message)s') 
     ) 
    paramiko_logger.addHandler(console_handler) 
+0

Perfekt, danke fernandezcuesta. Das hat meinen Fehler behoben! – devdacool

0

Für alle, die über diese laufen, hier mein voller Python-Skript ist in einen HP ProCurve Switch SSH und die Ausgabe eines Druck "show run" -Befehl. Ich stieß auf einen anderen Fehler, wo das Kryptographiemodul nicht richtig mit PyInstaller interagieren würde, nachdem der erwähnte Fehler in diesem Beitrag gelöst wurde. Dieser Link bietet diese Lösung: https://github.com/pyinstaller/pyinstaller/issues/2013

def patch_crypto_be_discovery(): 
    from cryptography.hazmat import backends 
    try: 
     from cryptography.hazmat.backends.commoncrypto.backend import backend as be_cc 
    except ImportError: 
     be_cc = None 
    try: 
     from cryptography.hazmat.backends.openssl.backend import backend as be_ossl 
    except ImportError: 
     be_ossl = None 
    backends._available_backends_list = [ 
     be for be in (be_cc, be_ossl) if be is not None 
] 
import logging 
paramiko_logger = logging.getLogger('paramiko.transport') 
if not paramiko_logger.handlers: 
    console_handler = logging.StreamHandler() 
    console_handler.setFormatter(
     logging.Formatter('%(asctime)s | %(levelname)-8s| PARAMIKO: ' 
         '%(lineno)[email protected]%(module)-10s| %(message)s') 
    ) 
paramiko_logger.addHandler(console_handler) 
from netmiko import ConnectHandler 
net_connect = ConnectHandler(device_type='hp_procurve', ip='10.1.2.20', username='myusername', password='mypassword') 
output = net_connect.send_command("show run") 
print output 
net_connect.disconnect() 
raw_input("Press enter to exit...") 

ich brauche, um auch diesen Befehl ausführen, das Skript zu einer exe zu kompilieren:

pyinstaller --onefile --hidden-import cryptography.hazmat.backends.openssl --hidden-import cffi HP-ProCurve-ShowRun.py 
Verwandte Themen