একটি .sh করুন যা নতুন ব্যবহারকারীর নাম, হোস্টনাম এবং পাসওয়ার্ড সেট করে


9

আমি আমার শিক্ষার্থীদের একটি নতুন প্রোগ্রামিং কোর্সের জন্য একটি ভিএম বিতরণ করছি। গতির জন্য, তাদের স্ক্র্যাচ থেকে উবুন্টু ইনস্টল করার পরিবর্তে, আমি তাদের পুরোপুরি সেট আপ করার ইমেজ দেওয়ার পরিকল্পনা করছি যা তারা কেবল চালাতে পারে।

এটি সেট আপ করার জন্য আমি এটিকে একটি বলি হোস্টনাম, ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়েছি। শিক্ষার্থীরা উঠে পড়ার সময় এটিকে পরিবর্তন করার সর্বোত্তম উপায় কী?

আমি এই সংক্ষিপ্ত রূপটি পেয়েছি , যা হোস্টনামের সাথে কিছুটা অবিশ্বাস্য অগ্রগতি করেছে, তবে ব্যবহারকারীর নামটি আমাকে এটি পরিবর্তন করতে প্রতিহত করছে।

আমি এটি চাই যতটা সম্ভব বেদাহীন প্রক্রিয়া যতটা সম্ভব তাদের প্রথম ল্যাবটিতে এটি হওয়ার কথা।

এটি সম্পূর্ণরূপে সম্ভব যে সম্পূর্ণ ভিন্ন পদ্ধতির যেটি আমাকে গ্রহণ করা উচিত। আমি সমস্ত পরামর্শ খোলা।

#!/bin/bash
clear
toilet  "     CODE1161     "  --metal --font future
echo    ""
toilet  "Let's get started!"  --metal --font future
echo    ""
echo    "We need to make this computer be YOURS"
echo    "We need a name for you and your computer, make it short or it'll take up a lot of space."
echo    "My computer is called um and my name is ben, so I get ben@um:~$ as my command prompt."
echo    ""
read -p "Enter a name for your computer:"  compname
read -p "Enter your name: "  username
echo    ""
toilet  "$username@$compname~$"  --gay --font wideterm
echo    ""
echo    "What do you think? If you hate it, press ctrl+c and do this again"
read -p "otherwise, just press enter." sacrificial

# set the host name, in a million places, for some unknown reason.
echo "1"
sed -i "/127\.0\.1\.1\s*vc/ { c \
127.0.1.1   $compname
}" /etc/hosts
echo "2"
sudo hostname -b $compname
echo "3"
sudo hostnamectl set-hostname $compname
echo "4"
sudo groupadd $username
echo "5"
sudo usermod -d /home/$username -m -g $username -l $username ben

আউটপুট অগ্রগতির একটি স্ক্রিন শট



1
হতে পারে আমি ভুল, তবে আমি কেবল কখনও expectইন্টারেক্টিভ প্রক্রিয়া গ্রহণ এবং এটি অ-ইন্টারেক্টিভ করার জন্য ব্যবহার করেছি । মূলত, একটি expectনির্দিষ্ট স্ক্রিপ্ট তৈরি করে এবং স্ক্রিপ্টটিতে ইতিমধ্যে পরিচিত প্রতিক্রিয়া known বেন ব্যবহারকারীর ইনপুটটির জন্য অপেক্ষা করতে এবং তার উপর ভিত্তি করে একটি কমান্ড চালাতে চায়। মঞ্জুর, আমি দিনে অন্তত একবার ভুল হয়েছি, তাই এটি হতে পারে।

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

1
এই পদ্ধতিতে কিছু ত্রুটি রয়েছে। এক, আপনি বর্তমান ব্যবহারকারীদের পথ পরিবর্তন করতে পারবেন না, এটি সম্ভব নয়। হোস্ট-নেম পরিবর্তন হলে ব্যাশ প্রম্পট আপডেট হয় না, টার্মিনালটি খোলার পরে এটি কেবল একবারই পড়ে। আপনি পারেন exec bashকিন্তু এটি প্রযুক্তিগতভাবে একটি নেস্টেড টার্মিনাল খুলবে।

আপনার হোস্টনামের সমস্যাটি সমাধান করার জন্য, আমি আপনাকে এটির sedমতো কিছু দিয়ে প্রতিস্থাপন করব ... sudo sed -i "s/127.0.1.1/& $compname/" /etc/hostsযা 127.0.1.1 লাইনটি আপডেট করবে এবং সেখানে নতুন হোস্টকে কেবল যুক্ত করবে। এটি পুরানো হোস্টটি জায়গায় রেখে দেবে, তবে এক আইপিতে একাধিক হোস্ট নিযুক্ত করা অনুগত। sudoএটি হোস্টের নাম পরিবর্তন করে আপনার অন্যান্য কমান্ডের সাথে অশোধিত সমস্যা রোধ করবে ।

উত্তর:


8

কেন এই জন্য কেবল একটি OEM ইনস্টলেশন ব্যবহার করবেন না? এটি তেমন সুন্দর নয়, তবে এটি কাজটি সম্পন্ন করে। আপনি যদি এই পথে যেতে চান তবে এই প্রশ্নের izx এর দুর্দান্ত উত্তরটি দেখুন: আমি কীভাবে কারও ( ওএম ইনস্টল) এর জন্য উবুন্টু প্রাক-ইনস্টল করব?

মূলত, সিস্টেমটি (প্রথম বুটে) ব্যবহারকারীকে তাদের মেশিনকে ব্যক্তিগতকৃত করার জন্য একগুচ্ছ তথ্যের জন্য অনুরোধ করবে। এর মধ্যে ভাষা, অবস্থান, ব্যবহারকারীর নাম, হোস্টনাম, পাসওয়ার্ড ইত্যাদি রয়েছে। মূলত, আপনার কম্পিউটারটি সাধারণত আপনাকে ইনস্টলেশনের জন্য অনুরোধ করবে everything

এই ঠিক ই এম চিত্র কি জন্য বোঝানো হয়, এবং তারা এটি একটি মহান কাজ। এছাড়াও, আপনি আপনার শিক্ষার্থীদের "উবুন্টু ইনস্টল করুন" অভিজ্ঞতার একটি ছোট স্বাদ দেবেন। যদিও, উবুন্টু ইনস্টলগুলি ঠিক বেদনাদায়ক নয়। আপনি সম্ভবত এটি একটি একক শ্রেণিতে করতে পারেন এবং আপনার ছাত্রদের তাদের ভিএম ব্যক্তিগতকৃত করতে এবং অন্বেষণ করতে কিছু হোমওয়ার্ক দিতে পারেন। প্লাস, পার্টিশন হয় বেদনাদায়ক মজা!


হাতের সমস্যার পিছনে (এবং আপনার প্রকৃত প্রশ্নের উত্তর ) .....

man usermodকী চলছে তার ব্যাখ্যা পেতে আসুন :

আদেশ সহকারে
   আপনাকে অবশ্যই নিশ্চিত করতে হবে যে নামধারী ব্যবহারকারীর কোনও কার্যকর হচ্ছে না
   ব্যবহারকারীর সংখ্যাসূচক হলে এই কমান্ডটি কার্যকর করা হয় তখন প্রক্রিয়াগুলি
   ব্যবহারকারীর আইডি, ব্যবহারকারীর নাম বা ব্যবহারকারীর হোম ডিরেক্টরি হচ্ছে
   পরিবর্তন করেছেন। ইউজারমোড এটি লিনাক্সে পরীক্ষা করে তবে কেবল ব্যবহারকারী কিনা তা পরীক্ষা করে দেখুন
   অন্যান্য আর্কিটেকচারে utmp অনুসারে লগ ইন।

মূলত, এর অর্থ হ'ল আমরা ব্যবহারকারীর ইউআইডি, তাদের ব্যবহারকারীর নাম, হোম ডিরেক্টরি বা ব্যবহারকারী লগ ইন থাকলে বাছাই করা কোনও কিছু পরিবর্তন করতে পারি না।

সুতরাং, আমরা এটি সিস্টেমের পরবর্তী বুটে সেট আপ করতে কিছু মজাদার জিনিসগুলি করতে পারি। আপনার স্ক্রিপ্টটি কাজ করার পরিবর্তে, সমস্ত ভারী উত্তোলন এবং ম্যানিপুলেশন করার জন্য আমরা আপনার স্ক্রিপ্টটিকে অন্য স্ক্রিপ্ট তৈরি করি। এর একটি উদাহরণ:

# Make the first-run script
touch /etc/init.d/firstrun-setup.sh

# Add in user modifier
echo "usermod -d /home/$username -m -g $username -l $username ben" >> /etc/init.d/firstrun-setup.sh

# Add in group rename
echo "groupmod -n $username ben" >> /etc/init.d/firstrun-setup.sh

# Add in password expiry
echo "passwd -e $username" >> /etc/init.d/firstrun-setup.sh

# Add in file self-destruct
echo "rm /etc/init.d/firstrun-setup.sh" >> /etc/init.d/firstrun-setup.sh

# Mark the file as executable
chmod a+x /etc/init.d/firstrun-setup.sh

# Reboot the computer
reboot

মূলত, এটি করে আপনি সিস্টেমটির পরবর্তী বুটটিতে চালানোর জন্য ইভেন্টগুলিতে "সারি" করছেন। এটি ইউজারল্যান্ড হওয়ার আগে চলবে, সুতরাং সিস্টেম এই কমান্ডগুলি রুট হিসাবে কার্যকর করবে। অতএব, benব্যবহারকারীর লগ ইন করা হবে না এবং সিস্টেম অভিযোগ করবে না।

আরও ব্যক্তিগতকরণের (যেমন প্রকৃত নাম নির্ধারণ করা ইত্যাদি) অনুমোদনের জন্য আপনাকে এই জিনিসটিতে অতিরিক্ত কমান্ড যুক্ত করার প্রয়োজন হতে পারে। তবে এটি alচ্ছিক এবং কেবল সেটআপ স্ক্রিপ্ট চলাকালীনই এটি করা দরকার।

যদিও, পুরোপুরি শিক্ষার্থীদের জন্য একটি নতুন ব্যবহারকারী তৈরি করা এবং আপনার বিদ্যমান কোরবানি অ্যাকাউন্টটি স্থানে রাখা ভাল ধারণা হতে পারে। এইভাবে, যদি কিছু ঘটে থাকে তবে আপনি প্রয়োজনে তাদের মেশিনটি মেরামত / পরিচালনা করতে পারেন। অবশ্যই, যদি আপনি আপনার ছাত্রদের প্রশাসককে তাদের ভিএম এ প্রবেশাধিকার দিচ্ছেন, তবে এটি একটি মোট পয়েন্টের মতো কারণ তারা "প্রশিক্ষক" ব্যবহারকারীকে খুব ভালভাবে মুছে ফেলতে পারে কারণ তারা ছাত্র।


আমি 'একটি OEM ইনস্টলেশন তৈরি করার' পরামর্শ দেওয়ার উদ্দেশ্যেছিলাম এবং তারপরে আমি এই উত্তরটি পেয়েছি :-)
সুডোডাস

কীভাবে আমার শেষ অর্জন করবেন তার মূল প্রশ্নের উত্তর দেওয়ার জন্য ধন্যবাদ, আমি একটি ই এম ইনস্টল করে যাচ্ছি।
বেন

0

লগইন স্ক্রিনে, তাদের টিপুন ctrlaltF2এবং benটার্মিনালটি যেভাবে খোলে এবং চালিত হয় সেভাবে প্রবেশ করুন login

sudo passwd

এবং তাদের মূলের জন্য একই পাসওয়ার্ডটি দিন, অর্থাত্ কোর্স নম্বর, সুতরাং যদি কিছু বিরতি হয় তবে আপনি ভিতরে গিয়ে এটি ঠিক করতে পারেন। তারপরে তাদের টাইপ করে লগ আউট করুন exitএবং তাদের নতুন মূল পাসওয়ার্ডের সাহায্যে রুট হিসাবে লগ ইন করুন এবং স্ক্রিপ্টটি চালান (আপনাকে এটি পরিবর্তন করতে হবে যাতে এটি benব্যবহারকারীর পরিবর্তিত হয় এবং রুট নয়)।

অথবা, তাদের ctrlaltF2লগইন স্ক্রিনে (আগের মত) টিপে টার্মিনাল থেকে বেন হিসাবে লগ ইন করুন এবং সেখান থেকে স্ক্রিপ্টটি চালাবেন। এটি কাজ করতে পারে কারণ মুরু এবং কাজ ওল্ফ পূর্ববর্তী উত্তরে উল্লেখ করেছেন যে ব্যবহারকারী কোনও প্রক্রিয়া চালাচ্ছেনা এবং টার্মিনালের মাধ্যমে লগ ইন করার ফলে কোনও প্রক্রিয়া যেমন, Xবা Ubuntu-Desktop, বা অন্যান্য ইউজারল্যান্ড প্রক্রিয়াগুলি হস্তক্ষেপ শুরু করা উচিত নয় usermod। (আমি জানি না এটি কাজ করে কিনা, আমি এটি চেষ্টা করি নি, তবে এটি চেষ্টা করে দেখার মতো)।

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