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.
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.
Commentaire le plus utile
Je vois le même problème sur 2.5. Cependant, l'utilisation d'une liste fonctionne.