Rozdaję maszynę wirtualną moim studentom na kurs programowania dla początkujących. Ze względu na szybkość, zamiast nakłaniać ich do zainstalowania Ubuntu od zera, planuję dać im w pełni skonfigurowany obraz, który mogą po prostu uruchomić.
Aby go skonfigurować, podałem mu ofiarną nazwę hosta, nazwę użytkownika i hasło. Jaki jest najczystszy sposób, aby to zmienić dla uczniów, gdy zaczynają działać?
Dotarłem do tej istoty , która ma pewne niewiarygodne postępy z nazwą hosta, ale nazwa użytkownika powstrzymuje mnie przed jej zmianą.
Chciałbym, aby był to jak najbardziej bezbolesny proces, jak ma się to zdarzyć w ich pierwszym laboratorium.
Całkiem możliwe, że powinienem przyjąć zupełnie inne podejście. Jestem otwarty na wszystkie sugestie.
#!/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
udział w procesie interaktywnym i uczyniłem go nieinteraktywnym. Zasadniczo tworzenie skryptu o expect
określonych wynikach i posiadanie odpowiedzi znanej już w skrypcie. Ben chce czekać na dane wejściowe użytkownika i na tej podstawie wykonać polecenie. To prawda, że się mylę przynajmniej raz dziennie, więc może tak być.
exec bash
ale technicznie otworzy to zagnieżdżony terminal.
sed
ją czymś takim. sudo sed -i "s/127.0.1.1/& $compname/" /etc/hosts
To zaktualizuje linię 127.0.1.1 i po prostu dołączy nowego hosta do tego, co tam jest. Opuści stary host na swoim miejscu, ale zgodnym jest, aby przypisać wiele hostów do jednego adresu IP. Zapobiegnie to nierozwiązywalnemu problemowi z drugą sudo
komendą, zmieniając nazwę hosta.
expect
- admin-magazine.com/Articles/Automating-with-Expect-Scripts