Tôi đang phân phối VM cho các sinh viên của mình cho một khóa học lập trình cho người mới bắt đầu. Về tốc độ, thay vì bắt họ cài đặt Ubuntu từ đầu, tôi dự định cung cấp cho họ một hình ảnh được thiết lập đầy đủ mà họ có thể chạy.
Để thiết lập nó, tôi đã đặt cho nó một tên máy chủ, tên người dùng và mật khẩu. Cách sạch nhất để thay đổi điều này cho các sinh viên khi họ đứng dậy và chạy?
Tôi đã đi xa như ý chính này , có một số tiến bộ không đáng tin cậy với tên máy chủ, nhưng tên người dùng đang chống lại tôi thay đổi nó.
Tôi muốn nó là một quá trình không đau đớn nhất có thể vì điều này được cho là xảy ra trong phòng thí nghiệm đầu tiên của họ.
Hoàn toàn có thể có một cách tiếp cận hoàn toàn khác mà tôi nên thực hiện. Tôi mở tất cả các đề xuất.
#!/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
thực hiện một quy trình tương tác và làm cho nó không tương tác. Về cơ bản, tạo một tập lệnh mà expect
đầu ra nhất định và có phản hồi đã được biết đến trong tập lệnh. Ben muốn đợi người dùng nhập liệu và thực hiện một lệnh dựa trên nó. Cấp, tôi sai ít nhất một lần một ngày, vì vậy đây có thể là trường hợp.
exec bash
nhưng về mặt kỹ thuật nó sẽ mở ra một thiết bị đầu cuối lồng nhau.
sed
bằng một cái gì đó như thế này .. sudo sed -i "s/127.0.1.1/& $compname/" /etc/hosts
Nó sẽ cập nhật dòng 127.0.1.1 và chỉ nối thêm máy chủ mới vào những gì ở đó. Nó sẽ để máy chủ cũ vào vị trí, nhưng nó tuân thủ để có nhiều máy chủ được gán cho một IP. Điều đó sẽ ngăn vấn đề không thể giải quyết được với sudo
lệnh khác của bạn , thay đổi tên máy chủ.
expect
- admin-magazine.com/Articles/Automating-with-Expect-Scripts