D'Heem-VPN mat enger systemd ExecCondition iwwersprangen
En bewosste Sprung an en defekten Virbereedungsbefehl sinn ënnerschiddlech Resultater. Defint d'Exit-Code vum Hëllefsprogramm, an test duerno de Wiessel tëscht Netzwierker.
Deng Heemnetzwierk-VPN huet näischt ze maachen, wann den Laptop schonn an deem Netzwierk sëtzt. De verlockende Ofkierzung ass e Virbereedungsbefehl, deen mat engem Code ongläich null erausgeet; dat lässt d'Unit feelen an all Dashboard gesäit futti aus. systemd huet eng Direktiv fir genee dës Form vun Entscheedung, an se trennt e bewosste Sprung vun engem echte Feeler. Et richteg ze maachen ass virun allem opschreiwen, wat all Exit-Code bedeit.
Firwat eng feelend Viraussetzung déi falsch Form ass
ExecStartPre behandelt en Exit ongläich null als Startfeeler, wat richteg ass fir en Befehl, deen de Service virbereet. En als Bedingung ze benotzen mécht eng Richtlinienentscheedung net z'ënnerscheede vun enger futti Ofhängegkeet. ExecCondition existéiert, fir datt eng Unit de Start ka verweigeren, ouni als gefeelt markéiert ze ginn.
Dee Ënnerscheed zielt ëm dräi Auer moies, wann keen eng rout Unit triagéiere wëll, déi sech wéi designéiert behuelen huet. Eng gefeelt Unit verstoppt och déi richteg Feeler tëscht de bewossten.
Schreif fir d'éischt den Exit-Code-Kontrakt
Schreif de Kontrakt virum Skript. Exit null heescht weider, Exit eent heescht déi reschtlech Startbefehler iwwersprangen, an Exit 255 heescht, datt d'Bedingung selwer net konnt lafen. Coden tëscht zwee an 254 heesche gewéinlech och iwwersprangen, wat een einfach vergësst, wann den Hëllefsprogramm en zoufällege Fehlercode zréckgëtt. Den Drop-in hei drënner verbënnt den Hëllefsprogramm mam richtegen Unitéitsnumm.
[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpnIwwerpréif déi effektiv Unit op geierft SuccessExitStatus- oder stop-post-Astellungen, ier s du déi Standard-Semantik ugeholl hutt. Test duerno all ee vun den dräi Resultater bewosst.
En Netzwierkhiweis ass kee Beweis vum Standuert
Eng erreechbar Routeradress oder eng bekannt MAC kann dat richtegt Netzwierk uginn, an keng vun deene beweist et. En anert Netzwierk kann déi selwecht Adress nei benotzen, ARP-Date kënnen al sinn, an Identifikatore kënnen nogemaach ginn. Behandel d'Prüfung als Optimiséierung, déi mat der Richtlinn entsprécht, net als Authentiséierungsresultat.
Entscheet virdrun, wat Onsécherheet bedeit. D'VPN starten, wann s du onsécher bass, ass sécher fir e Client, deen einfach net kéint verbennen; et iwwersprangen, wann s du onsécher bass, ass et net. Maach d'Prüfung begrenzt, a lies déi aktiv Schnëttstell, amplaz déi éischt an der Lëscht unzehuelen. Eng Prüfung, déi hängt, ass méi schlëmm wéi eng, déi nee äntwert, well d'Unit drop waart.
Schreif déi Unnamen nieft d'Unit-Datei, sou datt déi nächst Persoun weess, wat den Hëllefsprogramm gleeft. E Kommentar uewen am Skript ass déi bëllegst Plaz, se ze halen.
Behandel de Wiessel tëscht Netzwierker
D'Bedingung lafe beim Start vum Service, an se gëtt duerno net nei bewäert. Eng iwwersprongene Unit bleift iwwersprongen, nodeems den Laptop an e Café plënnert, an en Tunnel, deen leeft, bleift uewen, nodeems den Laptop heem kënnt. Verbind de Liewenszyklus vum Netzwierkwiessel iwwer en eegene Mechanismus mat der Start- an Stoppentscheedung.
systemctl cat home-vpn.serviceTest véier Fäll: Start doheem, Start ënnerwee, eng Prüfung, déi net ka lafen, an e Wiessel tëscht Netzwierker während d'Unit aktiv ass. Halt de Grond fir d'Iwwersprangen am Journal sichtbar, sou datt eng bewosst Entscheedung ni wéi en Authentiséierungsfeeler ausgesäit. D'Service-Referenz dokumentéiert d'Exit-Semantik an d'Mindestversioun.