Я хотел бы выяснить в сценарии оболочки в контейнере LXD, управляется ли контейнер с помощью Netplan. Это может быть немного неизвестно, так как у меня есть сочетание 16.04 систем 18.04 систем и обновленных 18.04 систем.
Чтобы записать правильную конфигурацию сети в контейнер, мне нужно определить, является ли конфигурация статической в /etc/network/interfaces
или в файле yaml Netplan.
Я действительно мог бы использовать что-то вроде netplan status
, но так как эта команда не существует, мне нужны альтернативы.
Я довольно много расспрашивал, и, похоже, официального пути не существует. У меня есть предложения:
cat /etc/network/interfaces
и найдите там информационное сообщение Netplan. Мне не нравится такой подход, так как он, очевидно, будет подвержен поломкам. Вы можете проверять на ifstate файл от ifupdown, который скажет Вам, является ли это тем, что использовалось для конфигурирования сети:
/run/network/ifstate
Если это будет там, и это содержит текст, то можно ожидать, что ifupdown используется. Если это не присутствует, системой, вероятно, управляют через netplan (но это не скажет Вам, является ли это NetworkManager или systemd),
Затем если Вы хотите знать, какой бэкенд используется для конкретного интерфейса, можно спросить netplan и проанализировать вывод для получения информации, в которой Вы нуждаетесь:
netplan generate --mapping enp3s0
Это производит текст как это:
id=enp3s0, backend=NetworkManager, set_name=(null), match_name=enp3s0, match_mac=(null), match_driver=(null)
Тем путем можно также знать использование, что, соответствуя правилам интерфейс был настроен (Вы используете "заключительное" название интерфейса для проверки отображения, это говорит Вам, какое соответствие правилу находится в netplan YAML, который соответствует для него).