Fabric: AttributeError: 'str'-Objekt hat kein Attribut 'extend', wenn benutzerdefinierte connect_kwargs- und key_filename-Optionen verwendet werden

Erstellt am 31. Aug. 2019  ·  6Kommentare  ·  Quelle: fabric/fabric

Wenn Sie ein benutzerdefiniertes connect_kwargs mit einer Option key_filename , gehen Sie wie folgt vor:

    config = fabric.config.Config()
    print("Connecting with ssh/config")
    with fabric.Connection(
        host=instancePrivateIp,
        user='ec2-user',
        config=config,
        connect_kwargs={
            "key_filename": keyFileName,
        }) as c_instance:

Ich bekomme ein AttributeError :

  File "/home/dumontj/Projects/ami-builder/ami_builder/customization.py", line 26, in do_bash_customization
    "key_filename": keyFileName,
  File "/home/dumontj/.local/share/virtualenvs/ami-builder-jbdgQc96/lib/python3.7/site-packages/fabric/connection.py", line 450, in __init__
    self.connect_kwargs = self.resolve_connect_kwargs(connect_kwargs)
  File "/home/dumontj/.local/share/virtualenvs/ami-builder-jbdgQc96/lib/python3.7/site-packages/fabric/connection.py", line 490, in resolve_connect_kwargs
    connect_kwargs["key_filename"].extend(
AttributeError: 'str' object has no attribute 'extend'

Die Dokumentation gibt an, dass key_filename als String angegeben werden sollte, aber ich habe festgestellt, dass es funktioniert, wenn Sie ihm tatsächlich eine Liste geben:

    with fabric.Connection(
        host=instancePrivateIp,
        user='ec2-user',
        config=config,
        connect_kwargs={
            "key_filename": [keyFileName,],
        }) as c_instance:

Wenn dies die gewünschte Syntax ist, kann ich die Dokumentation über eine PR aktualisieren (siehe https://github.com/fabric/fabric/blob/2.0/fabric/connection.py#L234). Ansonsten könnte ich fabric/connection.py ändern, um zu prüfen, ob bereits ein Eintrag vorhanden ist, und ihn dann ggf. in eine Liste umwandeln.

Hilfreichster Kommentar

Ich habe das gleiche Problem beim 2.5. Die Verwendung einer Liste funktioniert jedoch.

Alle 6 Kommentare

Ich habe das gleiche Problem beim 2.5. Die Verwendung einer Liste funktioniert jedoch.

Gleiches Problem. Sieht aus, als könnte es ein dummer Fehler für mich sein, also an 2.4.0 anheften, bis wir mehr vom Upstream hören.

Ich erhalte das gleiche Problem, wenn Host auf einen DNS-Namen eingestellt ist. Bei einer IP-Adresse tritt die Ausnahme nicht auf.
Z.B:

{'host': '127.0.0.1', 'user': 'MyUser', 'connect_kwargs': {'key_filename': '/Users/MyUser/.ssh/MyPem.pem'}} # <- Works
{'host': 'some.dns.name', 'user': 'MyUser', 'connect_kwargs': {'key_filename': '/Users/MyUser/.ssh/MyPem.pem'}} # <- Doesn't work

face_caches[self.face_img_paths[i].stem] = Gesichter
AttributeError: 'str'-Objekt hat kein Attribut 'stem'
Ich habe diesen Fehler. kann mir jemand eine lösung vorschlagen

Jemand anderes hat im September 2019 eine PR erstellt, um die Dokumente zu ändern, aber noch nicht zusammengeführt (Feb 2020): #2014

Das passiert mir auch ... und außerdem denke ich, dass es wichtig wäre, einstellen zu können, ob ich mich nur mit dem angegebenen key_filename verbinden möchte, anstatt die ssh_config-Info zu verwenden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen