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
- admin-magazine.com/Articles/Automating-with-Harap-Skripsexpect
proses interaktif dan membuatnya non-interaktif. Pada dasarnya, membuat skripexpect
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 dengansudo
perintah Anda yang lain , mengubah nama host.Jawaban:
Mengapa tidak menggunakan instalasi OEM saja untuk ini? Ini tidak cantik, tetapi menyelesaikan pekerjaan. Jika Anda ingin turun rute ini, lihat jawaban izx yang sangat baik untuk pertanyaan ini: Bagaimana cara pra-instal Ubuntu untuk seseorang (instalasi OEM)?
Pada dasarnya, sistem akan (pada boot pertama) meminta pengguna untuk banyak informasi untuk mempersonalisasi mesin mereka. Ini termasuk bahasa, lokasi, nama pengguna, nama host, kata sandi, dan sebagainya. Pada dasarnya, semua yang biasanya diminta oleh komputer Anda untuk instalasi.
Ini adalah persis apa gambar OEM dimaksudkan untuk, dan mereka melakukan pekerjaan yang besar itu. Plus, Anda akan memberi siswa Anda sedikit pengalaman "instal Ubuntu". Padahal, pemasangan Ubuntu tidak terlalu menyakitkan. Anda mungkin dapat melakukannya dalam satu kelas, dan memberi siswa Anda beberapa pekerjaan rumah untuk mempersonalisasi dan mengeksplorasi VM mereka. Plus, mempartisi itu menyenangkan dan
menyakitkan!Kembali ke masalah yang ada (dan jawaban untuk pertanyaan Anda yang sebenarnya ) .....
Mari kita lihat
man usermod
untuk mendapatkan penjelasan tentang apa yang terjadi:Pada dasarnya, ini hanya berarti kita tidak dapat mengubah UID pengguna, nama pengguna, direktori home mereka, atau semacamnya jika pengguna tersebut login.
Jadi, kita dapat melakukan beberapa hal menyenangkan untuk mengatur ini pada boot sistem berikutnya. Alih-alih skrip Anda melakukan pekerjaan, kami membuat skrip Anda membuat skrip lain untuk melakukan semua pengangkatan dan manipulasi yang berat. Contoh dari ini:
Pada dasarnya, dengan melakukan ini, Anda sedang "mengantri" acara untuk dijalankan pada boot sistem berikutnya. Ini akan berjalan sebelum userland terjadi, sehingga sistem akan menjalankan perintah ini sebagai root. Oleh karena itu,
ben
pengguna tidak akan masuk, dan sistem tidak akan mengeluh.Anda mungkin masih perlu menambahkan perintah tambahan untuk hal ini untuk memungkinkan lebih banyak personalisasi (seperti mengatur nama sebenarnya, dll). Namun, ini opsional dan hanya perlu dilakukan jika Anda ingin itu berlangsung selama skrip pengaturan.
Padahal, mungkin ide yang bagus untuk hanya membuat pengguna baru untuk siswa sepenuhnya, dan kemudian menjaga akun pengorbanan Anda yang ada di tempat. Dengan cara ini, jika terjadi sesuatu, Anda dapat masuk dan memperbaiki / mengatur mesin mereka jika diperlukan. Tentu saja, jika Anda memberi siswa Anda akses admin ke VM mereka, ini semacam titik diperdebatkan karena mereka mungkin sangat menghapus pengguna "instruktur" karena mereka mahasiswa.
sumber
Pada layar login, minta mereka menekan ctrlaltF2dan login
ben
dari terminal yang terbuka dan berjalanDan berikan mereka semua kata sandi yang sama untuk root, yaitu, nomor kursus, jadi jika ada yang rusak, Anda bisa masuk dan memperbaikinya. Kemudian minta mereka keluar dengan mengetik
exit
, dan masuk sebagai root dengan kata sandi root baru mereka dan jalankan skrip (Anda mungkin harus memodifikasinya sehingga mengubahben
pengguna dan bukan root).Atau, minta mereka masuk sebagai ben dari terminal dengan menekan ctrlaltF2(seperti sebelumnya) di layar masuk dan minta mereka kemudian menjalankan skrip dari sana. Ini bisa berfungsi karena seperti yang ditunjukkan Muru dan Kaz Wolfe dalam jawaban sebelumnya, pengguna tidak dapat menjalankan proses apa pun, dan masuk melalui terminal tidak boleh memulai proses apa pun, seperti
X
atauUbuntu-Desktop
, atau proses lahan pengguna lain yang menggangguusermod
. (Saya tidak tahu apakah ini berhasil, saya belum mencobanya, tetapi patut dicoba).sumber