Fabric: AttributeError: الكائن 'str' ليس له سمة 'extension' عند استخدام خيار connect_kwargs المخصص و key_filename

تم إنشاؤها على ٣١ أغسطس ٢٠١٩  ·  6تعليقات  ·  مصدر: fabric/fabric

عند استخدام 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:

إذا كانت هذه هي الصيغة المطلوبة ، فيمكنني تحديث الوثائق من خلال العلاقات العامة (انظر 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" ​​ليس له سمة "جذع"
حصلت على هذا الخطأ. يمكن لأي شخص أن يقترح لي حلا

قام شخص آخر بعمل PR لتغيير المستندات في سبتمبر 2019 ، ولكن لم يتم دمجه بعد (فبراير 2020): # 2014

يحدث هذا لي أيضًا ... وأيضًا ، أعتقد أنه سيكون من المهم أن تكون قادرًا على التعيين إذا كنت أرغب فقط في الاتصال باستخدام key_filename المقدم ، بدلاً من استخدام ssh_config info.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

26huitailang picture 26huitailang  ·  3تعليقات

omzev picture omzev  ·  6تعليقات

bitprophet picture bitprophet  ·  4تعليقات

yuvadm picture yuvadm  ·  5تعليقات

TimotheeJeannin picture TimotheeJeannin  ·  3تعليقات