د یو هېواد لپاره څلوېښت .ovpn فایلونه له یو چمتو کوونکي راځي، او پلان ښکاره ښکاري: یو ناڅاپي فایل په خپل ځای کاپي کړئ، بیا ټنل پیل کړئ۔ کله چې دا په ExecStart کې د پایپ لاین په توګه ولیکل شي، هغه پلان په بوټ کې د یوې داسې حالت کوډ سره مري چې هېڅ شی نه تشریح کوي۔ د یونټ فایل سکریپټ نه دی، او سمون یا دا دی چې په ښکاره ډول خولۍ راوړل شي یا په بشپړه توګه د فایلونو ټاکل بند شي۔

نښه: یونټ چې پیلېږي او سمدلاسه مري

حالت ښیي چې خدمت د یوې ثانیې په یوه برخه کې ناکام شو، او د ژورنال کرښه داسې حکم نوموي چې هېڅ خولۍ به یې هېڅکله نه وي ترلاسه کړی۔ د ټنل په اړه هېڅ نه ښکاري، ځکه ټنل هېڅکله پیل شوی نه و۔

له ژورنال څخه د دقیقې حکم کرښې لوستل د دې تصدیق لپاره تر ټولو چټکه لار ده۔ systemd هغه څه تکراروي چې ترسره کړي یې دي، او تار به د پایپ لاین توري د آپریټرونو په توګه نه، بلکې د لفظي دلیلونو په توګه وښیي۔

ولې ExecStart پایپ لاین نه شي چلولی

systemd پخپله د حکم کرښه وېشي، خپل نقل قول او د متغیرونو بدلون پلي کوي، او بیا پایله مستقیمه اجرا کوي۔ پایپونه، لېږدول، د خولۍ ګلوب پراخول او د حکم بدلون په ساده ډول د دې ګرامر برخه نه ده۔ دا د ډیزاین انتخاب دی، نه پریښودنه: یونټ په اعلاني ډول وایي چې څه باید وچلول شي، او د خولۍ منطق هغه سکریپټ ته اړه لري چې یونټ یې غواړي۔ دواړه سمونونه له همدې څخه راځي، او هېڅ یو هم یونټ ته د زیاتو واکونو ورکولو غوښتنه نه کوي۔

دا هم ګمراه کوونکی وتلو کوډ تشریح کوي۔ لومړی دلیل د باینري په توګه ګڼل کېږي، نو ناسمه کرښه مخکې له دې چې ستاسو د منطق کومه برخه وچلول شي ناکامېږي۔

ټاکنه په ExecStartPre کې وکړئ

مستقیم سمون یو تیاری ګام دی چې په ښکاره ډول خولۍ غواړي، او ټاکنه او پیل په یوه یونټ کې ساتي، تر څو په یوه کې ناکامي بل په یوازې توګه پرېنږدي چې وچلول شي۔

[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

درې تفصیلات پرېکړه کوي چې ایا دا به د یوې ریښتینې ماشین سره په مخامخ کېدو کې ژوندی پاتې شي۔ نومول لومړی ډام دی: systemd د یونټ د شننې پر مهال، له bash څخه ډېر مخکې %i بدلوي، نو مشخص کوونکی باید د یوې نقل قول نښو څخه بهر وي۔ xargs -r مانع کېږي چې cp پرته له دلیل وچلول شي کله چې ګلوب له هېڅ شي سره سمون نه خوري۔ او ناکام تیاری ګام یونټ ودروي، او دا سمه پایله ده: د پرونۍ ترتیباتو سره پیل کول له نه پیل کولو څخه بدتره ده۔ ناڅاپي ټاکنه چې تل همغه فایل اخلي معمولاً بده چانس نه ده۔ وګورئ چې ایا کاپي شوی فایل د پاکټ اپډیټ له خوا پر سر لیکل کېږي، یا ګلوب یوازې له یوې زړې ننوتنې سره سمون خوري۔

یا پرېږدئ چې OpenVPN پای ټکی وټاکي

OpenVPN لا دمخه کولی شي په یوه پروفایل کې څو پای ټکي ولري او په ناڅاپي ډول له هغوی وټاکي، چې خولۍ، کاپي او د لیکلو اجازه په بشپړه توګه د بوټ له لارې لرې کوي۔

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

دا بڼه د سرور ټاکنه د چمتو کوونکي په لیکل شوي فایل کې ساتي، نو هغه څرخ چې د فایلونو نومونه بدلوي یونټ نه ماتوي۔ دا د کاندیدانو لیست هم د پلټنې وړ کوي، کوم چې د فولډر پر سر ګلوب هېڅکله نه وي۔ کله چې پروفایلونه له پای ټکي څخه زیات توپیر ولري، ګډول خپل ځای ساتي: بېل سندونه، بېلې د لارښوونې لارښوونې، بېله د کوډ کولو تګلاره۔ په هغه حالت کې ټاکنه د بشپړو ترتیباتو ترمنځ ده او د خولۍ ګام د دې بیانولو صادقه لاره ده۔

کارول شوې نمونه او هغه فایل چې کارولی یې دی بیا ولولئ

مخکې له دې چې د هغې منځپانګه ډیبګ کړئ، تصدیق کړئ کوم یونټ واقعاً چلیږي۔ د پاکټ میټا خدمت او کيندنه زیربنا ده؛ هغه یونټونه چې ستاسو فایلونو سره سمون خوري هغه نمونې دي چې د هغوی په نوم نومول شوې دي۔

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

هغه نمونه چې هېچا په یاد نه لري فعاله کړې یې وي، معمولاً د پاکټ فولډر کې یوې ورکې شوې ترتیباتي فایل ته رسوي۔ د کيندنې پرځای هماغه نومول شوې نمونه بنده کړئ، که نه بل پاکټ اپګریډ به یې بېرته راوړي۔ له بدلون وروسته یونټ پیل کړئ او هغه حکم کرښه ولولئ چې ژورنال یې راپور ورکوي، بیا هغه ترتیباتي لار تصدیق کړئ چې هغې واقعاً پرانیستې۔ هماغه یوه پلټنه د کار کوونکې ناڅاپي ټاکنې او هغه خدمت ترمنځ توپیر کوي چې په چوپتیا سره د تېرې میاشتې فایل بیا کاروي۔

اړوندې مقالې