Ao usar um connect_kwargs
com uma opção key_filename
, assim:
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:
Eu recebo 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'
A documentação especifica que key_filename
deve ser fornecido como uma string, mas descobri que funciona se você realmente fornecer uma lista:
with fabric.Connection(
host=instancePrivateIp,
user='ec2-user',
config=config,
connect_kwargs={
"key_filename": [keyFileName,],
}) as c_instance:
Se esta for a sintaxe desejada, posso atualizar a documentação por meio de um PR (consulte https://github.com/fabric/fabric/blob/2.0/fabric/connection.py#L234). Caso contrário, eu poderia alterar fabric/connection.py
para verificar se já existe uma entrada e, em seguida, transformá-la em uma lista, se necessário.
Estou vendo o mesmo problema no 2.5. No entanto, usar uma lista funciona.
Mesmo problema. Parece que pode ser um bug bobo para mim, então fixe em 2.4.0 até ouvirmos mais do upstream.
Eu tenho o mesmo problema quando o host é definido com um nome DNS. Quando definido para um IP, a exceção não ocorre.
Por exemplo:
{'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] = faces
AttributeError: o objeto 'str' não tem atributo 'stem'
eu tenho esse erro. Alguém pode me sugerir uma solução
Outra pessoa fez um RP para alterar os documentos em setembro de 2019, mas ainda não fundiu (fevereiro de 2020): # 2014
Isso também acontece comigo ... e também, acho que seria importante poder definir se eu só quero me conectar usando o key_filename fornecido, em vez de usar as informações de ssh_config.
Comentários muito úteis
Estou vendo o mesmo problema no 2.5. No entanto, usar uma lista funciona.