VPN-eszköz beállításai: környezet indításkor vagy export a hookban?
A hook a saját gyermekeit indítja, nem a már megnyitott shellt. Az indításkori környezet csak abban az egy parancsban tartja a privát végpontot, amelynek szüksége van rá.
Az API-végpontot exportáló VPN-hook az általa indított folyamatok környezetét változtatja meg, nem a tunel felállásakor már nyitva lévő terminálét. Ez az egyetlen különbség magyarázza a „az eszköz még mindig a nyilvános végpontot hívja” jelentések többségét. Két használható hely van a beállítás számára, és a választás attól függ, ki fogyasztja, és milyen gyakran változik. Hasonlítsa össze őket, mielőtt újabb indító szkriptet ad hozzá.
Két hely, ahol a beállítás élhet
Az első lehetőség egy előtag magán a parancson: az érték csak arra az egyetlen hívásra létezik, és azzal eltűnik. A második lehetőség egy export a kapcsolat hookján belül, amely minden folyamathoz eljut, amelyet a hook ezután indít. Kiterjedésben és élettartamban különböznek, nem szintaxisban, és ez a különbség dönti el a legtöbb hibát.
| Property | Prefix on the command | Export from the hook |
|---|---|---|
| Who receives it | That invocation only | Children the hook starts |
| Lifetime | Until the process exits | Until the hook's own session ends |
| Leakage | Scoped to one command | Applies to later commands in that session |
| Repeat cost | Every invocation | Once per connection |
| Works for an open editor | No, unless the editor is started with it | No |
A táblázat olcsónak mutatja a hookot, és elrejti a valódi számlát: privát végpontot választ azokhoz a parancsokhoz is, amelyeknek semmi közük a feladathoz. Minden sort korlátként olvasson, ne preferenciaként. Ha a végpont feladatonként változik, az előtag a pontosságban nyer, még ha egy billentyűleütésbe kerül is.
Miért nem érheti el a hook a már nyitott shellt
A környezeti változókat a folyamatkép létrehozásakor adják át a folyamatnak. A kapcsolat előtt indult shell megtartja a kapott másolatot, és a hookon belül végrehajtott export nem sugárzás a gép minden folyamata felé. Csak a hook saját gyermekei öröklik. A shell saját gyermekei azt veszik át, amivel a shell az indulásuk pillanatában rendelkezik, és ezért ugyanaz a parancs működhet az egyik terminálban, és hiúsulhat meg a másikban.
Ugyanez igaz a grafikus szerkesztőre. Bővítménygazdája, beépített terminálja és háttérbeli nyelvi kiszolgálója indításkor elágazott, és saját másolatokat tart. Egy mappa újranyitása nem feltétlenül indítja újra ezeket a gyermekeket, így a hozzáadott beállítás továbbra sem érkezik meg soha.
A legolcsóbb próba a változót arról a helyről kiírni, amelyik meghiúsul, nem abból a shellből, amelyik működik. Ha a meghiúsuló folyamat a tunel előtt indult, az exportnak soha nem volt esélye.
A parancsonkénti forma, leírva
Az előtag láthatóan tartja a választást az azt használó parancsban, ami segít, ha a végpont feladatok között változik:
env INTERNAL_API='https://internal-api.example.net:8443' my-work-tool
A parancs csak szemléltetés: a my-work-tool helyőrző, és a INTERNAL_API nem VPN-szabvány, ezért helyettesítse a ténylegesen futtatott program dokumentált beállításával és a saját jóváhagyott gazdagépével. Ne tegyen tokent vagy jelszót ugyanabba a sorba, mert az a shell előzményeibe kerül.
Ha több parancs tartozik egy feladathoz, egy rövid, átnézett burkolószkript beállítja a változókat, majd elindítja őket. Így egyetlen definíció marad, anélkül hogy az érték globálissá válna a terminál minden jövőbeli parancsára.
Töltse újra, indítsa újra, vagy hagyja békén
Egy már futó eszköznél részesítse előnyben a saját újratöltését vagy munkaterület-profilját, ha van neki. Ellenkező esetben mentse a munkát, és indítsa újra a beállítást olvasó komponenst, ami gyakran nyelvi kiszolgáló, nem a szerkesztő ablaka. Az ablak újraindítása és annak feltételezése, hogy a gyermekfolyamatok követték, éppen az, amitől az újratöltés úgy tűnik, mintha nem működne.
A kapcsolat bontása külön döntés. A szüneteltetés, bezárás vagy újracsatlakozás az alkalmazáshoz tartozik, és a végpontváltozó nem irányítja. Kezelje a változót olyan konfigurációként, amely címet választ, nem pedig szabályként arról, milyen hálózati forgalom használható utána, és a két kérdés továbbra is szétválasztható.