通过脚本案例学习shell(三) --- 通过交互式脚本自动创建Apache虚拟主机

本文涉及的产品
.cn 域名,1个 12个月
简介:

实现内容:

通过脚本自动创建虚拟主机要求如下:

1、 创建虚拟主机配置信息在/etc/httpd/conf.d/virt_host.conf

2、 创建虚拟主机目录在/var/www下,名称为虚拟主机域名即可

3、 创建过程要求交互式进行,只需要输入IP地址和域名即可。

4、 创建过程如果没有输入按回车无效,要求再次输入在进入下一步。

完善内容:(未操作)

1、交互式过程中输入的IP和域名是否有效,无效需要再次输入

2、同一台主机两个IP是如何添加虚拟主机的

思路如下:

1、 通过read –p命令进行交互式

2、 定义一个函数input_fun实现交互式输入空值再次输入

3、 通过cat命令将虚拟主机配置内容写入文档

Apache虚拟主机创建脚本如下:


 
 
  1. #!/bin/bash 
  2. HTTP_CONF_DIR=/etc/httpd/conf.d  //创建变量指向虚拟主机配置目录 
  3. CONF_FILE_NAME=virt_host.conf  //定义所有虚拟主机配置文件名 
  4. HTTP_SITE_DIR=/var/www  //定义虚拟主机网站主目录位置 
  5. //以上路径及名称都可以根据需求任意改动 
  6. input_fun()  //定义函数input_fun,实现输入空信息再次读取 
  7.         OUTPUT_VAR=$1  //这里$1其实就是Input Host ip [192.168.0.1]:或Input Virtual Host Name [www.example.com]: 
  8.         INPUT_VAR=""  //定义变量INPUT_VAR起始值为空 
  9.                 while [ -z $INPUT_VAR ];do  //判断变量INPUT_VAR是否为空 
  10.                         read -p "$OUTPUT_VAR" INPUT_VAR //进入交互继续输入IP地址,直到输出内容后退出循环 
  11.                 done 
  12.         echo $INPUT_VAR  
  13. IPADDR=$( input_fun "Input Host ip [192.168.0.1]: ") //定义变量IPADDR,交互式输入的IP地址为值 
  14. WEB_HOST_NAME=$(input_fun "Input Virtual Host Name [www.example.com]: ") //定义变量WEB_HOST_NAME,交互式输入的域名为值 
  15. [ ! -d $HTTP_SITE_DIR/$WEB_HOST_NAME ] && mkdir -p $HTTP_SITE_DIR/$WEB_HOST_NAME  //判断虚拟主机目录是否存在,不存在创建虚拟主机目录 
  16. chown apache. $HTTP_SITE_DIR/$WEB_HOST_NAME && chmod 755 $HTTP_SITE_DIR/$WEB_HOST_NAME //修改虚拟主机目录的所有权和访问权限 
  17. if [ -f $HTTP_CONF_DIR/$CONF_FILE_NAME ];then  //判断虚拟主机配置文件是否存在 
  18.         NameVir_key=$(grep NameVirtualHost $HTTP_CONF_DIR/$CONF_FILE_NAME) //如果存在,过滤里面的NameVirtualHost字段复制给变量NameVir_key 
  19. fi 
  20. if [ -z "$NameVir_key" ];then  //查看NameVir_key是否为空值 
  21.         echo "NameVirtualHost $IPADDR:80" >$HTTP_CONF_DIR/$CONF_FILE_NAME //如果为空,创建虚拟主机配置文件,并写入NameVirtualHost $IPADDR:80 
  22. fi 
  23. cat >> $HTTP_CONF_DIR/$CONF_FILE_NAME << ENDF  //写虚拟主机配置文件信息追加到配置文件中 
  24. <VirtualHost $IPADDR:80> 
  25.         ServerAdmin webmaster@$WEB_HOST_NAME 
  26.         DocumentRoot $HTTP_SITE_DIR/$WEB_HOST_NAME 
  27.         ServerName $WEB_HOST_NAME 
  28.         ErrorLog logs/$WEB_HOST_NAME-error_log 
  29.         CustomLog logs/$WEB_HOST_NAME-access_loh common 
  30. </VirtualHost> 
  31. ENDF 
  32. /etc/init.d/httpd restart  //重启httpd服务 

脚本部分内容大盘点:

read -p "$OUTPUT_VAR" INPUT_VAR   语法为read –p “显示内容” 变量    回车后输入变量信息

cat >>文件名<<endf 内容 endf  可以安装输入格式写入文件中

input_fun(){            //函数部分,通过函数名即可调用

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

}

while  条件;  //while循环语句语法,判断条件部分是否成立,成立就一直做do后面的内容,直到不成立循环结束

do

********

done

第一次运行脚本及结果

第二次运行脚本及结果



本文转自凌激冰51CTO博客,原文链接:http://blog.51cto.com/dreamfire/1152672,如需转载请自行联系原作者

 

相关文章
|
1月前
|
监控 Cloud Native BI
8+ 典型分析场景,25+ 标杆案例,Apache Doris 和 SelectDB 精选案例集(2024版)电子版上线
飞轮科技正式推出 Apache Doris 和 SelectDB 精选案例集 ——《走向现代化的数据仓库(2024 版)》,汇聚了来自各行各业的成功案例与实践经验。该书以行业为划分标准,辅以使用场景标签,旨在为读者提供一个高度整合、全面涵盖、分类清晰且易于查阅的学习资源库。
|
2月前
|
SQL 分布式计算 NoSQL
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
37 1
大数据-164 Apache Kylin Cube优化 案例1 定义衍生维度与对比 超详细
|
2月前
|
消息中间件 存储 druid
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
大数据-156 Apache Druid 案例实战 Scala Kafka 订单统计
51 3
|
2月前
|
存储 大数据 分布式数据库
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
大数据-165 Apache Kylin Cube优化 案例 2 定义衍生维度及对比 & 聚合组 & RowKeys
49 1
|
2月前
|
消息中间件 druid 大数据
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(二)
42 2
|
2月前
|
消息中间件 分布式计算 druid
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
大数据-153 Apache Druid 案例 从 Kafka 中加载数据并分析(一)
62 1
|
2月前
|
监控 Unix Shell
shell脚本编程学习
【10月更文挑战第1天】shell脚本编程
84 12
|
3月前
|
安全 Shell Linux
从命令行界面运行交互式PHP Shell
从命令行界面运行交互式PHP Shell
|
5月前
|
Shell Linux
Shell 脚本编程学习
Shell 脚本编程学习
43 0
|
6月前
|
人工智能 运维 中间件
Linux-shell简单学习
Linux-shell简单学习
37 0

推荐镜像

更多