J'aimerais savoir dans un script Shell d'un conteneur LXD si le conteneur est géré par Netplan. Cela peut être un peu un inconnu car j'ai un mélange de 16.04 systèmes 18.04 et de systèmes 18.04 mis à niveau.
Afin d'écrire la configuration réseau correcte dans le conteneur, je dois détecter si la configuration est statique dans /etc/network/interfaces
ou dans un fichier Netplan yaml.
Je pourrais vraiment utiliser quelque chose comme netplan status
mais comme cette commande n'existe pas, j'ai besoin d'alternatives.
J'ai posé pas mal de questions, et il semble n'y avoir aucun moyen officiel. Les suggestions que j'ai eues jusqu'à présent:
cat /etc/network/interfaces
et cherchez le message d'information Netplan à cet endroit. Je n'aime pas cette approche, car elle serait évidemment sujette à la casse.Vous pourrez peut-être vérifier le fichier ifstate de ifupdown, qui vous indiquera si c'est ce qui a été utilisé pour configurer le réseau:
/run/network/ifstate
Si c'est le cas et qu'il contient du texte, vous pouvez vous attendre à ce que ifupdown soit utilisé. S'il n'est pas présent, le système est probablement géré via netplan (mais cela ne vous dira pas s'il s'agit de NetworkManager ou de systemd)
Ensuite, si vous voulez savoir quel back-end est utilisé pour une interface particulière, vous pouvez demander à netplan et analyser le résultat pour obtenir les informations dont vous avez besoin:
netplan generate --mapping enp3s0
Il produit un texte comme ceci:
id=enp3s0, backend=NetworkManager, set_name=(null), match_name=enp3s0, match_mac=(null), match_driver=(null)
De cette façon, vous pouvez également savoir à l'aide des règles de correspondance configurées par l'interface (vous utilisez le nom "final" d'une interface pour vérifier le mappage, il vous indique quelle règle de correspondance se trouve dans le plan YAML qui lui correspond).