Ogoji faili .ovpn fun orilẹ-ede kan wa lati ọdọ olupese, ati pe ero naa dabi ẹni ti o han gbangba: da ẹyọkan laileto sinu aaye rẹ, lẹhinna bẹrẹ ojò naa. Ti a ba kọ ọ gẹgẹ bi pipe inu ExecStart, ero yẹn ku ni akoko igbana pẹlu koodu ipo ti ko ṣalaye nkankan. Faili unit kii ṣe iwe afọwọkọ, ati pe atunṣe ni boya mu shell wa ni gbangba tabi dawọ yiyan awọn faili duro patapata.

Ami: unit ti o bẹrẹ ti o si ku lẹsẹkẹsẹ

Ipo fihan pe iṣẹ naa kuna ni ida kan ti iṣẹju-aaya kan, ati ila iwe akosile n pe pipa kan ti ko si shell ti yoo gba rara. Ko si nkankan nipa ojò naa ti o farahan, nitori pe ojò naa ko bẹrẹ rara.

Kika laini pipa gangan lati inu iwe akosile ni ọna ti o yara julọ lati jẹrisi eyi. systemd tun sọ ohun ti o ṣe, ati pe okun naa yoo fi awọn ami pipe han gẹgẹ bi awọn ariyanjiyan gangan dipo awọn oniṣẹ.

Idi ti ExecStart ko le ṣe pipe kan

systemd funrararẹ pin ila pipa naa, o fi àfikún ọrọ rẹ ati rirọpo oniyipada rẹ si, lẹhinna o ṣe abajade taara. Awọn pipe, ìtọnisọna, imugboroosi glob nipasẹ shell ati rirọpo pipa ko ni apakan ninu girama yẹn rara. Eyi jẹ yiyan apẹrẹ kii ṣe aini: unit sọ ni gbangba ohun ti o yẹ ki o ṣiṣẹ, ati pe ọgbọn ti shell jẹ ti iwe afọwọkọ ti unit pe. Awọn atunṣe mejeeji wa lati inu eyi, ati pe ko si ọkan ti o nilo fifun unit ni aṣẹ diẹ sii.

Eyi tun ṣalaye koodu ijade ti o ṣi eniyan lona. A gba ariyanjiyan akọkọ bi faili alakomeji, nitorina laini ti ko tọ kuna ki apakan kan ninu ọgbọn rẹ to ṣiṣẹ.

Ṣe yiyan ninu ExecStartPre

Atunṣe taara jẹ igbesẹ igbaradi ti o pe shell ni gbangba, ti o si tọju yiyan ati ibẹrẹ ninu unit kanna ki ikuna kan ma ba fi ekeji silẹ ti o n ṣiṣẹ nikan.

[Service]
Type=notify
ExecStartPre=/bin/bash -c "ls /etc/openvpn/profiles/au* | shuf -n 1 | xargs -r -I{} cp -f {} /etc/openvpn/%i.conf"
ExecStart=/usr/sbin/openvpn --config /etc/openvpn/%i.conf

Awọn alaye mẹta pinnu boya eyi yoo ye olubasọrọ pẹlu ẹrọ gidi kan. Nini orukọ ni idẹkùn akọkọ: systemd rọpo %i nigba ti o n ṣatupalẹ unit naa, pipẹ ṣaaju ki bash to ṣiṣẹ, nitorina apilẹṣẹ naa gbọdọ duro ni ita awọn ami asọtẹlẹ ẹyọkan. xargs -r ṣe idiwọ cp lati ṣiṣẹ laisi ariyanjiyan nigbati glob ko ba ba nkankan mu. Ati pe igbesẹ igbaradi ti o kuna yoo da unit naa duro, ati pe iyẹn ni abajade ti o tọ: bẹrẹ pẹlu iṣeto ti ana buru ju ki a ma bẹrẹ lọ. Yiyan laileto ti o nmu faili kanna nigbagbogbo kii ṣe oriire buburu. Ṣayẹwo boya faili ti a da ni a n kọ lori nipasẹ imudojuiwọn package, tabi boya glob naa ba ọkan nikan ni titẹ sii ti o ti pẹ mu.

Tabi jẹ ki OpenVPN yan aaye ipari

OpenVPN ti le tọju awọn aaye ipari pupọ ninu profaili kan ati yan laileto laarin wọn, eyi ti o yọ shell, ẹda ati iwọle kikọ kuro patapata lati ọna igbana.

client
remote-random
<connection>
remote au1.example.net 1194 udp
</connection>
<connection>
remote au2.example.net 1194 udp
</connection>

Fọọmu yii tọju yiyan olupin ninu faili ti olupese kọ, nitorina yiyi ti o tun orukọ awọn faili ko ba unit naa jẹ. O tun jẹ ki atokọ awọn oludije jẹ eyi ti a le ṣayẹwo, eyi ti glob lori liana kan kii ṣe rara. Dídàpọ ṣi ni aye rẹ nigbati awọn profaili yatọ si ju aaye ipari kan lọ: awọn ijẹrisi oriṣiriṣi, awọn itọnisọna ipa-ọna oriṣiriṣi, eto imulo sifẹ oriṣiriṣi. Ninu iru ọran bẹẹ yiyan wa laarin awọn iṣeto pipe, ati pe igbesẹ shell ni ọna otitọ lati fi eyi han.

Ka ẹyọ ati faili ti o lo pada

Jẹrisi unit wo ni o n ṣiṣẹ gan ni ki o to yanju awọn aṣiṣe ninu akoonu rẹ. Iṣẹ meta ti a pọ ati template ni ipilẹ ilana; awọn unit ti o ba awọn faili rẹ mu ni awọn ẹyọ ti a fun ni orukọ wọn.

systemctl list-units 'openvpn*'
systemctl cat [email protected]
journalctl -u openvpn@au -n 30 --no-pager

Ẹyọ ti ko si ẹnikan ti o ranti pe o ti mu ṣiṣẹ nigbagbogbo nmu pada si faili iṣeto ti o sina ninu liana package. Pa ẹyọ ti a fun ni orukọ naa duro dipo template, bibẹẹkọ igbega package ti o tẹle yoo mu pada wa. Lẹhin iyipada, bẹrẹ unit naa ati ka laini pipa ti iwe akosile njabọ, lẹhinna jẹrisi ọna iṣeto ti o ṣii gan. Iṣayẹwo ọkan yẹn ya yiyan laileto ti o n ṣiṣẹ kuro ninu iṣẹ kan ti o ntun lo faili ti oṣu to kọja ni idakẹjẹ.

Àwọn àpilẹ̀kọ tó jọra