As unidades do Oneshot geralmente precisam de RemainAfterExit=yes
, caso contrário, elas imediatamente "desativam" e executam o comando ExecStop.
Aqui está o problema que estou tentando resolver: Eu tenho um dispositivo sem fio, gostaria que ele agisse como um cliente em um determinado momento e como um ponto de acesso em outro momento.
Eu configurei o NetworkManager usando dois perfis, um para o cliente e outro para o Access Point. Tudo funciona desde que eu mude manualmente.
Os problemas começam quando tento amarrar esses dois perfis às unidades do systemd. Gostaria de poder associar um perfil do NetworkManager a uma unidade do systemd. Eu também escrevi a unidade usando comandos nmcli simples, mas sempre que eu inicio a unidade, a conexão sobe e desce.
Aqui está a unidade:
[Service]
type=oneshot
ExecStart=nmcli con up Connection2
ExecStop=nmcli con down Connection2
Veja o que o journalctl mostra a partir da unidade:
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/7)
Veja o que o journalctl mostra na unidade do NetworkManager (truncada):
<info> Activation (wlan0) successful, device activated.
<info> (wlan0): device state change: activated -> deactivating (reason 'user-requested') [100 11
<info> NetworkManager state is now DISCONNECTING
<info> (wlan0): device state change: deactivating -> disconnected (reason 'user-requested') [110
<info> (wlan0): deactivating device (reason 'user-requested') [39]
<info> Removing DNS information from /sbin/resolvconf
<info> NetworkManager state is now DISCONNECTED
Alguém pode me indicar o caminho certo para fazer isso? Também gostaria de evitar a abordagem "ifupdown" e usar o NetworkManager (ou systemd-networkd). Não tive sucesso usando o último, pois não consigo encontrar uma maneira fácil de definir o modo do dispositivo. Obrigado.