فائدہ:
- واضح رکاوٹوں کے ساتھ Bash، PowerShell اور Python آٹومیشن اسکرپٹس تیار کرنے کی صلاحیت اور مصنوعی ذہانت کے ساتھ سیکیورٹی گارڈریلز
- ہر اسکرپٹ میں آئیڈیمپوٹینسی، ڈرائی رن، ایرر ہینڈلنگ اور رول بیک جیسے اصولوں کو شامل کرنے اور 'جنریٹ، سخت، تصدیق' سائیکل کو لاگو کرنے کی صلاحیت
- یہ سمجھنے کی صلاحیت کہ تیار کردہ اسکرپٹ پر عمل درآمد کا مطلب یہ نہیں ہے کہ یہ محفوظ ہے اور تباہ کن لائنوں کو پڑھ کر اور جانچ کر ذمہ داری قبول کرنے کی عادت ڈالیں۔
آٹومیشن اسکرپٹس: AI کے ساتھ محفوظ طریقے سے Bash، PowerShell اور Python تیار کرنا
سسٹم ایڈمنسٹریٹر کا سب سے بڑا دشمن بار بار دستی کام ہے: ہر مشین سے جڑنا اور لاگز کو صاف کرنا، ایک ہی صارف کو بیس سرورز پر کھولنا، ہر صبح ایک ہی ہیلتھ چیک چلانا۔ یہ تکرار وقت اور انسانی غلطی دونوں کے لیے کھلا ہے۔ آٹومیشن اسکرپٹ ایک چھوٹا پروگرام ہے جو ان تکرار کو کمپیوٹر کو سونپتا ہے — اکثر لینکس کی دنیا میں باش (شیل کمانڈ لینگویج) میں لکھا جاتا ہے، ونڈوز کی دنیا میں پاور شیل (مائیکروسافٹ کا آٹومیشن شیل) اور پلیٹ فارم سے آزاد کام کے لیے ازگر۔ AI ان اسکرپٹ کے پہلے مسودے کو تیار کرنے، سمجھانے اور بہتر بنانے میں ناقابل یقین حد تک تیز ہے۔ لیکن اسکرپٹ کوئی متن نہیں ہے، یہ آپ کے سسٹم میں کام کرنے والی ایک قوت ہے۔ ایکسل فارمولے کے برعکس، اگر یہ غلط ہے، تو یہ فائل کو حذف کر دیتا ہے، سروس کو روکتا ہے، اور رسائی کو کم کر دیتا ہے۔ اس لیے اس یونٹ کا وعدہ یہ ہے کہ: AI اسکرپٹ لکھتا ہے، آپ اسے پڑھتے ہیں، اسے جانچتے ہیں اور ذمہ داری لیتے ہوئے اسے چلاتے ہیں۔
اس یونٹ میں، آپ سیکھیں گے کہ AI کے ساتھ محفوظ، پڑھنے کے قابل اور بازیافت کے قابل اسکرپٹس کیسے تیار کی جاتی ہیں۔ زندگی بچانے والے اصول جیسے idempotency (ایک ہی اسکرپٹ کو دو بار چلانے سے نقصان نہیں ہوتا) اور ڈرائی رن؛ اور آپ ان جانچوں کو سیکھیں گے جن سے اسکرپٹ کو پروڈکشن میں ڈالنے سے پہلے گزرنا ضروری ہے۔
AI کے ساتھ اسکرپٹنگ اتنی طاقتور کیوں ہے؟
یہاں تک کہ ایک تجربہ کار منتظم کو بھی Bash لوپ کی صحیح ترکیب، PowerShell cmdlet (کمانڈ) کے پیرامیٹرز، یا Python کی کوشش/ماسوائے دل کے بلاک کے بارے میں معلوم نہیں ہو سکتا۔ AI اس خلا کو فوری طور پر پُر کرتا ہے: آپ سادہ ترکی میں ارادے کی وضاحت کرتے ہیں، اور یہ ایک ورکنگ خاکہ تیار کرتا ہے۔ مزید یہ کہ، آپ AI کو ایک موجودہ اسکرپٹ دے سکتے ہیں اور کہہ سکتے ہیں "اس کی وضاحت کریں"، "ایڈ ایرر ہینڈلنگ"، "اسے مزید پڑھنے کے قابل بنائیں"۔ یہ سیکھنے کا منحنی خطوط کم کرتا ہے اور جونیئر ٹیم کے اراکین کو تیز رفتار بناتا ہے۔
لیکن طاقت کے ساتھ ذمہ داری آتی ہے۔ زیادہ تر وقت، AI سے تیار کردہ اسکرپٹ "خوشی کا راستہ" کو صحیح طریقے سے لکھتا ہے (اگر سب ٹھیک ہے)؛ لیکن یہ ایج کیسز (فائل غائب، ڈسک فل، نیٹ ورک ڈاؤن) کو مس کر سکتا ہے یا خطرناک مفروضے بنا سکتا ہے۔ لہذا تین مراحل میں AI کے ساتھ اسکرپٹ جنریشن کے بارے میں سوچیں: پیدا کریں، سخت کریں، تصدیق کریں۔
مرحلہ وار: محفوظ اسکرپٹ جنریشن
- نیت اور پابندی واضح طور پر لکھیں۔ کون سا آپریٹنگ سسٹم، کون سا شیل ورژن، کون سا فائل پاتھ، کون سے حقوق؟ جیسے "اوبنٹو 22.04، باش 5، سوڈو روٹ نہیں، صرف /opt/app/logs کے تحت چلتا ہے"۔ مبہم مطالبہ خطرناک مفروضہ پیدا کرتا ہے۔
- حفاظتی ریلنگ کے لیے پوچھیں۔ اسکرپٹ کو "ناکامی پر رکنے" (باش میں سیٹ -euo پائپ فیل)، تباہ کن کارروائیوں کی تصدیق، آپریشن سے پہلے بیک اپ، اور ڈرائی رن موڈ کے لیے پرامپٹ کی ضرورت ہے۔ یہ گارڈریلز کیپچر ایج بتاتے ہیں کہ AI بائی پاس کرتا ہے۔
- بے ضمیر لکھیں۔ دوسری بار چلانے پر اسکرپٹ کو کوئی غلطی یا نقصان نہیں ہونا چاہیے۔ "اگر صارف پہلے سے موجود ہے تو اسے چھوڑ دیں"، "اگر یہ موجود نہیں ہے تو ڈائریکٹری بنائیں، اگر موجود ہے تو اسے ہاتھ نہ لگائیں" کی منطق قائم کریں۔ یہ آٹومیشن کو بار بار محفوظ طریقے سے چلانے کی اجازت دیتا ہے۔
- پڑھیں اور سمجھیں۔ تیار کردہ ہر لائن پڑھیں۔ AI سے تباہ کن کمانڈز (rm, Remove-Item, DROP) کو الگ سے نشان زد کرنے کو کہیں۔
- ڈرائی رن کے ساتھ ٹیسٹ کریں۔ سب سے پہلے، اسے اصل کارروائیوں کے بجائے "بتانے کے لیے کیا کرنا ہے" موڈ میں چلائیں۔ اگر آؤٹ پٹ وہی ہے جس کی آپ توقع کرتے ہیں، اصلی موڈ پر سوئچ کریں — اور پہلے ٹیسٹ مشین پر۔
- اپنی واپسی کی تیاری کریں۔ کیا اسکرپٹ بیک اپ لیتا ہے؟ کیا آپ جانتے ہیں کہ بیک اپ کو کیسے بحال کرنا ہے؟ کیا وہاں لاگنگ ہے، کیا آپ دیکھ سکتے ہیں کہ یہ بعد میں کیا کر رہا ہے؟
ٹپ: ہر ڈسٹرکٹر اسکرپٹ میں ایک DRY_RUN=true متغیر اور --apply پرچم شامل کریں۔ پہلے سے طے شدہ رویہ یہ ہے کہ کچھ بھی حذف کیے بغیر کیا ہو گا لکھنا۔ اصل حذف کرنے کو صرف اس صورت میں کام کرنے دیں جب --apply واضح طور پر دیا گیا ہو۔ یہ ایک عادت کیریئر کی طویل آفات سے بچاتی ہے۔
تین چھوٹے مقدمات
کیس 1 - Idempotency 3 گھنٹے بچ گئی۔ ایک منتظم نے ایک اسکرپٹ لکھا جس نے 25 سرورز پر ایک ہی مانیٹرنگ ایجنٹ کو انسٹال کیا۔ پہلا ورژن غیرمعمولی نہیں تھا: اگر ایجنٹ پہلے سے انسٹال ہو تو اس نے دوسری بار کنفیگریشن کو توڑ دیا۔ انجینئر کے پاس AI کا اضافہ تھا "چیک کریں کہ آیا یہ انسٹال ہے، اگر یہ ہے تو اسے چھوڑ دیں" منطق۔ اگلی مینٹیننس ونڈو کے دوران اسکرپٹ غلطی سے دو بار ٹرگر ہوا لیکن اس سے کوئی نقصان نہیں ہوا۔ Idempotency نے 25 سرور کی بحالی کو غیر ضروری بنا دیا۔
کیس 2 - ڈرائی رن نے روٹ ڈائرکٹری کو محفوظ کیا۔ ایک ٹیم کو ایک Bash اسکرپٹ موصول ہوا جس نے پرانے بیک اپ کو صاف کیا۔ اگر متغیر خالی تھا، تو راستہ بن گیا/بجائے /بیک اپ/ — ایک کلاسک خطرہ۔ انجینئر نے سب سے پہلے اسے DRY_RUN موڈ میں چلایا، جب اس نے آؤٹ پٹ میں rm -rf/ سے ملتی جلتی لائن دیکھی تو جم گیا، اور ایک متغیر چیک شامل کیا (: "${BACKUP_DIR:?cannot be empty}")۔ ڈرائی رننگ نے ایک ایسا بگ پکڑا جو پوری ڈسک کو پروڈکشن میں جانے سے پہلے ہی صاف کر دے گا۔
کیس 3 - خرابی کے انتظام نے اسے ایک رات جاگنے سے روک دیا۔ جب ڈسک بھری ہوئی تھی تو پاور شیل اسکرپٹ لاگز کو آرکائیو کر رہی تھی۔ پہلا ورژن خاموشی سے ناکام ہو جائے گا اگر نیٹ ورک کا حصہ ناقابل رسائی تھا اور ڈسک کو بھرنا جاری رکھا۔ "ہر قدم پر کامیابی کی تصدیق کریں، اگر ناکام ہو تو، ای میل کو مطلع کریں اور روکیں" کو AI میں شامل کیا گیا تھا۔ ایک ہفتے کے بعد پوسٹ ٹوٹ گئی۔ اسکرپٹ نے روکا اور خبردار کیا، ڈسک بھری نہیں تھی، کوئی صبح 3 بجے نہیں اٹھا۔
چار کاپی کرنے کے قابل ٹیمپلیٹس
1) محفوظ باش اسکرپٹ جنریشن:
آپ کا کردار: سینئر لینکس آٹومیشن انجینئر۔ Ubuntu 22.04 / Bash 5 کے لیے اسکرپٹ لکھیں۔ مقصد: [مقصد]۔ اصول:- "set -euo pipefail" کے ساتھ شروع کریں۔- مطلوبہ متغیرات کو ": ${VAR:?}" سے درست کریں۔- ڈیفالٹ DRY_RUN=true کے ساتھ تباہ کن کارروائیاں انجام دیں۔ حقیقی ایپلیکیشن کو صرف --apply پرچم کے ساتھ چلنے دیں۔ - ہر قدم کو stdout میں لاگ ان کریں، غلطی پر معنی خیز پیغام کے ساتھ رکیں۔ - اسے کمزور بنائیں (تاکہ دوسری بار اسے نقصان نہ پہنچے)۔ پھر: ممکنہ طور پر تباہ کن لائنوں کو الگ سے نشان زد کریں اور 3 کیسز لکھیں جن کی مجھے پروڈکشن سے پہلے جانچ کرنے کی ضرورت ہے۔
2) موجودہ اسکرپٹ کو سخت کرنا:
مندرجہ ذیل اسکرپٹ کو پروڈکشن کے لیے تیار کریں: (1) ایرر ہینڈلنگ اور لاگنگ کو شامل کریں، (2) اسے غیرمعمولی بنائیں، (3) ڈرائی رن کے پیچھے تباہ کن کمانڈز رکھیں، (4) متغیر میں ہارڈ کوڈ والے راستے اور راز نکالیں۔ ہر سطر کو مختصراً بیان کریں جو آپ نے تبدیل کیا اور کیوں۔ اسکرپٹ: [اسکرپٹ]
3) پاور شیل محفوظ آٹومیشن:
آپ کا کردار: ونڈوز آٹومیشن ماہر۔ PowerShell 5.1 ہم آہنگ اسکرپٹ لکھیں۔ مقصد: [مقصد]۔ رولز:- "$ErrorActionPreference = 'Stop' کے ساتھ شروع کریں"۔ -ڈسٹرکٹر cmdlets میں -WhatIf سپورٹ شامل کریں (ڈیفالٹ WhatIf)۔ ہر ایکشن کو ٹرائی/کیچ کے ساتھ لپیٹیں، لاگ ایرر۔- اسنادی ہارڈ کوڈنگ؛ پیرامیٹر یا محفوظ ان پٹ استعمال کریں۔ تباہ کن لائنوں کو نشان زد کریں اور کالعدم کرنے کے اقدامات لکھیں۔
4) کرون/شیڈیول ایکسپریشن ڈی کوڈنگ اور تصدیق:
مندرجہ ذیل کرون بیان کی سادہ ترکی میں وضاحت کریں اور اگلے 3 رن ٹائمز لکھیں: [اظہار] اس کے علاوہ، اگر میرا مقصد "[مقصد]" ہے، تو کیا یہ بیان درست ہے یا آپ کی تجویز کردہ کوئی اصلاح ہے؟ وقت کی مدت کے اثر کو بھی نوٹ کریں۔
کمزور فوری / مضبوط اشارہ
کمزور اشارہ:
مجھے ایک اسکرپٹ لکھیں جو لاگ کو صاف کرے۔
یہ پرامپٹ خطرناک ہے: یہ واضح نہیں ہے کہ کون سا OS، کون سی ڈائرکٹری، کون سی عمر کی حد، کون سی سیکیورٹی گارڈریل۔ AI ایک لائنر، تباہ کن اور ناقابل تصدیق rm فراہم کر سکتا ہے۔
طاقتور اشارہ:
آپ کا کردار: سینئر لینکس آٹومیشن انجینئر۔ Ubuntu 22.04 / Bash کے لیے لاگ کلیننگ اسکرپٹ لکھیں۔ /opt/app/logs کے تحت صرف .log فائلوں کو حذف کریں جو 30 دن سے زیادہ پرانی ہیں۔ قواعد: سیٹ -euo پائپ فیل؛ BACKUP_DIR اور LOG_DIR متغیرات کی توثیق کریں (اگر خالی ہو تو روکیں)؛ حذف کرنے سے پہلے لاگ فائل کی فہرست؛ DRY_RUN=true کو ڈیفالٹ ہونے دیں، اصل حذف صرف --apply کے ساتھ؛ اسے بے حس رہنے دو۔ تباہ کن لائنوں کو نشان زد کریں اور 3 منظرنامے لکھیں جن کی مجھے جانچ کرنی چاہیے۔
خصوصیت
کمزور/تیز اسکرپٹ
سخت سکرپٹ
ہینڈلنگ میں خرابی
نہیں، خاموش ناکامی۔
سیٹ -euo پائپ فیل، آزمائیں/کیچ کریں۔
تباہ کن کارروائی
براہ راست کام کرتا ہے۔
ڈرائی رن + اوپن چیک فلیگ
دوبارہ شروع کریں۔
نقصان کا سبب بن سکتا ہے
بے ضمیر، محفوظ
خفیہ انتظام
مشکل کوڈت
متغیر/پوشیدہ ان پٹ
کالعدم
کوئی نہیں۔
بیک اپ + بحالی کا مرحلہ
عام غلطیاں
- ڈرائی رن کے بغیر تباہ کن اسکرپٹ چلانا۔ اسکرپٹ کو نہ دیکھنا جس میں rm، Remove-Item، DROP پہلے ڈرائی موڈ لاگت ڈسک پر مشتمل ہے۔
- null متغیر چیکنگ کو چھوڑ دیں۔ ایک خالی راستہ متغیر /بیک اپس/ کے بجائے / بناتا ہے؛ : "${VAR:?}" سے تصدیق کرنا یقینی بنائیں۔
- Idempotency کو بھول جانا۔ اسکرپٹ ٹوٹ جاتا ہے جب دو بار چلایا جاتا ہے، آٹومیشن ناقابل اعتماد بناتا ہے.
- سخت کوڈنگ راز۔ جب آپ اس اسکرپٹ کو شیئر کرتے ہیں تو اسکرپٹ میں پاس ورڈ اور کلید لکھنا ایک لیک ہوتا ہے۔
- پیداوار میں جانچ۔ پروڈکشن میں پہلی بار کرنے کا مطلب ہے اسٹیج پر مشق کرنا۔ ٹیسٹ مشین سب سے پہلے.
دھیان دیں: AI کی طرف سے دی گئی اسکرپٹ کو صرف اس لیے قبول نہ کریں کہ "اس نے کام کیا، اس کا مطلب ہے کہ یہ درست ہے"۔ صرف اس لیے کہ یہ کام کرتا ہے اس کا مطلب یہ نہیں ہے کہ یہ تباہ کن نہیں ہے۔ ایک اسکرپٹ خوشگوار راستے پر چل سکتا ہے اور کنارے کی حالت میں ڈیٹا کو حذف کرسکتا ہے۔ اصل امتحان ایج کیسز ہیں۔
خلاصہ میں
آٹومیشن اسکرپٹس تکرار کو ختم کرتی ہیں اور انسانی غلطی کو کم کرتی ہیں۔ AI ان اسکرپٹس کو بنانے، سمجھانے اور سخت کرنے میں ناقابل یقین حد تک تیز ہے۔ لیکن اسکرپٹ ایک کام کرنے والی قوت ہے: اگر یہ غلط ہے تو، یہ حذف، روکتا، مداخلت کرتا ہے. لہذا "پیداوار، سخت، تصدیق" سائیکل قائم کریں. ہر تباہ کن اسکرپٹ میں ایرر ہینڈلنگ، آئیڈیمپوٹینسی، ڈرائی رن اور فال بیک شامل کریں۔ متغیر کے راز کو نکالیں، ٹیسٹ مشین پر پہلا کام کریں۔ AI سکرپٹ لکھتا ہے؛ اسے پڑھنا، اسے جانچنا، اور اسے چلانے کی ذمہ داری لینا آپ کا کام ہے۔
درخواست کا کام
ایک کام کا انتخاب کریں جسے آپ اپنے کام میں دستی طور پر دہراتے ہیں (مثلاً لاگ کلین اپ، یوزر اوپننگ، ہیلتھ چیک)۔ اوپر دی گئی "Secure Bash اسکرپٹ" یا "PowerShell محفوظ آٹومیشن" ٹیمپلیٹ کے ساتھ AI سے ایک خاکہ کی درخواست کریں۔ تیار کردہ اسکرپٹ لائن کو لائن سے پڑھیں اور تباہ کن لائنوں کو نشان زد کریں۔ اسے ٹیسٹ مشین پر پہلے ڈرائی رن موڈ میں چلائیں، آؤٹ پٹ کا اپنی توقع سے موازنہ کریں۔ پھر اسکرپٹ کو AI کو واپس دیں اور اسے "سخت" ٹیمپلیٹ کے ساتھ بہتر کریں اور دونوں ورژن کے درمیان 5 فرق نوٹ کریں۔
چیک لسٹ
- کیا میں نے پرامپٹ میں OS، شیل ورژن، راستے اور حقوق جیسی پابندیاں شامل کی ہیں؟
- کیا اسکرپٹ سیٹ -euo pipefail / $ErrorActionPreference='Stop' کے ساتھ غلطی سے روادار ہے؟
- کیا ڈرائی رن کے پیچھے تباہ کن کارروائیاں ہیں/-اگر اور ایک واضح چیک فلیگ کی ضرورت ہے؟
- کیا اسکرپٹ آئیڈیمپوٹینٹ ہے (دوسرے رن پر محفوظ)؟
- کیا میں نے متغیر/خفیہ ان پٹ کے راز کو سخت کوڈنگ کے بجائے نکالا ہے؟
- کیا میں نے ٹیسٹ مشین پر پہلا رن کیا ہے اور واپسی کا منصوبہ تیار کیا ہے؟