সংক্ষিপ্ত সংস্করণ
ইতিমধ্যে দুডেক উত্তর দিয়েছেন; সেই ডিরেক্টরিটি এমন স্ক্রিপ্টগুলির জন্য ব্যবহৃত হয় যা আপনার সিস্টেমে বলে যে জিনিসগুলিতে প্লাগ হয়ে যাওয়া বা এটি থেকে আন-প্লাগ হওয়া কীভাবে পরিচালনা করতে হয় tell
আমি কীভাবে প্রশ্নে স্ক্রিপ্টটি বুঝতে পেরেছি তা বোঝানোর চেষ্টা করার জন্য "দীর্ঘ সংস্করণ" দেখুন। মূলত কিছু চেক চালানো এবং কিছু এক্সটার্নাল ফাংশন লোড করার পরে এটি পরীক্ষা করে যে এটি startকমান্ডের ক্রমটি চালানো উচিত , বা stop, বা ত্রুটিটি আউট এবং প্রস্থান করা উচিত।
ওহ হ্যাঁ, আপনি যদি আরপিআই পছন্দ না করে এমনভাবে নেটওয়ার্কিং কনফিগারেশনগুলিকে স্পর্শ করেন তবে এটি খুব ভালভাবে আপনাকে দূরবর্তী অ্যাক্সেস থেকে লক করে ফেলতে পারে। আমি আমার আরপিআইতে অতীতে মোটামুটিভাবে আমার নেটওয়ার্কিং কনফিগারেশনগুলি স্পর্শ করেছি যে তাজা ইনস্টল থেকে শুরু করা সহজ। কায়ারফুল হোন এবং আরপিআই টেমারোলোলিকে এমন কোনও স্থানে নিয়ে যাওয়া বিবেচনা করুন যা লোকালিতে লগইন করার সহজ।
দীর্ঘ সংস্করণ
আমার আরপিআইতে এই ফাইলটির মাধ্যমে দেখে মনে হচ্ছে এটি ভাল মন্তব্য করেছে এবং এটি বহিরাগত ফাংশন কলগুলিতে ব্যবহার করে না। তবে আপনি সাধারণ শর্তাবলী চেয়েছেন তাই আমি এই ধরণের স্ক্রিপ্টগুলি কীভাবে বুঝতে পারি তা ব্যাখ্যা করার জন্য আমি যথাসাধ্য চেষ্টা করব, যদিও দেখে মনে হচ্ছে আপনি আমার মতো আরপিআই ব্যবহারকারী (হেডলেস রিমোট সার্ভার সেটআপ) ইয়া লুকানো ওয়াইফাই নেটওয়ার্কগুলিতে স্বতঃ পুনঃ সংযোগের জন্য আরপিআই স্ট্যাকএক্সচেঞ্জের উপর আমি কী লিখেছি তা যাচাই করতে পারে তা এতে আপনার সার্ভারের প্রয়োজনীয়তার জন্য অন্যান্য কৌশল থাকতে পারে।
আপনার প্রশ্নের উত্তর দিতে সহায়তা করতে এখানে শেল স্ক্রিপ্টিং সিনট্যাক্স এক্সপেন্যান্সের কিছুটা রয়েছে;
শেল ~.shস্ক্রিপ্টগুলিতে এটির মতো সংজ্ঞায়িত ফাংশনগুলি সন্ধান করা সাধারণ ;
function_name () {
echo "doing stuff for function_name"
}
এবং তারপরে function_nameস্ক্রিপ্টের মধ্যে দিয়ে কখনও কখনও অন্যান্য ফাংশনগুলির মধ্যে ডাকা হয়। ফাংশন, স্ক্রিপ্ট ফাইল এবং যদি স্ট্যাটাসটি কেবল চালানো কমান্ডের তালিকা থাকে। ফাংশন মধ্যে কাপড় ক্ষেত্রে {এবং }এবং চালানোর করছে ক্ষেত্রে ifstatments মধ্যে কাপড় thenএবং fiপ্রতিকূলে চালিত হয় instences যেখানে elseবা elifমধ্যে ব্যবহার করা হয় ifশর্তসাপেক্ষে statments।
যে ফাইলটি আমরা চিহ্নিত করছি সেগুলির জন্য এখানে ফাংশনগুলির নাম দেওয়া আছে do_start, do_stopএবং কিছু ফাংশন অন্য ফাইলে সংজ্ঞায়িত করা হয়েছে ... "এই ফাইলগুলি অন্য কোন ফাংশনকে ডিফেন্ড করা হয়?" বা "স্ক্রিপ্ট ফাইল বি থেকে কোনও ফাংশন লোড করে দিলে কীভাবে খুঁজে পাব?" দুটি প্রশ্ন যা আমাদের প্রথমে উত্তর দিতে হবে।
লাইন প্রায় 48মধ্যে /etc/wpa_supplicant/ifdown.shএকটা মন্তব্য লাইন (অর্থাত লাইন দিয়ে beguining #; সঙ্গে simble এই স্ক্রিপ্ট intrupriter ... বেশিরভাগ দ্বারা উপেক্ষিত হয়) source functionscoventently পরবর্তী কয়েক লাইন উদ্দীষ্ট perpos labbling ~
# source functions
if [ -f /etc/wpa_supplicant/functions.sh ]; then
. /etc/wpa_supplicant/functions.sh
else
exit
fi
নোট করুন এটি স্ক্রিপ্টিং আচরণের একটি ভাল উদাহরণ; এটি অনুমান করার আগে কোনও ফাইল সেখানে রয়েছে কিনা তা পরীক্ষা করা হচ্ছে।
প্রথম বিট if [ -fনির্ধারিত ফাইল পাথের অধীনে কোনও ফাইলের জন্য পরীক্ষা করছে। এবং যদি thenফাইলের উপস্থাপনের মাধ্যমে ফাইলের কমান্ডের sourceশর্ট হ্যান্ড sourceহ'ল .তবে আমি এটিকে আমার স্ক্রিপ্টগুলিতে ব্যবহার করা এড়াতে পারি কারণ এটি cpঅন্য কমান্ড দ্বারা মিসিনট্রেটেড হতে পারে তবে আমার কাছে ডিগ্রি আছে) পথ দ্বারা সংজ্ঞায়িত ফাইলটি। এরপরে একটি elseচেক যা যদি সেই ফাইলটি exit 0স্থিতি 0স্ক্রিপ্টের সাথে প্রস্থান করতে না পাওয়া যায় । তারপরে প্রথম ifস্ট্যাটমেন্টটি fiপাস না হলে পদক্ষেপটি বন্ধ করার জন্য পদক্ষেপগুলি শেষ হয় । অথবা অন্য কথায় যদি /etc/wpa_supplicant/funitions.sh না দেয়উপস্থিত থাকলে প্রস্থান করুন, অন্যথায় functions ফাংশনগুলি লোড করুন এবং প্রক্রিয়া চালিয়ে যান। এই ধরণের ডাবল-চেকিং যদি কোনও মান বা ফাইল উপস্থিত থাকে তবে এমন কিছু যা আপনি স্ক্রিপ্টের পাশাপাশি একই সাথে অন্যান্য স্ক্রিপ্ট, -fফাইলগুলির জন্য -nচেকগুলি, স্ট্রিংয়ের দৈর্ঘ্য -xপরীক্ষা করেন , কেবল ফাইল নেই তবে চেক করেন যদি স্ক্রিপ্টটি চালিত ব্যবহারকারীদের ফাইলটির নির্ধারিত এক্সিকিউটিভ অনুমতি -s থাকে, কোনও ফাইল ফাঁকা আছে -nকিনা তা পরীক্ষা করে দেখুন , স্ট্রিংটি খালি বা nullমান নয় কিনা তা পরীক্ষা করে এবং =স্ট্যাটিমেটের স্ট্রিংগুলি (বা মান) তুলনা করে if। ifস্ট্যাটাসযুক্ত লিনাক্সের শেল এবং ব্যাশ স্ক্রিপ্টগুলিতে আপনি অন্য কিছু দেখতে পাবেন elifতবে তা অন্য এক দিনের জন্য। এই স্ক্রিপ্টের মধ্যে অন্যান্য কৌশল ছাড়াও ব্যবহৃত হয়ifযেমন statments ||"বা", &&"এবং", এবং !"না" এই ধরনের লাইনে যেমন অপারেটর, 55~
# quit if executables are not installed
if [ ! -x "$WPA_SUP_BIN" ] || [ ! -x "$WPA_CLI_BIN" ]; then
exit 0
fi
~ যা কেবল, রাজ্য করা ফাইলটি দ্বারা সংজ্ঞায়িত $WPA_SUP_BINহয় না এক্সিকিউটেবল বা ফাইল দ্বারা সংজ্ঞায়িত $WPA_CLI_BINহয় না এক্সিকিউটেবল তারপর অবস্থা সাথে প্রস্থানের 0আরও প্রক্রিয়াকরণের ছাড়া। এগুলি প্রথমে জটিল দেখাতে পারে তবে আরও সাধারণ বাক্য গঠনে উচ্চস্বরে সেগুলি পড়া সহজ বিষয়গুলির জন্য প্রথম শেখার ক্ষেত্রে এবং #জটিল বিষয়গুলির সাথে মন্তব্যগুলি যুক্ত করা যখন বিষয়টির উত্তরোত্তর শিখতে বা ফিরে আসার সময় সত্যই সহায়ক।
অভ্যন্তরীণভাবে উত্সাহিত ifupdown.shফাইলটি ফাইলের মধ্যে কী নামে ডাকা হয়েছে তা সম্পর্কে যদি অনিশ্চিত হয় তবে তাও পরীক্ষা করা উচিত । আমি পরামর্শ দিয়েছি nano /etc/wpa_supplicant/functions.shএবং তারপরে ফাংশনটির নামটি ব্যবহার করতে ^wবা তার Ctrl+wসম্পর্কে সন্ধানের জন্য যা সম্পর্কে আপনি আরও জানতে চান। কারণ এই কাজের জন্য কখনই কোনও কাজ এই স্ক্রিপ্টটিকে কল করে এবং functions.shবেশিরভাগ পাজেল পেরসের কৌতূহল খুঁজে পাওয়া যাবে।
এখন বিষয়গুলি কিছুটা স্বতন্ত্র 'বৃত্তাকার লাইনটি ছেড়ে দিতে শুরু করে 135যেখানে একটি স্ট্যাটামেন্ট caseশুরু হয়, এই ধরণের স্ট্যাটিমেটের একটি কাঠামোগত কাঠামো রয়েছে যা আমরা অপ্পেশারগুলি ডিকোড করতে সহায়তা করতে পারি।
case $some_variable in
start)
echo "The word [start] was detected in \$some_variable"
;;
stop)
echo "The word [stop] was detected in \$some_variable"
;;
*)
echo "The word [$some_variable] was detected in \$some_variable but not understood"
;;
esac
উপরের উদাহরণে অন্যান্য caseস্ট্যাটাসের মতো আমরা মূলত $some_variableডিফল্ট হওয়া মূল শব্দের বিষয়বস্তুগুলি অনুসন্ধান করছি , startবা stopযদি এবং কী শব্দটি পাওয়া যায় তবে ট্রেইলিং )এবং প্রিজিডিংয়ের মধ্যে পাওয়া কমান্ডগুলি ইস্যু করে যা ;;বিভিন্ন কীগুলির জন্য পৃথক পদক্ষেপগুলি পৃথক করে তোলে to শব্দ পাওয়া গেছে। কিছু স্ক্রিপ্টে নোট করুন আপনি লুপগুলির caseমধ্যে এই স্ট্যাটাসগুলি খুঁজে পেতে পারেন forতবে তাও অন্য এক দিনের জন্য।
স্ক্রিপ্টের caseমধ্যে থাকা স্টেটমেন্টগুলির ক্ষেত্রে ifupdown.shআমরা প্রথমে ভেরিয়েবলের মধ্যে startবা stopস্থিতির সাথে মেলে $MODEএবং $PHASEমানটির সাথে মিল রেখে মান ব্যবহার করি pre-upবা post-upকমান্ডের সিক্যুয়েন্স ডাকা উচিত বা তার পরিবর্তে আদেশের সিক্যুয়েন্স pre-downবা post-downকলটি কল করা উচিত। যদি নীথার startনা হয় stopযেখানে সনাক্ত করা যায় তবে কোনও ত্রুটি লগড , মুদ্রিত এবং স্ক্রিপ্টটি 1ত্রুটিযুক্ত স্থিতির সাথে উপস্থিত হয় ।