OpenVPN yana aiki a cikin shell amma yana kasawa a ƙarƙashin cron: PATH ne
Umarnin da ke haɗawa daga shell na iya kasawa a ƙarƙashin cron ko subprocess kafin tunnel ɗin ya fara. Gyara hanyar, babban fayil ɗin aiki da tashar.
Wannan umarni ɗaya yana haɗawa daga shell kuma yana mutuwa a ƙarƙashin cron, don haka tsammanin da ya dace shi ne tunnel ɗin ko takardar shaidar ce ke da laifi. Dubi abin da tafiyar biyu suke da shi gama gari kafin ka gaskata haka: fayil ɗin binari, saitin da takaddun shaida duk ɗaya ne, kuma yanayin tsari ne kaɗai ya canza. Idan ba a sami shirin ba kwata-kwata, babu adadin bincike na TLS da zai taimaka. Gyaran yawanci yana cikin hanya, babban fayil ɗin aiki da ɗan ƙaramin maɓallan yanayi, ba cikin VPN ba.
command -v openvpn a cikin shell ɗin da ke aiki yana buga amsar, kuma sau da yawa /usr/sbin/openvpn ne, babban fayil ɗin da cron ba ya saka a hanyar bincikensa.
Tunnel ɗin bai taɓa farawa ba, don haka tunnel ɗin ba shi ne matsalar ba
Ayyukan da cron ke farawa suna gado ƙaramin yanayi, bisa al’ada PATH=/usr/bin:/bin, kuma ba su da tashar kulawa. Duk abin da aka saka a /usr/sbin ko /usr/local/sbin kawai ba ya cikin wannan jerin, kuma layin tarihin yana karanta openvpn: not found maimakon kuskuren TLS. subprocess na Python yana kasawa dabam: yana gado yanayin tsarin mai fassara, wanda zai iya fi na cron wadata amma har yanzu ba shi da shell da zai faɗaɗa alamar tilde. Dukkan gazawar biyu suna faruwa kafin fakiti ɗaya ya bar mai masaukin.
Hanya mai sauri ta bambanta su ita ce karanta kuskure na farko maimakon na ƙarshe. Rashin fayil ɗin binari yana haifar da keɓewa a shell ko Python, saitin da ba daidai ba yana haifar da saƙon amfani na OpenVPN, kuma ainihin gazawar musafaha tana haifar da hatimin lokaci da adireshin abokan hulɗa. Na uku kaɗai ne matsalar tunnel.
Cikakkun hanyoyi da jerin hujjoji sun fi igiyoyin shell
Ba da hanyar da aka warware a bayyane kuma ku tsallake shell gaba ɗaya. subprocess.run(["/usr/sbin/openvpn", "--config", config, "--verb", "4"], capture_output=True, text=True, timeout=90) yana ba ka lambar dawowa, stdout da stderr ba tare da neman shell ya fassara sunan fayil ba. Gina hanyar saitin daga os.environ["HOME"] ko pathlib.Path.home(), domin kada a taɓa faɗaɗa tilde. Lokacin da kake buƙatar jimlar shell da gaske, yi amfani da shlex.split, domin raba igiya da .split() yana karyewa a kowace hanya da ke ɗauke da sarari. Karanta stderr kuma, domin OpenVPN yana rubuta yawancin gazawarsa ta farko a can.
Wannan dokar ɗaya ta shafi cron: layin aikin ba shell ɗin shiga ba ne, don haka babu abin da ke loda bayananka kuma babu abin da ke bayyana laƙabanka.
Abin da crontab ke gado da gaske
Shigarwar crontab tana samun duk yanayin da crontab ɗin ya bayyana tare da ƴan tsoffin tsoho, don haka rubuta hanyar gaba ɗaya ko kewaye kiran a cikin rubutun da zai yi hakan. Layi kamar PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin a saman fayil ɗin yana rufe wuraren shigarwa na yau da kullum, kuma juyar da hanya da >> cron.log 2>&1 shi ne abin da ke sa gazawa ta gaba a iya karantawa. Bayanan da aka kare da kalmar wucewa ba shi da hanyar neman sirrinsa a ƙarƙashin cron, domin babu tashar da za a tambaya a kanta. Irin wannan haɗin ya dace da naúrar systemd da za ta iya karanta fayil ɗin shaida, ba aikin da ke nuna kamar yana hulɗa ba.
Hanyoyi masu dangantaka sune tarko na biyu. Gwajin yawanci yana faruwa daga babban fayil ɗin da ke ɗauke da bayanan, kuma aikin cron yana farawa wani wuri dabam, don haka --config office.ovpn yana warwarewa zuwa fayil ɗin da ba ya can kuma saƙon ana karantawa a matsayin fayil ɗin da ya ɓace maimakon tunnel ɗin da ya ɓace.
Tabbatar da shi ta hanyar cire yanayin
Sake haifar da ƙaramin yanayi kai tsaye: env -i PATH=/usr/bin:/bin /usr/sbin/openvpn --config office.ovpn --verb 4. Koke game da hanya ko tasha daga wannan tafiyar yana nufin matsalar tana sama da VPN. Idan ya haɗa, waɗanda ake zargi da suka rage su ne asusun da yake aiki a ƙarƙashinsa, babban fayil ɗin da yake farawa a ciki, da shaidar da yake gabatarwa. Kowane sakamako daga biyun ya fi wani zagaye na duba takardun shaida.
Sannan ka sa mayafin ya bayar da rahoto da kansa. Fita da matsayi dabam ga kowane mataki da ya kai, rubuta dukkan igiyoyin biyu da hatimin lokaci, kuma gazawa ta gaba za ta gaya maka ko ya mutu a warware hanyar, a tabbatarwa, ko bayan tunnel ɗin ya riga ya tashi.
Naúrar kuma tana buƙatar jeri daidai: Wants=network-online.target tare da After=network-online.target suna hana abokin ciniki farawa kafin adireshi ko hanyar tsoho ta wanzu, wanda in ba haka ba yakan bayyana a matsayin kuskuren takardar shaida ko TLS waɗanda ke ɓacewa idan an sake farawa da hannu.