次のように、カスタムconnect_kwargs
をkey_filename
オプションとともに使用する場合:
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
これは私にも起こります...そしてまた、ssh_config情報を使用する代わりに、提供されたkey_filenameのみを使用して接続したい場合に設定できることが重要だと思います。
最も参考になるコメント
2.5でも同じ問題が発生しています。 ただし、リストの使用は機能します。