Fabric: AttributeError : l'objet 'str' n'a pas d'attribut 'extend' lors de l'utilisation de l'option personnalisée connect_kwargs et key_filename

Créé le 31 août 2019  ·  6Commentaires  ·  Source: fabric/fabric

Lorsque vous utilisez un connect_kwargs avec une option key_filename , comme ceci :

    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:

Je reçois un 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'

La documentation spécifie que key_filename doit être donné sous forme de chaîne, mais j'ai trouvé que cela fonctionne si vous lui donnez réellement une liste :

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

Si c'est la syntaxe souhaitée, je peux mettre à jour la documentation via un PR (voir https://github.com/fabric/fabric/blob/2.0/fabric/connection.py#L234). Sinon, je pourrais changer fabric/connection.py pour vérifier s'il y a déjà une entrée, puis la transformer en liste si nécessaire.

Commentaire le plus utile

Je vois le même problème sur 2.5. Cependant, l'utilisation d'une liste fonctionne.

Tous les 6 commentaires

Je vois le même problème sur 2.5. Cependant, l'utilisation d'une liste fonctionne.

Même problème. On dirait que cela pourrait être un bug idiot pour moi, donc épinglez à 2.4.0 jusqu'à ce que nous entendions plus d'en amont.

J'ai le même problème lorsque l'hôte est défini sur un nom DNS. Lorsqu'il est défini sur une adresse IP, l'exception ne se produit pas.
Par exemple:

{'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] = visages
AttributeError : l'objet 'str' n'a pas d'attribut 'stem'
j'ai cette erreur. quelqu'un peut-il me suggérer une solution

Quelqu'un d'autre a fait un PR pour modifier les documents en septembre 2019, mais pas encore fusionné (février 2020): #2014

Cela m'arrive aussi... et aussi, je pense qu'il serait important de pouvoir définir si je veux seulement me connecter en utilisant le key_filename fourni, au lieu d'utiliser les informations ssh_config.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

omzev picture omzev  ·  6Commentaires

peteruhnak picture peteruhnak  ·  4Commentaires

jamesob picture jamesob  ·  3Commentaires

acdha picture acdha  ·  4Commentaires

SamuelMarks picture SamuelMarks  ·  3Commentaires