Detectando se o netplan está gerenciando a configuração de rede (shell)

2

Eu gostaria de descobrir em um script de shell em um contêiner LXD, se o contêiner está sendo gerenciado pela Netplan. Isso pode ser um pouco desconhecido, já que eu tenho uma mistura de sistemas 16.04 18.04 e sistemas atualizados 18.04.

Para escrever a configuração de rede correta no contêiner, preciso detectar se a configuração é estática em /etc/network/interfaces ou em um arquivo yaml da Netplan.

Eu realmente poderia usar algo como netplan status , mas como esse comando não existe, eu preciso de alternativas.

Eu perguntei em torno de um pedaço justo, e parece não haver nenhuma maneira oficial. As sugestões que eu tive até agora:

  1. cat /etc/network/interfaces e procure a mensagem informativa Netplan lá. Eu não gosto dessa abordagem, pois isso obviamente seria propenso a quebra.
  2. Alguém sugeriu que eu pudesse procurar / etc / netplan - mas isso não funcionará em sistemas atualizados, pois o Netplan está desativado, mas ainda está instalado.
  3. Outra sugestão foi o inverso: que eu pudesse verificar se ifupdown ou systemd está gerenciando a rede. O problema é que não sei como fazer isso em um sentido prático.
por Arni J 08.05.2018 / 15:52

1 resposta

3

Você pode verificar o arquivo ifstate de ifupdown, que informará se foi isso que foi usado para configurar a rede:

/run/network/ifstate

Se estiver lá e contiver texto, você pode esperar que o ifupdown esteja em uso. Se não estiver presente, o sistema provavelmente é gerenciado via netplan (mas isso não lhe dirá se é NetworkManager ou systemd)

Então, se você quiser saber qual back-end é usado para uma interface específica, você pode perguntar ao netplan e analisar a saída para obter as informações necessárias:

netplan generate --mapping enp3s0

Produz texto assim:

id=enp3s0, backend=NetworkManager, set_name=(null), match_name=enp3s0, match_mac=(null), match_driver=(null)

Dessa forma, você também pode saber usando quais regras de correspondência a interface foi configurada (você usa o nome "final" de uma interface para verificar o mapeamento, ele informa qual regra de correspondência está no YANL do netplan correspondente a ela).

    
por Mathieu Trudel-Lapierre 10.05.2018 / 22:39