天天看點

通過腳本案例學習shell(三) --- 通過互動式腳本自動建立Apache虛拟主機

<b>實作内容:</b><b></b>

<b></b>

通過腳本自動建立虛拟主機要求如下:

1、 建立虛拟主機配置資訊在/etc/httpd/conf.d/virt_host.conf中

2、 建立虛拟主機目錄在/var/www下,名稱為虛拟主機域名即可

3、 建立過程要求互動式進行,隻需要輸入IP位址和域名即可。

4、 建立過程如果沒有輸入按回車無效,要求再次輸入在進入下一步。

<b>完善内容:(未操作)</b><b></b>

1、互動式過程中輸入的IP和域名是否有效,無效需要再次輸入

2、同一台主機兩個IP是如何添加虛拟主機的

思路如下:

1、 通過read –p指令進行互動式

2、 定義一個函數input_fun實作互動式輸入空值再次輸入

3、 通過cat指令将虛拟主機配置内容寫入文檔

Apache虛拟主機建立腳本如下:

#!/bin/bash 

HTTP_CONF_DIR=/etc/httpd/conf.d  //建立變量指向虛拟主機配置目錄 

CONF_FILE_NAME=virt_host.conf  //定義所有虛拟主機配置檔案名 

HTTP_SITE_DIR=/var/www  //定義虛拟主機網站主目錄位置 

//以上路徑及名稱都可以根據需求任意改動 

input_fun()  //定義函數input_fun,實作輸入空資訊再次讀取 

        OUTPUT_VAR=$1  //這裡$1其實就是Input Host ip [192.168.0.1]:或Input Virtual Host Name [www.example.com]: 

        INPUT_VAR=""  //定義變量INPUT_VAR起始值為空 

                while [ -z $INPUT_VAR ];do  //判斷變量INPUT_VAR是否為空 

                        read -p "$OUTPUT_VAR" INPUT_VAR //進入互動繼續輸入IP位址,直到輸出内容後退出循環 

                done 

        echo $INPUT_VAR  

IPADDR=$( input_fun "Input Host ip [192.168.0.1]: ") //定義變量IPADDR,互動式輸入的IP位址為值 

WEB_HOST_NAME=$(input_fun "Input Virtual Host Name [www.example.com]: ") //定義變量WEB_HOST_NAME,互動式輸入的域名為值 

[ ! -d $HTTP_SITE_DIR/$WEB_HOST_NAME ] &amp;&amp; mkdir -p $HTTP_SITE_DIR/$WEB_HOST_NAME  //判斷虛拟主機目錄是否存在,不存在建立虛拟主機目錄 

chown apache. $HTTP_SITE_DIR/$WEB_HOST_NAME &amp;&amp; chmod 755 $HTTP_SITE_DIR/$WEB_HOST_NAME //修改虛拟主機目錄的所有權和通路權限 

if [ -f $HTTP_CONF_DIR/$CONF_FILE_NAME ];then  //判斷虛拟主機配置檔案是否存在 

        NameVir_key=$(grep NameVirtualHost $HTTP_CONF_DIR/$CONF_FILE_NAME) //如果存在,過濾裡面的NameVirtualHost字段複制給變量NameVir_key 

fi 

if [ -z "$NameVir_key" ];then  //檢視NameVir_key是否為空值 

        echo "NameVirtualHost $IPADDR:80" &gt;$HTTP_CONF_DIR/$CONF_FILE_NAME //如果為空,建立虛拟主機配置檔案,并寫入NameVirtualHost $IPADDR:80 

cat &gt;&gt; $HTTP_CONF_DIR/$CONF_FILE_NAME &lt;&lt; ENDF  //寫虛拟主機配置檔案資訊追加到配置檔案中 

&lt;VirtualHost $IPADDR:80&gt; 

        ServerAdmin webmaster@$WEB_HOST_NAME 

        DocumentRoot $HTTP_SITE_DIR/$WEB_HOST_NAME 

        ServerName $WEB_HOST_NAME 

        ErrorLog logs/$WEB_HOST_NAME-error_log 

        CustomLog logs/$WEB_HOST_NAME-access_loh common 

&lt;/VirtualHost&gt; 

ENDF 

/etc/init.d/httpd restart  //重新開機httpd服務 

腳本部分内容大盤點:

read -p "$OUTPUT_VAR" INPUT_VAR   文法為read –p “顯示内容” 變量    回車後輸入變量資訊

cat &gt;&gt;檔案名&lt;&lt;endf 内容 endf  可以安裝輸入格式寫入檔案中

input_fun(){            //函數部分,通過函數名即可調用

***************

}

while  條件;  //while循環語句文法,判斷條件部分是否成立,成立就一直做do後面的内容,直到不成立循環結束

do

********

done

第一次運作腳本及結果

<a href="http://blog.51cto.com/attachment/201303/165259858.png" target="_blank"></a>

第二次運作腳本及結果

<a href="http://blog.51cto.com/attachment/201303/165316512.png" target="_blank"></a>

本文轉自淩激冰51CTO部落格,原文連結:http://blog.51cto.com/dreamfire/1152672,如需轉載請自行聯系原作者