Je distribue une VM à mes étudiants pour un cours de programmation pour débutants. Pour la vitesse, au lieu de leur faire installer Ubuntu à partir de zéro, je prévois de leur donner une image entièrement configurée qu'ils peuvent simplement exécuter.
Afin de le configurer, je lui ai donné un nom d'hôte, un nom d'utilisateur et un mot de passe sacrificiels. Quelle est la façon la plus propre de changer cela pour les élèves lorsqu'ils se lèvent et courent?
J'ai aussi loin que ce point essentiel , qui a des progrès peu fiables avec le nom d' hôte, mais le nom d' utilisateur me résistais changer.
Je voudrais que ce soit un processus aussi indolore que possible car cela est censé se produire dans leur premier laboratoire.
Il est tout à fait possible qu'il y ait une approche complètement différente que je devrais adopter. Je suis ouvert à toutes les suggestions.
#!/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
qu'un processus interactif pour le rendre non interactif. Fondamentalement, faire un script qui sort expect
certain et avoir la réponse déjà connue dans le script. Ben veut attendre l'entrée de l'utilisateur et exécuter une commande basée sur celle-ci. Certes, je me trompe au moins une fois par jour, donc cela pourrait être le cas.
exec bash
mais cela ouvrira techniquement un terminal imbriqué.
sed
par quelque chose comme ceci sudo sed -i "s/127.0.1.1/& $compname/" /etc/hosts
. Il laissera l'ancien hôte en place, mais il est compatible d'avoir plusieurs hôtes affectés à une IP. Cela évitera le problème insoluble avec votre autre sudo
commande, en changeant le nom d'hôte.
expect
- admin-magazine.com/Articles/Automating-with-Expect-Scripts