OpenVPN wuxuu ku shaqeeyaa shell laakiin wuu ku guuldareystaa cron: PATH ayaa ah sababta
Amar ku xirma shell ayaa ku guuldareysan kara cron ama subprocess ka hor inta tunnel-ku bilaaban. Hagaaji dariiqa, galka shaqada iyo terminalka.
Isla amarkaas ayaa shell ka xirma oo cron hoostiisa ku dhinta, sidaas darteed gabagabada dabiiciga ah waa in tunnel-ka ama shahaadada ayaa qaldan. Ka hor inta aadan taas rumaysan, eeg waxa ay labada orod wadaagaan: binary-ga, qaabeynta iyo aqoonsiga shaqada waa isku mid, oo kaliya deegaanka habsocodka ayaa isbeddelay. Marka barnaamijka xitaa aan la helin, wax TLS ah oo badan ma caawiyaan. Sixitaanku wuxuu inta badan ku jiraa dariiq, galka shaqada iyo dhowr doorsoome oo deegaan, ma aha VPN-ka.
command -v openvpn shell-ka shaqeeya wuxuu daabacaa jawaabta, oo inta badan waa /usr/sbin/openvpn, galka uu cron aanu ku darin dariiqa raadintiisa.
Tunnel-ku waligiis ma bilaaban, sidaas darteed tunnel-ku ma aha dhibaatada
Hawlaha uu cron bilaabo waxay dhaxlaan deegaan yar, caadi ahaan PATH=/usr/bin:/bin, oo ma lahaan terminal kontorool. Wax kasta oo lagu rakibay /usr/sbin ama /usr/local/sbin si fudud ayaa ka maqan liiskaas, oo sadarka diiwaanka wuxuu akhriyaa openvpn: not found halkii khalad TLS. subprocess Python si kale ayuu u guuldareystaa: wuxuu dhaxlaa deegaanka habsocodka tarjumaanka, kaas oo laga yaabo inuu ka qaniimsan yahay cron laakiin weli ma laha shell uu ku ballaariyo tilde. Labada guuldareysadoodba waxay dhacaan ka hor inta aan xitaa hal baakad ka bixin martigeliyaha.
Hab degdeg ah oo lagu kala saaro waa in la akhriyo khaladka koowaad halkii kan ugu dambeeya. Binary maqan wuxuu soo saaraa ka-tagid shell ama Python, qaabeyn xun waxay soo saartaa fariin isticmaalka OpenVPN, guuldareysiga dhabta ah ee gacan-qabsiga wuxuu soo saaraa calaamado waqti iyo cinwaannada lammaanaha. Kaliya kan saddexaad ayaa ah dhibaatada tunnel-ka.
Dariiqa buuxa iyo liisaska doodaha ayaa ka guuleysta xargaha shell
U gudbi dariiqa la xalliyay si cad oo gebi ahaanba dhaaf shell-ka. subprocess.run(["/usr/sbin/openvpn", "--config", config, "--verb", "4"], capture_output=True, text=True, timeout=90) wuxuu ku siinayaa koodhka soo-celinta, stdout iyo stderr isagoon weydiisan shell inuu tarjumo magaca faylka. Ka dhis dariiqa qaabeynta os.environ["HOME"] ama pathlib.Path.home(), si aan tilde marnaba loo ballaarin. Marka run ahaantii aad u baahan tahay halabuurka shell, isticmaal shlex.split, maxaa yeelay kala qaybinta xarig .split() waxay ku jabtaa dariiq kasta oo bannaan leh. Sidoo kale akhri stderr, maxaa yeelay OpenVPN wuxuu halkaas ku qoraa inta badan guuldareysiga hore.
Isla qaanuunkaas wuxuu khuseeyaa cron: sadarka hawsha ma aha shell gelitaan, sidaas darteed waxba kuma rarto borofaylkaaga oo waxba ma qeexaan magacyadaada kale.
Waxa crontab dhab ahaan dhaxlo
Gelitaanka crontab wuxuu helaa deegaanka uu crontab ku dhawaaqo oo lagu daray dhowr qiime oo caadi ah oo la dhaxlay, sidaas darteed dariiqa buuxa qor ama ku duub wicitaanka skript sameeya taas. Sadar sida PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin oo ku yaal sare faylka wuxuu daboolaa meelaha rakibaadda caadiga ah, oo dib-u-hagidda >> cron.log 2>&1 ayaa ah waxa ka dhigaya guuldareysiga xiga mid la akhriyi karo. Borofayl lagu ilaaliyay erey sir ah ma haysto dariiq uu cron hoostiisa ku weydiisto sirta, maxaa yeelay terminal lama hayo. Xiriirka noocaas waa inuu ku jiraa unug systemd oo akhrin kara fayl aqoonsi, ma aha hawl iska dhigaysa mid is-dhexgal ah.
Dariiqa qaraabada ah waa dabinada labaad. Orod tijaabo ah inta badan waxay ka dhacdaa galka borofaylka ku jira, hawsha cron-na meel gebi ahaan kale ayay ka bilaabataa, sidaas darteed --config office.ovpn wuxuu ku xallimaa fayl aan halkaas ku jirin oo fariintu waxay u akhriyaan sida fayl maqan halkii tunnel maqan.
Ku caddee iyadoo deegaanka la qaato
Si toos ah u soo saar deegaanka ugu yar: env -i PATH=/usr/bin:/bin /usr/sbin/openvpn --config office.ovpn --verb 4. Cabasho ku saabsan dariiq ama terminal oo ka timid orodkaas waxay ka dhigan tahay dhibaatadu waxay ka sarreysaa VPN-ka. Haddii uu xirmo, tuhmanayaasha hadhay waa akoonka uu ku shaqeeyo, galka uu ka bilaabo, iyo aqoonsiga uu soo bandhigo. Mid kasta oo ka mid ah labada natiijo ayaa ka fiican wareeg kale oo hubinta shahaadada.
Kadib ka dhig duubka mid is-warbixinaya. Ku bax xaalad gaar ah marxalad kasta oo uu gaaray, diiwaan geli labada qulqul oo leh calaamad waqti, oo guuldareysiga xiga wuxuu kuu sheegayaa haddii uu ku dhintay xallinta dariiqa, aqoonsiga, ama ka dib markii tunnel-ku horey u kacay.
Unuggu wuxuu sidoo kale u baahan yahay nidaam sax ah: Wants=network-online.target oo ay la socoto After=network-online.target waxay ka horjoogsadaan macmiilka inuu bilaabo ka hor inta aan cinwaan ama dariiq caadi ah jirin, taas oo haddii kale u muuqata khaladaad shahaado ama TLS oo libdha marka gacan ku dib loo bilaabo.