मैं अपने छात्रों को शुरुआती प्रोग्रामिंग कोर्स के लिए एक वीएम वितरित कर रहा हूं। गति के लिए, उन्हें खरोंच से उबंटू स्थापित करने के लिए प्राप्त करने के बजाय, मैं उन्हें पूरी तरह से सेट की गई छवि देने की योजना बना रहा हूं जो वे बस चला सकते हैं।
इसे स्थापित करने के लिए मैंने इसे एक होस्टनाम, उपयोगकर्ता नाम और पासवर्ड दिया है। जब वे उठते हैं और दौड़ते हैं तो छात्रों के लिए इसे बदलने का सबसे साफ तरीका क्या है?
मुझे इस जिस्ट के रूप में मिला है , जिसमें होस्टनाम के साथ कुछ अविश्वसनीय प्रगति है, लेकिन उपयोगकर्ता नाम मुझे बदलने का विरोध कर रहा है।
मुझे यह पसंद है कि जितना संभव हो उतना दर्द रहित प्रक्रिया हो क्योंकि यह उनकी पहली लैब में होना चाहिए।
यह पूरी तरह से संभव है कि एक पूरी तरह से अलग दृष्टिकोण है जिसे मुझे लेना चाहिए। मैं सभी सुझावों के लिए तैयार हूं।
#!/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
कुछ आउटपुट और स्क्रिप्ट में पहले से ज्ञात प्रतिक्रिया हो। बेन उपयोगकर्ता इनपुट का इंतजार करना चाहता है और इसके आधार पर एक कमांड निष्पादित करता है। दी, मैं दिन में कम से कम एक बार गलत हूं, इसलिए ऐसा हो सकता है।
exec bash
लेकिन यह तकनीकी रूप से एक नेस्टेड टर्मिनल खोल देगा।
sed
कुछ इस तरह से sudo sed -i "s/127.0.1.1/& $compname/" /etc/hosts
दूंगा .. जो कि 127.0.1.1 लाइन को अपडेट करेगा, और नए होस्ट को केवल वही करेगा जो वहाँ है। यह पुराने होस्ट को जगह में छोड़ देगा, लेकिन कई होस्ट को एक आईपी को सौंपा जाना अनिवार्य है। sudo
होस्टनाम को बदलते हुए आपके अन्य आदेश के साथ अनार्य समस्या को रोका जा सकेगा ।
expect
- admin-magazine.com/Articles/Automating-with-Expect-Scripts