初心者向けプログラミングコースのVMを生徒に配布しています。速度を上げるために、Ubuntuを最初からインストールする代わりに、実行可能な完全にセットアップされたイメージを提供することを計画しています。
それをセットアップするために、犠牲的なホスト名、ユーザー名、パスワードを与えました。生徒が立ち上がって実行するときに、これを変更する最もきれいな方法は何ですか?
私はこの要点まで持っていますが、これはホスト名の信頼できない進歩がありますが、ユーザー名はそれを変更することに抵抗しています。
これは彼らの最初の研究室で起こるはずであるので、私はそれが可能な限り無痛のプロセスであって欲しいです。
私が取るべき完全に異なるアプローチがあることは完全に可能です。私はすべての提案を受け入れます。
#!/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
特定の出力を行うスクリプトを作成し、そのスクリプトで応答が既知であること。ベンは、ユーザー入力を待ち、それに基づいてコマンドを実行したいと考えています。確かに、私は少なくとも1日に1回は間違っているので、これは事実かもしれません。
exec bash
、技術的にはネストされたターミナルを開きます。
expect
- admin-magazine.com/Articles/Automating-with-Expect-Scripts