Saya mendistribusikan VM kepada siswa saya untuk kursus pemrograman pemula. Untuk kecepatan, alih-alih meminta mereka untuk menginstal Ubuntu dari awal, saya berencana untuk memberi mereka gambar yang sepenuhnya diatur yang dapat mereka jalankan.
Untuk mengaturnya, saya telah memberinya nama host, nama pengguna, dan kata sandi pengorbanan. Apa cara paling bersih untuk mengubahnya untuk para siswa ketika mereka bangun dan berlari?
Saya sudah sampai pada intisari ini , yang memiliki beberapa kemajuan yang tidak dapat diandalkan dengan nama host, tetapi nama pengguna menolak saya mengubahnya.
Saya ingin proses ini tidak menimbulkan rasa sakit karena ini seharusnya terjadi di lab pertama mereka.
Sangat mungkin bahwa ada pendekatan yang sama sekali berbeda yang harus saya ambil. Saya terbuka untuk semua saran.
#!/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
proses interaktif dan membuatnya non-interaktif. Pada dasarnya, membuat skrip expect
tertentu menghasilkan dan memiliki respons yang sudah dikenal dalam skrip. Ben ingin menunggu input pengguna dan menjalankan perintah berdasarkan itu. Memang, saya salah setidaknya sekali sehari, jadi ini mungkin terjadi.
exec bash
tetapi secara teknis akan membuka terminal bersarang.
sed
dengan sesuatu seperti ini .. sudo sed -i "s/127.0.1.1/& $compname/" /etc/hosts
Yang akan memperbarui baris 127.0.1.1, dan hanya menambahkan host baru untuk apa yang ada di sana. Ini akan meninggalkan host lama di tempatnya, tetapi memenuhi beberapa host yang ditugaskan untuk satu IP. Itu akan mencegah masalah yang tidak terselesaikan dengan sudo
perintah Anda yang lain , mengubah nama host.
expect
- admin-magazine.com/Articles/Automating-with-Harap-Skrips