Tecla de atalho da VPN do NetworkManager: conectar e desconectar separadamente
Dê dois atalhos a uma VPN salva no NetworkManager em vez de um botão de alternância. Fixe o UUID, mantenha o pedido de autenticação visível e verifique a prontidão.
Dois atalhos eliminam as adivinhações que um único botão de VPN tem de suportar: um sempre conecta, o outro sempre desconecta. Dois atalhos eliminam a ambiguidade: um sempre pede uma conexão, o outro sempre pede uma desconexão. Ambos apontam para o mesmo perfil salvo através do seu UUID.
Siga a configuração na ordem abaixo. Teste cada comando num terminal antes de vinculá-lo, porque um atalho é um lugar ruim para descobrir um pedido que você não consegue ver.
Encontre o UUID, não o nome do perfil
Liste as conexões salvas na sua sessão normal do ambiente de trabalho e copie o UUID da VPN pretendida. O nome é para pessoas; dois perfis salvos podem compartilhar um, e um perfil apagado e reimportado recebe um novo identificador.
nmcli connection show
nmcli connection show "Office VPN" | grep -i uuid
Mantenha o UUID na definição do atalho em vez do nome de exibição. Se o perfil for substituído mais tarde, atualize os dois atalhos ao mesmo tempo, porque um identificador obsoleto produz uma ação Conectar que falha enquanto Desconectar ainda aponta para o objeto antigo. É por isso que as duas ações usam o mesmo valor. Trate o UUID como a identidade do perfil.
Confirme que o perfil é uma VPN do NetworkManager e não um daemon de fabricante com o seu próprio serviço. Um cliente de fabricante precisa da sua própria interface de controle suportada; o nmcli não gerenciará um túnel que não lhe pertence. Verifique o tipo de conexão se o nome for ambíguo. Um túnel pertencente a outro daemon não aparecerá na mesma lista.
Teste os dois comandos primeiro num terminal
Peça a conexão de forma interativa, conclua o login aprovado e alcance um recurso privado de que você realmente precise. Depois desconecte com o comando correspondente e confirme que a VPN cai sem levar consigo o link Wi-Fi ou Ethernet subjacente.
nmcli --ask connection up uuid 11111111-2222-4333-8444-555555555555
nmcli connection down uuid 11111111-2222-4333-8444-555555555555
Execute-os como duas ações separadas. Elas mudam o estado da conexão; não apagam o perfil nem editam as suas configurações. Guarde a saída do terminal da primeira execução para saber como é uma sequência normal de pedidos. Esse registro torna o comportamento do atalho previsível.
Não teste a desconexão pelo seu único caminho de administração remota. Se a VPN transporta a sua sessão, uma desconexão bem-sucedida também termina o seu acesso, e a recuperação precisa de um caminho que não dependa do túnel. Mantenha um console local ou um segundo link disponível.
Vincule dois atalhos nomeados ao mesmo UUID
Nas configurações de teclado do ambiente de trabalho, crie duas ações com nomes claros, por exemplo Conectar VPN do escritório e Desconectar VPN do escritório. Atribua combinações de teclas diferentes e cole o UUID verificado nos dois comandos.
Dê-lhes nomes pela intenção e não pelo estado. Um atalho chamado Alternar torna o próximo toque imprevisível; Conectar e Desconectar descrevem exatamente o que será pedido. Isso torna a lista de atalhos autoexplicativa. Um toque errado ainda faz algo previsível.
Se o ambiente de trabalho usa lançadores desktop-entry, lembre-se de que um lançador não aloca um terminal automaticamente. Um comando que precisa de entrada interativa ficará esperando onde ninguém pode respondê-lo.
Coloque o pedido de autenticação onde você possa vê-lo
Sem --ask, o nmcli pede a um agente de segredos em execução as credenciais que faltam. Esse é o caminho certo quando o ambiente de trabalho já trata da autenticação desta VPN e o agente consegue mostrar o seu próprio pedido. Teste o comando Conectar simples diretamente no atalho antes de supor que ele funciona.
Se a VPN precisa de interação no terminal, configure o atalho para abrir o aplicativo de terminal do ambiente de trabalho e executar ali o comando interativo. Os argumentos de inicialização variam entre aplicativos de terminal, então use a forma documentada do que está instalado.
Para uma entrada de desktop, Terminal=true pede uma janela de terminal e Terminal=false não. Nenhuma das configurações é motivo para colocar uma senha na linha de comando, conceder sudo sem senha ou contornar a política de autenticação da organização.
Verifique a prontidão depois do toque na tecla
Um toque na tecla significa que você pediu a ativação. Isso não prova que a autenticação terminou, que as rotas foram instaladas ou que o DNS privado responde. Verifique o estado da conexão e depois o recurso privado real.
Leia o estado pelo cliente proprietário em vez de comparar uma frase traduzida. O texto legível muda com o idioma, e uma máquina pode ter mais de uma VPN, então uma correspondência de string pode relatar o perfil errado ou perder um estado transitório.
Se outra automação reconecta a VPN, reconcilie-a com o atalho Desconectar. Dois donos que se anulam mutuamente produzem uma conexão que parece ignorar o toque na tecla, quando o problema real é uma política concorrente.
Anote o UUID, os dois comandos e a verificação de prontidão nas suas notas. A próxima substituição de perfil ou atualização do ambiente de trabalho é muito mais fácil de diagnosticar quando o identificador e o caminho de pedido pretendido já estão escritos.