যে ফাইলটিতে কেবল রুট লেখার অনুমতি রয়েছে এবং স্ক্রিপ্টের ক্রিয়াকলাপ চালিয়ে যাওয়ার জন্য কীভাবে একটি লাইন যুক্ত করবেন


9

আমি বাশ স্ক্রিপ্টিং শেখার চেষ্টা করছি। আমি একটি ব্যবহারিক সমস্যা নিয়ে কাজ করছি এবং এক পর্যায়ে আমাকে একটি ফাইলের সাথে একটি লাইন যুক্ত করতে হবে যা rootলেখার অনুমতি দরকার ।

কোডটি এর মতো দেখাচ্ছে:

# some code
echo "add this line to the code" >> fileName
# some code

স্ক্রিপ্টটি কোনওভাবে রুট পাসওয়ার্ডের জন্য জিজ্ঞাসা করা, পাসওয়ার্ডটি যাচাই করা এবং সফল প্রমাণীকরণের মাধ্যমে ফাইলটি সংশোধন করা সম্ভব? এরপরে স্ক্রিপ্টটি ব্যবহারকারী মোডে ফিরে আসে এবং কমান্ডের প্রয়োগটি চালিয়ে যেতে পারে।

উত্তর:


13

sudoম্যান পৃষ্ঠায় একটি টিপ রয়েছে যা ব্যাখ্যা করে যে কীভাবে এটি করা যায়। এখানে আমার ওয়ান-লাইনার:

#!/usr/bin/bash
sudo sh -c "echo \"add this line to the code\" >> fileName"

স্পষ্টতই, সুযোগ-সুবিধা পাওয়ার জন্য আপনাকে প্রথমে আপনার ব্যবহারকারী সেট আপ করতে হবে sudoshশেল রুট মালিকানাধীন ফাইলে ফেরৎ কারণ ব্যবহার করা হয়। echoকমান্ডের জন্য ব্যবহৃত উদ্ধৃতিগুলিও আমাকে পালাতে হয়েছিল ।


2

su বেশিরভাগ ইউনিক্স সিস্টেমে উপলব্ধ এবং এটি কাজ করা উচিত:

su root -c 'echo "add this line to the code" >> fileName'

এর বিপরীতে sudo, পাসওয়ার্ডগুলি ক্যাশে হয়েছে বলে মনে হয় না su
রাইনে এভারেট

@ রেইন এভারেট: আমি সুডোর সাথে পরিচিত নই। তবে 'সু' এর আচরণটি আসলে ওপি-র স্ক্রিপ্টের প্রয়োজন অনুসারে। বেশিরভাগ সময় আমি 'su' অন্যভাবে ব্যবহার করি: মূল থেকে অন্য ব্যবহারকারীর কাছে পরিবর্তন। এক্ষেত্রে কোনও পাসওয়ার্ডের দরকার নেই।
चमत्कार 173

1

আপনি এর teeসাথে ব্যবহার করতে পারেন sudo:

echo "add this line to the code" | sudo tee -a filename > /dev/null

echoএর আউটপুটটি |( পাইপ ) দিয়ে পুনঃনির্দেশিত sudo teeস্ট্যান্ডার্ড ইনপুটtee থেকে পড়া এবং এই ক্ষেত্রে কোনও প্রদত্ত ফাইল স্ট্যান্ডার্ড আউটপুটে লেখায় । (বা ) ফাইলগুলিতে সংযোজন করে তোলে , এটি ছাড়া ফাইলগুলি ওভাররাইট করা হবে। হিসাবে চালানোর সাথে আছেন এটা রুট-অনুমতিসহ ফাইল খোলে। অবশেষে, স্ট্যান্ডার্ড আউটপুট থেকে আউটপুট দমন করে ।filename-a--appendteeteesudo> /dev/nulltee

ব্যবহার করার একটি সুবিধা teeপরিবর্তে মাত্র পুরো কমান্ড শুরু সঙ্গে ফেরৎ সহ su -cবা sudo sh -cহয়, তাহলে আপনি আছে না যে কোন ভাবেই প্রাথমিক কমান্ডের উদ্ধৃত (ইতিমধ্যে কোট ধারণকারী সময়ে বেশ কুশ্রী পেতে পারেন লাইন বরাত দিয়ে) পরিবর্তন।


0

এটি ব্যবহার করে দেখুন এই কমান্ডটি ইউনিক্স এবং লিনাক্সে উপলব্ধ।

sudo sh -c "echo 'add this line to the code' >> fileName"


-2

কৌশলটি করবে:

ssh host "sudo su root -c 'echo "add this line to the code" >> /etc/hosts'"

কেন ssh? আপনি প্রয়োজন হবে না suসঙ্গে sudoএবং কেউই আপনাকে তা নির্দিষ্ট করতে হবে rootযেমন পূর্বনির্ধারিত। সব মিলিয়ে আরও কিছু ব্যাখ্যা খুব সুন্দর হবে কারণ ওপি কিছু সমস্যা শিখতে চেয়েছিল, কেবল একটি সমস্যা সমাধান করা হয়নি।
অ্যাডেফন 21

আমি মনে করি আপনি ডাবল উদ্ধৃতি দিয়ে সমস্যার মধ্যে চলে যাবেন
चमत्कार 173
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.