Yeni başlayanlara yönelik bir programlama kursu için öğrencilerime bir VM dağıtıyorum. Hız için, Ubuntu'yu sıfırdan yüklemelerini sağlamak yerine, sadece çalışabilecekleri tamamen ayarlanmış bir görüntü vermeyi planlıyorum.
Kurmak için kurban bir ana bilgisayar adı, kullanıcı adı ve şifre verdim. Öğrenciler çalışmaya başladıklarında bunu değiştirmenin en temiz yolu nedir?
Ana bilgisayar adında güvenilir olmayan bir ilerleme kaydeden bu özü buldum , ancak kullanıcı adı değiştirmeme karşı direniyor.
Bunun ilk laboratuvarlarında olması gerektiği gibi olabildiğince acısız bir süreç olmasını istiyorum.
Tamamen farklı bir yaklaşım benim olmalıydı. Tüm önerilere açığım.
#!/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
etkileşimli bir süreç alıp etkileşimli yapmıyordum. Temel olarak, expect
belirli bir çıktısı olan bir komut dosyası yapmak ve yanıtı komut dosyasında zaten bildiğiniz. Ben kullanıcı girişini beklemek ve buna dayalı bir komut çalıştırmak istiyor. Verilen, günde en az bir kez yanılıyorum, bu yüzden durum böyle olabilir.
exec bash
ama teknik olarak iç içe bir terminal açacaktır.
sed
gibi bir şeyle değiştiririm. sudo sed -i "s/127.0.1.1/& $compname/" /etc/hosts
127.0.1.1 satırını güncelleyecek ve yeni ana bilgisayarı orada olanlara ekleyeceğiz. Eski ana bilgisayarı yerinde bırakacak, ancak bir IP'ye birden fazla ana makinenin atanması uyumludur. Bu, diğer sudo
komutunuzda çözülemeyen sorunu önleyerek ana makine adını değiştirir.
expect
- admin-magazine.com/Articles/Automating-with-Expect-Scripts