আমি আমার শিক্ষার্থীদের একটি নতুন প্রোগ্রামিং কোর্সের জন্য একটি ভিএম বিতরণ করছি। গতির জন্য, তাদের স্ক্র্যাচ থেকে উবুন্টু ইনস্টল করার পরিবর্তে, আমি তাদের পুরোপুরি সেট আপ করার ইমেজ দেওয়ার পরিকল্পনা করছি যা তারা কেবল চালাতে পারে।
এটি সেট আপ করার জন্য আমি এটিকে একটি বলি হোস্টনাম, ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়েছি। শিক্ষার্থীরা উঠে পড়ার সময় এটিকে পরিবর্তন করার সর্বোত্তম উপায় কী?
আমি এই সংক্ষিপ্ত রূপটি পেয়েছি , যা হোস্টনামের সাথে কিছুটা অবিশ্বাস্য অগ্রগতি করেছে, তবে ব্যবহারকারীর নামটি আমাকে এটি পরিবর্তন করতে প্রতিহত করছে।
আমি এটি চাই যতটা সম্ভব বেদাহীন প্রক্রিয়া যতটা সম্ভব তাদের প্রথম ল্যাবটিতে এটি হওয়ার কথা।
এটি সম্পূর্ণরূপে সম্ভব যে সম্পূর্ণ ভিন্ন পদ্ধতির যেটি আমাকে গ্রহণ করা উচিত। আমি সমস্ত পরামর্শ খোলা।
#!/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
expectইন্টারেক্টিভ প্রক্রিয়া গ্রহণ এবং এটি অ-ইন্টারেক্টিভ করার জন্য ব্যবহার করেছি । মূলত, একটি expectনির্দিষ্ট স্ক্রিপ্ট তৈরি করে এবং স্ক্রিপ্টটিতে ইতিমধ্যে পরিচিত প্রতিক্রিয়া known বেন ব্যবহারকারীর ইনপুটটির জন্য অপেক্ষা করতে এবং তার উপর ভিত্তি করে একটি কমান্ড চালাতে চায়। মঞ্জুর, আমি দিনে অন্তত একবার ভুল হয়েছি, তাই এটি হতে পারে।
exec bashকিন্তু এটি প্রযুক্তিগতভাবে একটি নেস্টেড টার্মিনাল খুলবে।
sedমতো কিছু দিয়ে প্রতিস্থাপন করব ... sudo sed -i "s/127.0.1.1/& $compname/" /etc/hostsযা 127.0.1.1 লাইনটি আপডেট করবে এবং সেখানে নতুন হোস্টকে কেবল যুক্ত করবে। এটি পুরানো হোস্টটি জায়গায় রেখে দেবে, তবে এক আইপিতে একাধিক হোস্ট নিযুক্ত করা অনুগত। sudoএটি হোস্টের নাম পরিবর্তন করে আপনার অন্যান্য কমান্ডের সাথে অশোধিত সমস্যা রোধ করবে ।

expect- অ্যাডমিন- ম্যাগাজিন.com