সংক্ষিপ্ত সংস্করণ
ইতিমধ্যে দুডেক উত্তর দিয়েছেন; সেই ডিরেক্টরিটি এমন স্ক্রিপ্টগুলির জন্য ব্যবহৃত হয় যা আপনার সিস্টেমে বলে যে জিনিসগুলিতে প্লাগ হয়ে যাওয়া বা এটি থেকে আন-প্লাগ হওয়া কীভাবে পরিচালনা করতে হয় tell
আমি কীভাবে প্রশ্নে স্ক্রিপ্টটি বুঝতে পেরেছি তা বোঝানোর চেষ্টা করার জন্য "দীর্ঘ সংস্করণ" দেখুন। মূলত কিছু চেক চালানো এবং কিছু এক্সটার্নাল ফাংশন লোড করার পরে এটি পরীক্ষা করে যে এটি start
কমান্ডের ক্রমটি চালানো উচিত , বা stop
, বা ত্রুটিটি আউট এবং প্রস্থান করা উচিত।
ওহ হ্যাঁ, আপনি যদি আরপিআই পছন্দ না করে এমনভাবে নেটওয়ার্কিং কনফিগারেশনগুলিকে স্পর্শ করেন তবে এটি খুব ভালভাবে আপনাকে দূরবর্তী অ্যাক্সেস থেকে লক করে ফেলতে পারে। আমি আমার আরপিআইতে অতীতে মোটামুটিভাবে আমার নেটওয়ার্কিং কনফিগারেশনগুলি স্পর্শ করেছি যে তাজা ইনস্টল থেকে শুরু করা সহজ। কায়ারফুল হোন এবং আরপিআই টেমারোলোলিকে এমন কোনও স্থানে নিয়ে যাওয়া বিবেচনা করুন যা লোকালিতে লগইন করার সহজ।
দীর্ঘ সংস্করণ
আমার আরপিআইতে এই ফাইলটির মাধ্যমে দেখে মনে হচ্ছে এটি ভাল মন্তব্য করেছে এবং এটি বহিরাগত ফাংশন কলগুলিতে ব্যবহার করে না। তবে আপনি সাধারণ শর্তাবলী চেয়েছেন তাই আমি এই ধরণের স্ক্রিপ্টগুলি কীভাবে বুঝতে পারি তা ব্যাখ্যা করার জন্য আমি যথাসাধ্য চেষ্টা করব, যদিও দেখে মনে হচ্ছে আপনি আমার মতো আরপিআই ব্যবহারকারী (হেডলেস রিমোট সার্ভার সেটআপ) ইয়া লুকানো ওয়াইফাই নেটওয়ার্কগুলিতে স্বতঃ পুনঃ সংযোগের জন্য আরপিআই স্ট্যাকএক্সচেঞ্জের উপর আমি কী লিখেছি তা যাচাই করতে পারে তা এতে আপনার সার্ভারের প্রয়োজনীয়তার জন্য অন্যান্য কৌশল থাকতে পারে।
আপনার প্রশ্নের উত্তর দিতে সহায়তা করতে এখানে শেল স্ক্রিপ্টিং সিনট্যাক্স এক্সপেন্যান্সের কিছুটা রয়েছে;
শেল ~.sh
স্ক্রিপ্টগুলিতে এটির মতো সংজ্ঞায়িত ফাংশনগুলি সন্ধান করা সাধারণ ;
function_name () {
echo "doing stuff for function_name"
}
এবং তারপরে function_name
স্ক্রিপ্টের মধ্যে দিয়ে কখনও কখনও অন্যান্য ফাংশনগুলির মধ্যে ডাকা হয়। ফাংশন, স্ক্রিপ্ট ফাইল এবং যদি স্ট্যাটাসটি কেবল চালানো কমান্ডের তালিকা থাকে। ফাংশন মধ্যে কাপড় ক্ষেত্রে {
এবং }
এবং চালানোর করছে ক্ষেত্রে if
statments মধ্যে কাপড় then
এবং fi
প্রতিকূলে চালিত হয় instences যেখানে else
বা elif
মধ্যে ব্যবহার করা হয় if
শর্তসাপেক্ষে statments।
যে ফাইলটি আমরা চিহ্নিত করছি সেগুলির জন্য এখানে ফাংশনগুলির নাম দেওয়া আছে do_start
, do_stop
এবং কিছু ফাংশন অন্য ফাইলে সংজ্ঞায়িত করা হয়েছে ... "এই ফাইলগুলি অন্য কোন ফাংশনকে ডিফেন্ড করা হয়?" বা "স্ক্রিপ্ট ফাইল বি থেকে কোনও ফাংশন লোড করে দিলে কীভাবে খুঁজে পাব?" দুটি প্রশ্ন যা আমাদের প্রথমে উত্তর দিতে হবে।
লাইন প্রায় 48
মধ্যে /etc/wpa_supplicant/ifdown.sh
একটা মন্তব্য লাইন (অর্থাত লাইন দিয়ে beguining #
; সঙ্গে simble এই স্ক্রিপ্ট intrupriter ... বেশিরভাগ দ্বারা উপেক্ষিত হয়) source functions
coventently পরবর্তী কয়েক লাইন উদ্দীষ্ট 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
ত্রুটিযুক্ত স্থিতির সাথে উপস্থিত হয় ।