使用带有key_filename
选项的自定义connect_kwargs
时,如下所示:
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:
我得到一个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'
文档指定key_filename
应该作为字符串给出,但我发现如果你真的给它一个列表它可以工作:
with fabric.Connection(
host=instancePrivateIp,
user='ec2-user',
config=config,
connect_kwargs={
"key_filename": [keyFileName,],
}) as c_instance:
如果这是想要的语法,我可以通过 PR 更新文档(参见 https://github.com/fabric/fabric/blob/2.0/fabric/connection.py#L234)。 否则,我可以更改fabric/connection.py
以检查是否已经存在条目,然后在必要时将其转换为列表。
我在 2.5 上看到了同样的问题。 但是,使用列表是有效的。
同样的问题。 看起来这对我来说可能是一个愚蠢的错误,所以固定到 2.4.0 直到我们从上游听到更多。
当主机设置为 DNS 名称时,我遇到了同样的问题。 设置为 IP 时,不会发生异常。
例如:
{'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] = 人脸
AttributeError: 'str' 对象没有属性 'stem'
我收到了这个错误。 谁能建议我一个解决方案
其他人在 2019 年 9 月提出了 PR 以更改文档,但尚未合并(2020 年 2 月):#2014
这也发生在我身上......而且,我认为能够设置是否只想使用提供的 key_filename 进行连接,而不是使用 ssh_config 信息,这一点很重要。
最有用的评论
我在 2.5 上看到了同样的问题。 但是,使用列表是有效的。