O linie de comandă care conține --errors-to-stderr pare o reclamație și nu este. Cuvântul aparține numelui unei opțiuni, la fel cum numele unui fișier jurnal nu spune nimic despre ce conține fișierul. Înainte de a schimba orice configurație, stabiliți ce citiți de fapt.

Decizia are trei ramuri: linia este chiar pornirea, linia este ieșire tipărită de program, sau linia este text pe care un wrapper l-a repetat înainte ca VPN-ul să pornească. Fiecare ramură indică un loc diferit de verificat, și doar una dintre ele este mesajul propriu al VPN-ului.

Numele unei opțiuni nu este un mesaj de stare

Pentru Community OpenVPN, --errors-to-stderr direcționează ieșirea erorilor către eroarea standard în loc de ieșirea standard. Este o alegere de flux, nu un filtru de gravitate, și nu creează nicio eroare. Un --log sau un --log-append ulterior poate redirecționa aceleași mesaje către un fișier, de aceea efectul indicatorului depinde de restul comenzii. Referința de jurnalizare de la sursă definește acea ordine.

Deci prezența indicatorului spune încotro s-ar duce erorile. Nu spune că a avut loc una.

Linie de pornire sau ieșirea procesului

Începeți prin a întreba cine a tipărit textul. O unitate de serviciu, un pachet de aplicație sau un wrapper de shell repetă adesea întregul argv înainte ca procesul VPN să scrie ceva. Acel ecou nu poate fi distins de o linie de stare dacă vedeți doar un fragment.

Dacă linia a venit de la wrapper, VPN-ul încă nu a rulat și nu are ce raporta. Căutați mai jos în ieșire primul mesaj care poartă un marcaj de timp sau un nume de subsistem.

Dacă linia a venit de la procesul VPN, este încă doar apelul. OpenVPN nu își tipărește propria linie de comandă ca eroare, iar mesajele care contează vin după ea.

Găsiți procesul și rezultatul lui

Stabiliți dacă procesul încă rulează. Un client activ care reîncearcă arată foarte diferit de unul care a ieșit imediat, iar aceeași linie de comandă precedă ambele.

Apoi citiți rezultatul prin componenta care deține procesul. În systemd, acesta este jurnalul unității; într-o aplicație desktop, este logul sau consola aplicației. Starea de ieșire împreună cu ultimele mesaje răspund la întrebarea la care numele opțiunii doar face aluzie.

O eroare de analiză a configurației, un fișier lipsă, o acreditare respinsă și un timeout al partenerului sunt patru evenimente diferite. Ele sosesc pe același flux. Au nevoie de patru remedieri diferite. Decideți care este al dumneavoastră înainte de a atinge profilul, și citați mesajul exact când cereți ajutor.

Când indicatorul își merită locul

Indicatorul își merită locul când stdout transportă date și erorile nu trebuie să le contamineze, sau când un wrapper captează cele două fluxuri separat. Într-o sesiune în prim-plan într-un terminal, ambele fluxuri ajung în fața dumneavoastră. În acest caz, distincția schimbă rareori ce faceți.

Păstrați-l dacă scriptul din jur depinde de separare. Eliminarea lui pentru că numele pare alarmant schimbă locul unde apar mesajele și nu repară nimic altceva.

Ce nu trebuie schimbat

Nu tratați opțiunea ca pe un pas de reparație. Ștergerea ei nu poate repara un certificat, o rută sau o eroare de autentificare.

Dacă apelul conține --config stdin, configurația este furnizată prin intrarea standard. Aceasta este o decizie separată despre modul în care este furnizat fișierul. Schimbați un singur lucru odată, și recitiți mesajul real înainte de a-l schimba pe al doilea.

Articole similare