dbus_next.errors.DBusError: ipv4.addresses: это свойство не может быть пустым для 'method=manual'

Я пытаюсь настроить соединение NetworkManager (wifi) с помощью dbus. Я использую Python dbus-next, так как эта библиотека удобна с точки зрения поддержки асинхронности. Я узнал, что поле «адресные данные» в будущем заменит «адреса». Однако, независимо от того, чем я обновляю настройки IPv4, он всегда говорит:

dbus_next.errors.DBusError: ipv4.addresses: это свойство не может быть пустым для 'method=manual'

И у меня заканчиваются идеи, что я могу делать неправильно. Довольно непонятно, почему настройки ниже не принимаются. Я также сравнил их с настройками, которые я настроил с помощью сетевого менеджера gnome, который также использует dbus под капотом. Таким образом, должен быть способ, но я понятия не имею, как действовать дальше.

Это настройки IPv4, которые я обновляю:

 'ipv4': {'address-data': <dbus_next.signature.Variant ('aa{sv}', [{'address': <dbus_next.signature.Variant ('s', 192.168.2.177)>, 'prefix': <dbus_next.signature.Variant ('u', 16)>}])>,
          'addresses': <dbus_next.signature.Variant ('aau', [[3232236209, 4294966784, 3232236033]])>,
          'dns': <dbus_next.signature.Variant ('au', [])>,
          'dns-search': <dbus_next.signature.Variant ('as', [])>,
          'gateway': <dbus_next.signature.Variant ('s', )>,
          'method': <dbus_next.signature.Variant ('s', manual)>,
          'route-data': <dbus_next.signature.Variant ('aa{sv}', [])>,
          'routes': <dbus_next.signature.Variant ('aau', [])>},

... как видите поле ipv4.addresses явно не пустое. Таким образом, я понятия не имею, почему ошибка говорит так.

Я также проверил метод сетевых менеджеров reapply на установленном соединении с тем же результатом.


person grmmgrmm    schedule 12.10.2020    source источник


Ответы (1)


Эта ошибка возникает, если соединение не было обновлено. Элемент addresses устарел. Я удалил его и смог обновить соединение. Это рабочий пример блока ipv4:

 'ipv4': {'address-data': <dbus_next.signature.Variant ('aa{sv}', [{'address': <dbus_next.signature.Variant ('s', 192.168.2.181)>, 'prefix': <dbus_next.signature.Variant ('u', 24)>}])>,
          'dns': <dbus_next.signature.Variant ('au', [])>,
          'dns-search': <dbus_next.signature.Variant ('as', [])>,
          'gateway': <dbus_next.signature.Variant ('s', 192.168.2.1)>,
          'method': <dbus_next.signature.Variant ('s', manual)>,
          'route-data': <dbus_next.signature.Variant ('aa{sv}', [])>,
          'routes': <dbus_next.signature.Variant ('aau', [])>},

После этого я успешно вызвал метод reapply_connection. Этот вызов метода вызовет другое исключение, если устройство не было активным, но это уже другая история.

person grmmgrmm    schedule 15.11.2020