লাভ:
- ব্যাশ, পাওয়ারশেল এবং পাইথন অটোমেশন স্ক্রিপ্ট তৈরি করার ক্ষমতা পরিষ্কার সীমাবদ্ধতা এবং কৃত্রিম বুদ্ধিমত্তা সহ নিরাপত্তা প্রহরী
- প্রতিটি স্ক্রিপ্টে ইডমপোটেন্সি, ড্রাই-রান, ত্রুটি পরিচালনা এবং রোলব্যাকের মতো নীতিগুলি যুক্ত করার ক্ষমতা এবং 'জেনারেট, শক্ত, যাচাই' চক্রটি প্রয়োগ করার ক্ষমতা
- বোঝার ক্ষমতা যে উত্পাদিত স্ক্রিপ্ট কার্যকর করার অর্থ এই নয় যে এটি নিরাপদ এবং ধ্বংসাত্মক লাইনগুলি পড়ে এবং পরীক্ষা করে দায়িত্ব নেওয়ার অভ্যাস অর্জন করা।
অটোমেশন স্ক্রিপ্ট: এআই সহ নিরাপদে ব্যাশ, পাওয়ারশেল এবং পাইথন তৈরি করা
সিস্টেম অ্যাডমিনিস্ট্রেটরের সবচেয়ে খারাপ শত্রু হল পুনরাবৃত্তিমূলক ম্যানুয়াল কাজ: প্রতিটি মেশিনের সাথে সংযোগ করা এবং লগগুলি পরিষ্কার করা, বিশটি সার্ভারে একই ব্যবহারকারী খোলা, প্রতিদিন সকালে একই স্বাস্থ্য পরীক্ষা চালানো। এই পুনরাবৃত্তি সময় এবং মানব ত্রুটি উভয়ের জন্য উন্মুক্ত। একটি অটোমেশন স্ক্রিপ্ট হল একটি ছোট প্রোগ্রাম যা এই পুনরাবৃত্তিগুলি কম্পিউটারে অর্পণ করে — বেশিরভাগ ক্ষেত্রে লিনাক্স বিশ্বে ব্যাশ (শেল কমান্ড ভাষা), উইন্ডোজ জগতে পাওয়ারশেল (মাইক্রোসফ্টের অটোমেশন শেল) এবং প্ল্যাটফর্ম-স্বাধীন কাজের জন্য পাইথনে লেখা হয়। AI এই স্ক্রিপ্টগুলির প্রথম খসড়া তৈরি, ব্যাখ্যা এবং উন্নত করার ক্ষেত্রে অবিশ্বাস্যভাবে দ্রুত। কিন্তু স্ক্রিপ্ট একটি পাঠ্য নয়, এটি একটি শক্তি যা আপনার সিস্টেমে কাজ করে; এক্সেল সূত্রের বিপরীতে, এটি ভুল হলে, এটি ফাইলটি মুছে দেয়, পরিষেবা বন্ধ করে এবং অ্যাক্সেস কেটে দেয়। এই কারণেই এই ইউনিটের প্রতিশ্রুতি হল: AI স্ক্রিপ্ট লেখে, আপনি এটি পড়েন, এটি পরীক্ষা করেন এবং দায়িত্ব নিয়ে এটি চালান।
এই ইউনিটে, আপনি শিখবেন কিভাবে AI দিয়ে নিরাপদ, পঠনযোগ্য এবং পুনরুদ্ধারযোগ্য স্ক্রিপ্ট তৈরি করা যায়; জীবন রক্ষাকারী নীতি যেমন বুদ্ধিমত্তা (একই স্ক্রিপ্ট দুবার চালানো ক্ষতির কারণ হয় না) এবং ড্রাই-রান; এবং আপনি শিখবেন যে একটি স্ক্রিপ্ট প্রোডাকশনে লাগানোর আগে যে পরীক্ষাগুলি দিয়ে যেতে হবে।
AI এর সাথে স্ক্রিপ্টিং এত শক্তিশালী কেন?
এমনকি একজন অভিজ্ঞ অ্যাডমিনিস্ট্রেটরও ব্যাশ লুপের সঠিক সিনট্যাক্স, পাওয়ারশেল cmdlet (কমান্ড) এর প্যারামিটার বা পাইথন ট্রাই/হার্ট বাই ব্লক ছাড়া নাও জানতে পারেন। AI এই শূন্যস্থানটি তাত্ক্ষণিকভাবে পূরণ করে: আপনি সাধারণ তুর্কি ভাষায় অভিপ্রায় ব্যাখ্যা করেন এবং এটি একটি কার্যকরী রূপরেখা তৈরি করে। তাছাড়া, আপনি AI কে একটি বিদ্যমান স্ক্রিপ্ট দিতে পারেন এবং বলতে পারেন "এটি ব্যাখ্যা করুন", "এরর হ্যান্ডলিং যোগ করুন", "এটি আরও পঠনযোগ্য করুন"। এটি শেখার বক্ররেখাকে সংক্ষিপ্ত করে এবং জুনিয়র দলের সদস্যদের গতিতে নিয়ে আসে।
কিন্তু ক্ষমতার সাথে দায়িত্ব আসে। বেশিরভাগ সময়, একটি AI-উত্পন্ন স্ক্রিপ্ট সঠিকভাবে "সুখী পথ" লিখে (যদি সবকিছু ঠিক থাকে); তবে এটি প্রান্তের ক্ষেত্রে (ফাইল অনুপস্থিত, ডিস্ক পূর্ণ, নেটওয়ার্ক ডাউন) মিস করতে পারে বা বিপজ্জনক অনুমান করতে পারে। তাই তিন ধাপে AI দিয়ে স্ক্রিপ্ট জেনারেশনের কথা ভাবুন: জেনারেট, হার্ডেন, ভেরিফাই।
ধাপে ধাপে: সুরক্ষিত স্ক্রিপ্ট প্রজন্ম
- উদ্দেশ্য এবং সীমাবদ্ধতা স্পষ্টভাবে লিখুন। কোন অপারেটিং সিস্টেম, কোন শেল সংস্করণ, কোন ফাইল পাথ, কোন অধিকার? যেমন "উবুন্টু 22.04, ব্যাশ 5, সুডো রুট নয়, শুধুমাত্র /opt/app/logs এর অধীনে চলে"। অস্পষ্ট চাহিদা বিপজ্জনক অনুমান তৈরি করে।
- নিরাপত্তা রেলিং জন্য জিজ্ঞাসা করুন. "ব্যর্থতার উপর থামাতে" স্ক্রিপ্টের প্রয়োজন (ব্যাশে -ইউও পাইপফেল সেট করুন), ধ্বংসাত্মক ক্রিয়াকলাপ নিশ্চিত করার জন্য প্রম্পট, অপারেশনের আগে ব্যাকআপ এবং ড্রাই-রান মোড। এই গার্ডেলগুলি ক্যাপচার এজ বলে যে এআই বাইপাস করে।
- অক্ষমতা লিখুন। দ্বিতীয়বার চালানোর সময় স্ক্রিপ্টের কোনো ত্রুটি বা ক্ষতি হওয়া উচিত নয়। "ব্যবহারকারী ইতিমধ্যে বিদ্যমান থাকলে এড়িয়ে যান", "ডিরেক্টরি তৈরি করুন যদি এটি বিদ্যমান না থাকে, যদি এটি বিদ্যমান থাকে তবে এটি স্পর্শ করবেন না" এর একটি যুক্তি স্থাপন করুন। এটি অটোমেশনকে বারবার নিরাপদে চালানোর অনুমতি দেয়।
- পড়ুন এবং বুঝুন। উত্পাদিত প্রতিটি লাইন পড়ুন। AI কে আলাদাভাবে ধ্বংসাত্মক কমান্ড (rm, Remove-Item, DROP) চিহ্নিত করতে বলুন।
- ড্রাই-রান দিয়ে পরীক্ষা করুন। প্রথমে, এটিকে প্রকৃত অপারেশনের পরিবর্তে "কী করতে হবে" মোডে চালান। আউটপুট আপনি যা আশা করেন তা হলে, আসল মোডে স্যুইচ করুন — এবং প্রথমে পরীক্ষা মেশিনে।
- আপনার প্রত্যাবর্তন প্রস্তুত করুন. স্ক্রিপ্ট ব্যাকআপ নিতে? আপনি কিভাবে ব্যাকআপ পুনরুদ্ধার করতে জানেন? লগিং আছে কি, আপনি কি পরে দেখতে পারেন?
টিপ: প্রতিটি ধ্বংসকারী স্ক্রিপ্টে একটি DRY_RUN=true ভেরিয়েবল এবং একটি --প্রয়োগ পতাকা অন্তর্ভুক্ত করুন। ডিফল্ট আচরণ কিছু মুছে না কি ঘটবে লিখতে হয়; প্রকৃত অপসারণ শুধুমাত্র কাজ করতে দিন যদি --প্রয়োগ স্পষ্টভাবে দেওয়া হয়। এই একটি অভ্যাস ক্যারিয়ার-দীর্ঘ বিপর্যয় প্রতিরোধ করে।
তিনটি মিনি কেস
কেস 1 — অদম্যতা 3 ঘন্টা সংরক্ষণ করা হয়েছে। একজন প্রশাসক একটি স্ক্রিপ্ট লিখেছেন যা 25 সার্ভারে একই মনিটরিং এজেন্ট ইনস্টল করেছে। প্রথম সংস্করণটি অদম্য ছিল না: যদি এজেন্টটি ইতিমধ্যে ইনস্টল করা থাকে তবে এটি দ্বিতীয় রানে কনফিগারেশনটি ভেঙে দিয়েছে। প্রকৌশলীর কাছে এআই অ্যাড ছিল "ইন্সটল করা আছে কিনা চেক করুন, এটা থাকলে এড়িয়ে যান" যুক্তি। পরবর্তী রক্ষণাবেক্ষণ উইন্ডোর সময় স্ক্রিপ্টটি দুর্ঘটনাক্রমে দুবার ট্রিগার হয়েছিল কিন্তু এটি কোন ক্ষতি করেনি। অদম্যতা একটি 25-সার্ভার পুনরুদ্ধার অপ্রয়োজনীয় করেছে।
কেস 2 — ড্রাই-রান একটি রুট ডিরেক্টরি সংরক্ষণ করেছে। একটি দল একটি ব্যাশ স্ক্রিপ্ট পেয়েছে যা পুরানো ব্যাকআপগুলিকে শুদ্ধ করেছে৷ যদি ভেরিয়েবলটি খালি থাকে, তাহলে পথটি /ব্যাকআপস/-এর পরিবর্তে / হয়ে ওঠে — একটি ক্লাসিক বিপদ। প্রকৌশলী প্রথমে এটিকে DRY_RUN মোডে চালান, আউটপুটে rm -rf/ এর অনুরূপ একটি লাইন দেখে নিথর হয়ে যান এবং একটি পরিবর্তনশীল চেক যোগ করেন (: "${BACKUP_DIR:?cannot be empty}")। ড্রাই রানিং একটি বাগ ধরা পড়ে যা উত্পাদনে যাওয়ার আগে পুরো ডিস্কটি মুছে ফেলবে।
কেস 3 - ত্রুটি ব্যবস্থাপনা এটিকে এক রাত জেগে উঠতে বাধা দেয়। একটি PowerShell স্ক্রিপ্ট যখন ডিস্ক পূর্ণ ছিল তখন লগ সংরক্ষণ করে। প্রথম সংস্করণটি নীরবে ব্যর্থ হবে যদি নেটওয়ার্ক শেয়ারটি অ্যাক্সেসযোগ্য না হয় এবং ডিস্কটি পূরণ করা চালিয়ে যায়। "প্রতিটি ধাপে সফলতা যাচাই করুন, যদি অসফল হয়, ই-মেইলকে অবহিত করুন এবং বন্ধ করুন" এআই-তে যোগ করা হয়েছে। এক সপ্তাহ পরে, পোস্টটি ভেঙে যায়; স্ক্রিপ্টটি থামিয়ে সতর্ক করে দিয়েছিল, ডিস্কটি পূর্ণ ছিল না, 3 টায় কেউ জেগে ওঠেনি।
চারটি অনুলিপিযোগ্য টেমপ্লেট
1) নিরাপদ ব্যাশ স্ক্রিপ্ট প্রজন্ম:
আপনার ভূমিকা: সিনিয়র লিনাক্স অটোমেশন ইঞ্জিনিয়ার। উবুন্টু 22.04 / ব্যাশ 5 এর জন্য একটি স্ক্রিপ্ট লিখুন। উদ্দেশ্য: [উদ্দেশ্য]। নিয়ম:- "set -euo pipefail" দিয়ে শুরু করুন।- ": ${VAR:?}" দিয়ে প্রয়োজনীয় ভেরিয়েবল যাচাই করুন।- ডিফল্ট DRY_RUN=true দিয়ে ধ্বংসাত্মক ক্রিয়াকলাপ সম্পাদন করুন; আসল অ্যাপ্লিকেশনটিকে শুধুমাত্র --প্রয়োগ পতাকা দিয়ে চালানো যাক। - stdout-এ প্রতিটি ধাপে লগ করুন, ত্রুটির জন্য একটি অর্থপূর্ণ বার্তা দিয়ে থামুন। - এটিকে বুদ্ধিমত্তাহীন করুন (যাতে এটি দ্বিতীয় রানে ক্ষতির কারণ না হয়)। তারপর: সম্ভাব্য ধ্বংসাত্মক লাইনগুলিকে আলাদাভাবে চিহ্নিত করুন এবং 3টি কেস লিখুন যা উৎপাদনের আগে আমাকে পরীক্ষা করতে হবে।
2) বিদ্যমান স্ক্রিপ্ট শক্ত করা:
নিম্নলিখিত স্ক্রিপ্টটি উত্পাদনের জন্য প্রস্তুত করুন: (1) ত্রুটি পরিচালনা এবং লগিং যুক্ত করুন, (2) এটিকে অদম্য করুন, (3) ড্রাই-রানের পিছনে ধ্বংসাত্মক কমান্ড রাখুন, (4) পরিবর্তনশীলটির হার্ড-কোডেড পাথ এবং গোপনীয়তা বের করুন। আপনি পরিবর্তিত প্রতিটি লাইন সংক্ষেপে বর্ণনা করুন এবং কেন। স্ক্রিপ্ট: [লিপি]
3) পাওয়ারশেল সুরক্ষিত অটোমেশন:
আপনার ভূমিকা: উইন্ডোজ অটোমেশন বিশেষজ্ঞ। একটি PowerShell 5.1 সামঞ্জস্যপূর্ণ স্ক্রিপ্ট লিখুন। উদ্দেশ্য: [উদ্দেশ্য]। নিয়ম:- "$ErrorActionPreference = 'Stop'" দিয়ে শুরু করুন।- Destructor cmdlets-এ -WhatIf সাপোর্ট যোগ করুন (ডিফল্ট WhatIf)।- চেষ্টা/ক্যাচ, লগ এরর দিয়ে প্রতিটি অ্যাকশন মুড়ে দিন।- ক্রেডেনশিয়াল হার্ডকোডিং; প্যারামিটার বা সুরক্ষিত ইনপুট ব্যবহার করুন। ধ্বংসাত্মক লাইন চিহ্নিত করুন এবং পূর্বাবস্থায় ফেরানোর পদক্ষেপগুলি লিখুন।
4) ক্রন/শিডিউল এক্সপ্রেশন ডিকোডিং এবং যাচাইকরণ:
নিম্নোক্ত ক্রোন বিবৃতিটি সরল তুর্কি ভাষায় ব্যাখ্যা করুন এবং পরবর্তী 3টি রানটাইম লিখুন: [অভিব্যক্তি] এছাড়াও, যদি আমার লক্ষ্য "[উদ্দেশ্য]" হয়, তাহলে এই বিবৃতিটি কি সঠিক বা আপনার প্রস্তাবিত কোনো সমাধান আছে? এছাড়াও সময়ের প্রভাব নোট করুন.
দুর্বল প্রম্পট / শক্তিশালী প্রম্পট
দুর্বল প্রম্পট:
আমাকে একটি স্ক্রিপ্ট লিখুন যা লগ পরিষ্কার করে।
এই প্রম্পটটি বিপজ্জনক: কোন OS, কোন ডিরেক্টরি, কোন বয়সসীমা, কোন নিরাপত্তা প্রহরী তা স্পষ্ট নয়। AI একটি ওয়ান-লাইনার, ধ্বংসাত্মক এবং যাচাইযোগ্য rm সরবরাহ করতে পারে।
শক্তিশালী প্রম্পট:
আপনার ভূমিকা: সিনিয়র লিনাক্স অটোমেশন ইঞ্জিনিয়ার। উবুন্টু 22.04 / ব্যাশের জন্য একটি লগ ক্লিনিং স্ক্রিপ্ট লিখুন। 30 দিনের বেশি পুরানো /opt/app/logs-এর অধীনে শুধুমাত্র .log ফাইলগুলি মুছুন৷ নিয়ম: সেট -ইউও পাইপফেইল; BACKUP_DIR এবং LOG_DIR ভেরিয়েবল যাচাই করুন (খালি থাকলে থামুন); মুছে ফেলার আগে লগ ফাইল তালিকা; DRY_RUN=true কে ডিফল্ট হতে দিন, শুধুমাত্র --apply দিয়ে প্রকৃত মুছে ফেলা হবে; এটা নির্বোধ হতে দিন. ধ্বংসাত্মক লাইন চিহ্নিত করুন এবং আমার পরীক্ষা করা উচিত এমন 3টি পরিস্থিতি লিখুন।
বৈশিষ্ট্য
দুর্বল/দ্রুত স্ক্রিপ্ট
কঠিন স্ক্রিপ্ট
ত্রুটি হ্যান্ডলিং
না, নীরব ব্যর্থতা
সেট -ইউও পাইপফেল, চেষ্টা করুন/ক্যাচ করুন
ধ্বংসাত্মক কর্ম
সরাসরি কাজ করে
ড্রাই-রান + ওপেন চেক পতাকা
রিস্টার্ট করুন
ক্ষতি হতে পারে
অদম্য, নিরাপদ
গোপন ব্যবস্থাপনা
হার্ড কোডেড
পরিবর্তনশীল/লুকানো ইনপুট
পূর্বাবস্থা
কোনোটিই নয়
ব্যাকআপ + পুনরুদ্ধারের পদক্ষেপ
সাধারণ ভুল
- ড্রাই-রান ছাড়াই ধ্বংসাত্মক স্ক্রিপ্ট চলছে। rm, Remove-Item, DROP-এর মধ্যে স্ক্রিপ্টটি না দেখলে প্রথমে ড্রাই মোড খরচ ডিস্কে।
- নাল ভেরিয়েবল চেকিং এড়িয়ে যান। একটি খালি পাথ ভেরিয়েবল /ব্যাকআপের পরিবর্তে / তৈরি করে; : "${VAR:?}" দিয়ে যাচাই করতে ভুলবেন না।
- ইডেমপোটেন্সি ভুলে যাওয়া। দুইবার চালানো হলে স্ক্রিপ্টটি ভেঙে যায়, অটোমেশনটিকে অবিশ্বস্ত করে তোলে।
- হার্ড কোডিং গোপনীয়তা. আপনি যখন সেই স্ক্রিপ্টটি শেয়ার করেন তখন স্ক্রিপ্টে পাসওয়ার্ড এবং কী লেখা একটি ফাঁস হয়।
- উৎপাদনে পরীক্ষা। প্রোডাকশনে প্রথম রান করা মানে মঞ্চে মহড়া; প্রথম পরীক্ষা মেশিন।
মনোযোগ: AI দ্বারা প্রদত্ত একটি স্ক্রিপ্ট গ্রহণ করবেন না শুধুমাত্র কারণ "এটি কাজ করেছে, এর মানে এটি সঠিক"। এটি কাজ করে বলে এর অর্থ এই নয় যে এটি ধ্বংসাত্মক নয়। একটি স্ক্রিপ্ট সুখী পথে চলতে পারে এবং প্রান্ত অবস্থায় ডেটা মুছে ফেলতে পারে; আসল পরীক্ষা হল এজ কেস।
সংক্ষেপে
অটোমেশন স্ক্রিপ্টগুলি পুনরাবৃত্তি দূর করে এবং মানুষের ত্রুটি হ্রাস করে; AI এই স্ক্রিপ্টগুলি তৈরি, ব্যাখ্যা এবং শক্ত করার ক্ষেত্রে অবিশ্বাস্যভাবে দ্রুত। কিন্তু স্ক্রিপ্ট একটি কার্যকরী শক্তি: যদি এটি ভুল হয়, এটি মুছে দেয়, বন্ধ করে, বাধা দেয়। সুতরাং "উৎপাদন করুন, শক্ত করুন, যাচাই করুন" চক্রটি স্থাপন করুন। প্রতিটি ধ্বংসাত্মক স্ক্রিপ্টে ত্রুটি পরিচালনা, বুদ্ধিমত্তা, ড্রাই-রান এবং ফলব্যাক অন্তর্ভুক্ত করুন। ভেরিয়েবলের গোপনীয়তা বের করুন, পরীক্ষা মেশিনে প্রথম চালান। এআই স্ক্রিপ্ট লিখেছেন; এটি পড়া, পরীক্ষা করা এবং এটি চালানোর দায়িত্ব নেওয়া আপনার কাজ।
আবেদন টাস্ক
এমন একটি কাজ বেছে নিন যা আপনি আপনার কাজে ম্যানুয়ালি পুনরাবৃত্তি করেন (যেমন লগ ক্লিনআপ, ব্যবহারকারী খোলা, স্বাস্থ্য পরীক্ষা)। উপরে "সিকিউর ব্যাশ স্ক্রিপ্ট" বা "পাওয়ারশেল সিকিউর অটোমেশন" টেমপ্লেট সহ AI থেকে একটি রূপরেখার জন্য অনুরোধ করুন। উত্পন্ন স্ক্রিপ্ট লাইন লাইন দ্বারা পড়ুন এবং ধ্বংসাত্মক লাইন চিহ্নিত করুন. একটি পরীক্ষা মেশিনে প্রথমে ড্রাই-রান মোডে এটি চালান, আপনার প্রত্যাশার সাথে আউটপুট তুলনা করুন। তারপরে স্ক্রিপ্টটি AI-তে ফিরিয়ে দিন এবং এটিকে "কঠিন" টেমপ্লেট দিয়ে পরিমার্জন করুন এবং দুটি সংস্করণের মধ্যে 5টি পার্থক্য নোট করুন৷
চেকলিস্ট
- [ ] আমি কি প্রম্পটে ওএস, শেল সংস্করণ, পাথ এবং অধিকারের মতো সীমাবদ্ধতা অন্তর্ভুক্ত করেছি?
- [ ] সেট -euo pipefail / $ErrorActionPreference='Stop' সহ স্ক্রিপ্টটি কি দোষ-সহনশীল?
- [ ] ড্রাই-রান/-এর পিছনে কি ধ্বংসাত্মক ক্রিয়াকলাপ রয়েছে এবং যদি একটি স্পষ্ট চেক পতাকার প্রয়োজন হয়?
- [ ] স্ক্রিপ্ট কি অদম্য (দ্বিতীয় রানে নিরাপদ)?
- [ ] আমি কি ভেরিয়েবল/গোপন ইনপুটের গোপনীয়তাগুলিকে কঠিন কোডিংয়ের পরিবর্তে বের করেছি?
- [ ] আমি কি টেস্ট মেশিনে প্রথম রান করেছি এবং একটি রিটার্ন প্ল্যান প্রস্তুত করেছি?