Uma linha de comandos que contém --errors-to-stderr parece uma queixa e não é. A palavra pertence ao nome de uma opção, tal como o nome de um ficheiro de registo não diz nada sobre o que o ficheiro contém. Antes de alterar qualquer configuração, estabeleça o que está realmente a ler.

A decisão tem três ramos: a linha é o próprio arranque, a linha é saída que o programa imprimiu, ou a linha é texto que um wrapper repetiu antes de o VPN arrancar. Cada ramo aponta para um local diferente onde olhar, e só um deles é a mensagem do próprio VPN.

O nome de uma opção não é uma mensagem de estado

Para Community OpenVPN, --errors-to-stderr encaminha a saída de erros para o erro padrão em vez da saída padrão. É uma escolha de fluxo, não um filtro de gravidade, e não cria nenhum erro. Um --log ou --log-append posterior pode redirecionar as mesmas mensagens para um ficheiro, por isso o efeito do indicador depende do resto do comando. A referência de registo da origem define essa ordem.

Assim, a presença do indicador diz para onde iriam os erros. Não diz que tenha ocorrido um.

Linha de arranque ou saída do processo

Comece por perguntar quem imprimiu o texto. Uma unidade de serviço, um pacote de aplicação ou um wrapper de shell costumam repetir o argv completo antes de o processo VPN escrever algo. Esse eco é indistinguível de uma linha de estado se só vir um fragmento.

Se a linha veio do wrapper, o VPN ainda não correu e não tem nada a relatar. Procure mais abaixo na saída a primeira mensagem que traga um carimbo temporal ou o nome de um subsistema.

Se a linha veio do processo VPN, continua a ser apenas a invocação. O OpenVPN não imprime a sua própria linha de comandos como erro, e as mensagens que importam vêm depois.

Encontre o processo e o resultado

Estabeleça se o processo ainda está em execução. Um cliente ativo que volta a tentar parece muito diferente de um que saiu de imediato, e a mesma linha de comandos precede ambos.

Depois leia o resultado através do componente que detém o processo. No systemd, é o diário da unidade; numa aplicação de ambiente de trabalho, é o registo ou a consola da própria aplicação. O estado de saída e as últimas mensagens respondem à pergunta que o nome da opção apenas sugere.

Um erro de análise da configuração, um ficheiro em falta, uma credencial rejeitada e um tempo limite do par são quatro eventos diferentes. Chegam pelo mesmo fluxo. Precisam de quatro correções diferentes. Decida qual tem antes de tocar no perfil, e cite a mensagem exata quando pedir ajuda.

Quando o indicador merece o seu lugar

O indicador merece o seu lugar quando a saída padrão transporta dados e os erros não a podem contaminar, ou quando um wrapper captura os dois fluxos em separado. Numa sessão em primeiro plano num terminal, ambos os fluxos chegam à sua frente. Nesse caso, a distinção raramente muda o que faz.

Mantenha-o se o script em volta depende da separação. Removê-lo porque o nome parece alarmante muda o local onde as mensagens aparecem e não corrige mais nada.

O que não alterar

Não trate a opção como um passo de reparação. Eliminá-la não pode corrigir um certificado, uma rota ou uma falha de autenticação.

Se a invocação contiver --config stdin, a configuração é fornecida pela entrada padrão. É uma decisão separada sobre como o ficheiro é fornecido. Altere uma coisa de cada vez, e releia a mensagem real antes de alterar a segunda.

Artigos relacionados