Fabric: AttributeError:カスタムconnect_kwargsおよびkey_filenameオプションを使用する場合、「str」オブジェクトには属性「extend」がありません

作成日 2019年08月31日  ·  6コメント  ·  ソース: fabric/fabric

次のように、カスタムconnect_kwargskey_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でも同じ問題が発生しています。 ただし、リストの使用は機能します。

全てのコメント6件

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のみを使用して接続したい場合に設定できることが重要だと思います。

このページは役に立ちましたか?
0 / 5 - 0 評価