Shell

使用 shell 腳本自動化 CentOS 7 配置

  • August 26, 2015

我注意到我花了很多時間使用教程來手動配置 CentOS 7 伺服器。 如何將教程中的手動步驟轉換為可用於配置具有相同設置的多個 CentOS 7 伺服器的自動化 shell 腳本?

讓我們以本教程為例,但除了簡單地提供一個工作的 shell 腳本來自動化本教程之外,答案應該可以推廣到其他配置 shell 腳本。

這是我第一次嘗試 shell 腳本:

#!/bin/bash
yum update
yum install yum-utils bzip2 bzip2-devel wget curl tar
sudo yum install gcc-c++
cd /opt
wget http://nodejs.org/dist/v0.12.7/node-v0.12.7.tar.gz
tar zxf node-v0.12.7.tar.gz
cd node-v0.12.7
./configure --prefix=/usr/local
make
make install  
npm install bower -g  
npm install gulp -g  

如何正確編寫上面的 shell 腳本?例如,我如何檢查每個步驟是否正確完成?我必須是 root 才能執行上述內容。如果我作為 sudoer 執行它,我如何處理定期的密碼請求?或者它在 shell 腳本中的事實是否意味著您只需在第一次呼叫腳本時提供 sudoer 密碼?

我是 shell 腳本的新手,所以請耐心等待,並用其他不熟悉 shell 腳本的人也能理解的語言進行解釋。

此外,這並不是 CentOS 7 特有的,例如yum install等。

您的問題有幾個部分,我不能聲稱熟悉您執行的所有命令,但這是我的看法:

以 root 身份(直接)或通過 sudo 執行整個腳本。這樣,您就不需要在腳本本身中執行 sudo。如果您在特定步驟中需要 sudo,那麼您需要在 sudoers 中使用 NOPASSWD 標誌設置您的 ID,或者在腳本執行期間接受輸入密碼的互動式提示。

要回答有關每個步驟正確執行的其他一般問題,方法是檢查該步驟的返回碼,並希望退出程序適當地設置返回碼。

舉些例子:

簡寫:

yum update && \
yum install yum-utils bzip2 bzip2-devel wget curl tar

長手:

yum update
RC=$?
if [ $RC -ne 0 ]
then
 print "Some error message here"
 exit 1 ## or some other identifying error code
fi

yum install yum-utils bzip2 bzip2-devel wget curl tar
RC=$?
if [ $RC -ne 0 ]
then
 print "Some other error message here"
 exit 2 ## or some other identifying error code
fi
...

引用自:https://unix.stackexchange.com/questions/224711