কমান্ড শেল উপর কাজ না করে প্রম্পটে কাজ করছে


1

আমি লিনাক্স শেল স্ক্রিপ্টের নবাগত। আমি আইপি ঠিকানাটি লিনাক্স শেল স্ক্রিপ্টের মাধ্যমে পরিবর্তন করতে চাই এবং পিএইচপি ওয়েব অ্যাপ্লিকেশন দ্বারা কল করা চাই।

আমি আমার পিএইচপি ওয়েব অ্যাপ্লিকেশন এবং শেল স্ক্রিপ্ট শেষ করেছি। তারা একত্রিত হয়ে কাজ করার আগে, শেল স্ক্রিপ্টটি সঠিকভাবে চলতে পারে কিনা তা পরীক্ষা করতে চাই।

আমার লিনাক্স শেল স্ক্রিপ্ট $ 0 (স্ক্রিপ্টের নাম) বাদে 7 ভেরিয়েবল সংরক্ষণ করবে:

  1. নেটওয়ার্ক ইন্টারফেস ফাইল ( /etc/sysconfig/network-scripts/ifcfg-{XXX})
  2. পুরানো আইপি ঠিকানা
  3. নতুন আইপি ঠিকানা
  4. ওল্ড সাবনেট মাস্ক
  5. নতুন সাবনেট মাস্ক
  6. ওল্ড গেটওয়ে
  7. নতুন গেটওয়ে

আমি লিনাক্স শেল স্ক্রিপ্টের নবাগত হিসাবে বেশিরভাগ চেকিং ইতিমধ্যে আমার পিএইচপি অ্যাপ্লিকেশন দ্বারা সম্পাদিত হয়েছিল, আমি আমার শেল স্ক্রিপ্টে এটি করতে চাই না। আমার পিএইচপি অ্যাপ্লিকেশনটি নিশ্চিত করতে পারে যে ডেটা সঠিক এবং মান দিয়ে পূর্ণ।

সুতরাং এই শেল স্ক্রিপ্টটি চালানোর জন্য, ফলাফলগুলি দেখতে আমি নিম্নলিখিত টাইপ করি:

sh ./ipchanger.sh /etc/sysconfig/network-scripts/ens32 192.168.1.18 192.168.1.201 32 24 192.168.1.1 192.168.1.1 

অর্থ:

  1. লক্ষ্য নেটওয়ার্ক স্ক্রিপ্ট ফাইল উল্লেখ করুন।
  2. থেকে আইপি পরিবর্তন 192.168.1.18করতে 192.168.1.201
  3. থেকে সাবনেট মাস্ক পরিবর্তন 255.255.255.255করতে 255.255.255.0

আসলে এটি নিম্নলিখিত কমান্ডগুলি পরিচালনা করবে:

sudo sed -i -r "s/$currentIpAddress/$newIpAddress/g" $fileName
sudo sed -i -r "s/$currentSubnetMask/$newSubnetMask/g" $fileName
sudo sed -i -r "s/$currentGateway/$newGateway/g" $fileName

এটি কোনও ত্রুটি দেয় না এবং নেটওয়ার্ক স্ক্রিপ্ট ফাইলের সর্বশেষ পরিবর্তিত তারিখ আপডেট করা হওয়ায় এটি ভাল দেখাচ্ছে। কিন্তু আমি যখন ফাইলটি খুললাম তখন কিছুই পরিবর্তন হয়নি।

তারপরে আমি echoকমান্ডগুলি দিয়েছি , এটি ঠিক যে আদেশটি চেয়েছিল তা ফেরত দেয়। তারপরে আমি কমান্ড প্রম্পট দিয়ে তিনটি লাইন চালিয়ে আবার ফাইল পরীক্ষা করে দেখি, সমস্ত তথ্য বদলে গেছে!


আপনার সমস্যাটি @ ডেভিডগো প্রস্তাবিত হিসাবে সুডো না হলে আপনি উভয় ইন্টারফেস একই শেল ব্যবহার করছেন তা নিশ্চিত করতে চাইতে পারেন। আপনি চলমান চেষ্টা করতে পারেন echo $SHELLবা ps -p $$উভয় ইন্টারফেসে তা নিশ্চিত হওয়ার জন্য করতে পারেন।
ফ্র্যাঙ্ক থমাস

উত্তর:


0

সমস্যাটি সম্ভবত sudoপ্রতিটি লাইনের শুরুতে বিট হয়। sudoবোঝায় "রুট হিসাবে চালান।" আপনি সম্ভবত দেখতে পাবেন যে কার্যকরভাবে, আপনি যে কমান্ড লাইনে লগইন করেছেন সেই অ্যাকাউন্টটি কমান্ড লাইন /etc/sudoersথেকে কাজ করার জন্য সেট আপ করা হয়েছে , তবে পিএইচপি স্ক্রিপ্টের মাধ্যমে নয় - এবং আপনাকে অবশ্যই এটি করতে হবে আপনি যখন এটি ওয়েব ব্যবহারকারীর মাধ্যমে চালাবেন তখন এর প্রবণতাগুলি বিবেচনা করুন - সম্ভবত ওয়েব ব্যবহারকারী সেট আপ করা হবে না /etc/sudoers- এবং হওয়া উচিত নয়!

আপনি এই তত্ত্বটি আপনার কাছে ফাইলগুলির মালিকানা পরিবর্তন করে এবং স্ক্রিপ্টটি চালনা করে পরীক্ষা করতে পারেন sudo। সহজভাবে ফাইলের মালিকানা পরিবর্তন করতেchown filename.ext

আমি প্রতিক্রিয়া জানাই যে আপনি ভাল থাকবেন:

  1. /var/www(বা যেখানে আপনি আরামদায়ক এবং ওয়েব ব্যবহারকারীর অ্যাক্সেস রয়েছে) এর অধীনে একটি নতুন ডিরেক্টরি তৈরি করা হচ্ছে
  2. উপযুক্ত কনফিগারেশন ফাইলগুলি সেই ডিরেক্টরিতে সরানো হচ্ছে
  3. স্বতন্ত্র ফাইল বা এটিতে www অন্তর্ভুক্ত ডিরেক্টরিটি সিমিলিং করা।
  4. ডাব্লুডাব্লুডু ডিরেক্টরিতে এই ফাইলগুলির মালিকানা পরিবর্তন করুন
  5. প্রতিটি কমান্ডের শুরুতে সুডোটি ফেলে দিন। আরও ভাল, স্ক্রিপ্টটি কল করা ছেড়ে কেন পিএইচপি-র পরিবর্তনগুলি সহজভাবে লিখুন না write

sudoপ্রতিটি লাইনের শুরুতে অপসারণের পরে , এটি এখনও কাজ করে!
আকিইরু

"হোয়ামি" কী বলে এবং আপনি যে পিএইচপি "এক্সিকিউট" টাইপ কমান্ডটি ব্যবহার করছেন তা কী?
ডেভিডগো


যে সামান্য জ্ঞান করে। আপনি যখন এটি বাশ প্রম্পট থেকে বা স্ক্রিপ্টের মাধ্যমে চালনা করেন তখন কি ঘটে? ফাইলগুলিতে কী অনুমতি রয়েছে?
ডেভিডগো

এখন আমি নিজেই শেল স্ক্রিপ্টটি আইপি ঠিকানা পরিবর্তন করতে পারি। কিন্তু পিএইচপি-তে, এটি পারেনি।
আকিইরু
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.