ฉันแจกจ่าย VM ให้กับนักเรียนของฉันสำหรับหลักสูตรการเขียนโปรแกรมเริ่มต้น สำหรับความเร็วแทนที่จะทำให้พวกเขาติดตั้ง Ubuntu ตั้งแต่ต้นฉันวางแผนที่จะให้ภาพที่พวกเขาสามารถใช้งานได้
เพื่อให้ได้ตั้งค่าฉันได้ให้ชื่อโฮสต์ชื่อผู้ใช้และรหัสผ่านที่เสียสละ อะไรคือวิธีที่สะอาดที่สุดในการเปลี่ยนแปลงสิ่งนี้สำหรับนักเรียนเมื่อพวกเขาลุกขึ้นวิ่ง
ฉันมีเท่าที่นี้สรุปสาระสำคัญซึ่งมีความคืบหน้าไม่น่าเชื่อถือบางคนที่มีชื่อโฮสต์ แต่ชื่อผู้ใช้นี้ resisting ฉันเปลี่ยนมัน
ฉันอยากให้กระบวนการนี้เป็นไปอย่างเจ็บปวดที่สุดเท่าที่จะเป็นไปได้ในห้องทดลองแรกของพวกเขา
เป็นไปได้โดยสิ้นเชิงว่ามีวิธีการที่แตกต่างอย่างสิ้นเชิงที่ฉันควรทำ ฉันเปิดให้คำแนะนำทั้งหมด
#!/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เอาต์พุตบางอย่างและมีการตอบสนองที่รู้จักกันแล้วในสคริปต์ เบ็นต้องการที่จะรอให้ผู้ใช้ป้อนข้อมูลและดำเนินการคำสั่งตาม จริงอยู่ที่ฉันผิดอย่างน้อยวันละครั้งดังนั้นนี่อาจเป็นกรณี
                exec bashแต่มันจะเปิดเทอร์มินัลแบบซ้อนทางเทคนิค
                sedด้วยสิ่งนี้ .. sudo sed -i "s/127.0.1.1/& $compname/" /etc/hosts  ซึ่งจะอัปเดตบรรทัด 127.0.1.1 และต่อท้ายโฮสต์ใหม่กับสิ่งที่มีอยู่ มันจะออกจากโฮสต์เก่าในสถานที่ แต่มันเป็นไปตามที่จะมีหลายโฮสต์ที่ได้รับมอบหมายให้หนึ่ง IP ที่จะป้องกันปัญหา unresolvable กับsudoคำสั่งอื่นของคุณเปลี่ยนชื่อโฮสต์
                
expect- admin-magazine.com/Articles/Automating-with-Expect-Scripts