Fabric: AttributeError: el objeto 'str' no tiene atributo 'extender' cuando se usa la opción connect_kwargs personalizada y key_filename

Creado en 31 ago. 2019  ·  6Comentarios  ·  Fuente: fabric/fabric

Al usar un connect_kwargs con una opción key_filename , así:

    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:

Recibo 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 documentación especifica que key_filename debe darse como una cadena, pero descubrí que funciona si realmente le das una lista:

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

Si esta es la sintaxis deseada, puedo actualizar la documentación a través de un PR (consulte https://github.com/fabric/fabric/blob/2.0/fabric/connection.py#L234). De lo contrario, podría cambiar fabric/connection.py para verificar si ya hay una entrada, luego transformarla en una lista si es necesario.

Comentario más útil

Veo el mismo problema en 2.5. Sin embargo, usar una lista funciona.

Todos 6 comentarios

Veo el mismo problema en 2.5. Sin embargo, usar una lista funciona.

El mismo problema. Parece que podría ser un error tonto para mí, así que anclarlo en 2.4.0 hasta que escuchemos más de upstream.

Tengo el mismo problema cuando el host está configurado con un nombre DNS. Cuando se establece en una IP, la excepción no ocurre.
P.ej:

{'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] = caras
AttributeError: el objeto 'str' no tiene el atributo 'stem'
tengo este error. ¿Alguien puede sugerirme una solución?

Alguien más hizo un PR para cambiar los documentos en septiembre de 2019, pero aún no se fusionó (febrero de 2020): # 2014

Esto también me sucede a mí ... y también, creo que sería importante poder configurar si solo quiero conectarme usando el key_filename proporcionado, en lugar de usar la información ssh_config.

¿Fue útil esta página
0 / 5 - 0 calificaciones