写一个脚本,批量生成10个虚拟主机配置:
     /etc/httpd/conf.d/vhosts#.conf
      主机名:www#
      目录:/data/vhosts/www#
      访问日志:logs/www#-access_log
      
     接受命令行参数,作为命令和主机名传递;
      
     使用函数:
      列出:list [-a|vhost_name]
      创建:create vhost_name
      删除:delete [-a|vhost_name]

#!/bin/bash
#function: create param_1 param_2 param_3 ...
create(){
 for i ;
 do
 file="/etc/httpd/conf.d/$i"  #suffix ".conf" is missing.
 if [[ ! -e $file ]];
 then
   
 cat << EOF >>$file
<VirtualHost 172.16.8.100:80>
ServerName www"$i".magedu.com
DocumentRoot /data/vhosts/www"$i"
CustomLog logs/www"$i"-access_log combined
</VirtualHost>
   
EOF
 fi
   
 done
 
}

#del param_1 param_2 param_3 ...
del(){
  for i ;
  do
   file="/etc/httpd/conf.d/$i"
   if [[  -e $file ]];
   then
    /bin/rm -i $file
   fi
  done
}

#list param_1 param_2 param_3 ...
list(){
  for i ;
  do
   file="/etc/httpd/conf.d/$i"
   if [[  -e $file ]];
   then
    echo  $i
   fi
  done
}

vh_name=vhost
TEMP=`getopt -o c:d:l:: --long create:,delete:,list:: -n 'report' -- "$@"`

if [ $? != 0 ] ; then echo "Terminating..." >&2 ; exit 1 ; fi

# Note the quotes around `$TEMP': they are essential!
eval set -- "$TEMP"
echo "$@"
while true ; do
 case "$1" in
  -c|--create)
    create_param=$(echo $2 | awk -F, '{for(i=1;i<=NF;++i){split($i,arr,"-");if(arr[2] ~ /[^[:space:]]/){for(j=arr[1];j<=arr[2];++j) printf "%s ",j}else printf "%s ",arr[1]}}')
    shift 2
    #echo $create_param
    ;;
  -d|--delete)
    case "$2" in
    all)
     delete_param=$(/bin/ls /etc/httpd/conf.d/ | grep -Po "(?<=$vh_name)[^[:space:]]+" | tr '\n' ' ')
     ;;
    *)
     delete_param=$(echo $2 | awk -F, '{for(i=1;i<=NF;++i){split($i,arr,"-");if(arr[2] ~ /[^[:space:]]/){for(j=arr[1];j<=arr[2];++j) printf "%s ",j}else printf "%s ",arr[1]}}')
     ;;
    esac
    shift 2
    #echo $delete_param
    ;;
  -l|--list)
    # l has an optional argument. As we are in quoted mode,
    # an empty parameter will be generated if its optional
    # argument is not found.
    case "$2" in
    "")
     list_param=$(/bin/ls /etc/httpd/conf.d/ | grep -Po "(?<=$vh_name)[^[:space:]]+" | tr '\n' ' ')
     shift 2
     ;;
    *) 
        list_param=$(echo $2 | awk -F, '{for(i=1;i<=NF;++i){split($i,arr,"-");if(arr[2] ~ /[^[:space:]]/){for(j=arr[1];j<=arr[2];++j) printf "%s ",j}else printf "%s ",arr[1]}}')
        shift 2
        echo $list_param
        ;;
    esac
    ;;
  --) shift ; break ;;
  *) echo "Internal error!" ; exit 1 ;;
 esac
done
#echo "Remaining arguments:"
for arg do echo 'extra argument --> '"\`$arg'" ; done
if [[ ! -z $arg ]];then echo "error,exit 1";exit 1;fi

if [[ ! -z $create_param ]];then
 create_files=$(echo $create_param | awk -v vh=$vh_name '{for(i=1;i<=NF;++i)printf "%s%s ",vh,$i}')
 create $create_files
fi
if [[ ! -z $list_param ]];then
 list_files=$(echo $list_param | awk -v vh=$vh_name '{for(i=1;i<=NF;++i)printf "%s%s ",vh,$i}')
 list $list_files
fi
if [[ ! -z $delete_param ]];then
 delete_files=$(echo $delete_param | awk -v vh=$vh_name '{for(i=1;i<=NF;++i)printf "%s%s ",vh,$i}')
 del $delete_files
fi

转载于:https://blog.51cto.com/zyx1ng/1829848

批量生成10个虚拟主机配置相关推荐

  1. 在window 10 x64下Apache24的下载、安装及虚拟主机配置(以wordpress为例)

    什么是Apache 关于Apache是什么及与tomcat的区别联系见上一篇文章,这里我们只讲window下的Apache web服务器的安装及虚拟主机的配置. Apache下载 (1)打开百度,搜索 ...

  2. nginx之配置文件解读及虚拟主机配置

    文章目录 一.认识配置文件 1.整体结构 2.各"块"功能 3.最详细的配置文件解释 二.配置虚拟主机 1.什么是虚拟主机? 2.虚拟主机类型 3.配置虚拟主机   如果你还没有搭 ...

  3. 访问限制和身份验证和虚拟主机配置的三种方式

    实验:配置访问限制和身份验证登录和三种方式配置虚拟主机访问 设置服务访问控制 限制策略规则 all 表示任意IP地址 Require all granted 允许所有主机访问 Require all ...

  4. Tomcat简介、服务部署、虚拟主机配置及相关配置文件参数优化

    Tomcat简介.服务部署.虚拟主机配置及相关配置文件参数优化 一.Tomcat 简介 核心的组件 二.Tomcat 服务部署安装 1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下 ...

  5. Tomcat 服务器的部署与虚拟主机配置

    目录 前言 一.Tomcat服务器 1.核心组件 2.Tomcat 处理请求过程 二.Tomcat部署 1.安装JDK,配置JAVA环境 2.安装配置Tomcat 3.主要目录说明 三.Tomcat优 ...

  6. linux下安装iasp以及apache多站点虚拟主机配置

                      安装配置 1.     linux下安装iasp 1.1需要准备的的安装包: httpd-2.0.59.tar.gz(最好选该版本,2.2版本在安装配置完后启动出错 ...

  7. Tomcat服务(部署、虚拟主机配置、优化)

    目录 一.介绍tomcat服务器 1. servlet 2.JSP 3.tomcat核心组件 4.Tomcat处理请求过程 1.Tomcat 功能组件结构 二.tomcat数据流向 三.部署Tomca ...

  8. Nginx 虚拟主机配置及负载均衡

    虚拟主机配置: 在现实中,公司为了充分利用服务器资源 , 一台 Nginx 服务器会同时挂多个站点,这些站点可以基于80端口配置 N 多不同域名的服务器,那么,怎样实现这一功能呢,接下来就让我们学习一 ...

  9. apache2.2 虚拟主机配置

    一.改动httpd.conf 打开appserv的安装文件夹,找到httpd.conf文件,分别去掉以下两行文字前面的#号. #LoadModule vhost_alias_module module ...

最新文章

  1. 三种活体检测方式分析
  2. PCMCIA接口采集卡系列
  3. C#宿舍管理系统命名规范与评分标注
  4. 【MATLAB统计分析与应用100例】案例003:matlab调用smooth函数进行加噪数据的平滑处理
  5. 【Elasticsearch】elasticsearch bool 布尔 查询
  6. Java学习笔记24(Map集合)
  7. 夏侯南溪搭建目标检测模型——数据读取篇
  8. 如何根据iframe内嵌页面调整iframe高宽续篇
  9. catia装配体怎么把零件旋转180度_工件180度翻转装置的设计
  10. MockServer 服务框架
  11. 回顾百度企业竞争情报系统
  12. 数据库原理及应用教程(第4版|微课版)陈志泊-第三章习题
  13. 基于springboot特色农产品电商平台毕业设计-附源码211515
  14. onload 属性的作用
  15. Qt使用QCustomPlot画坐标图教程
  16. 安装Chrome Restlet Client插件
  17. 铁路行业通信平台方案
  18. 网传阿里将裁两万人,其股价又大跌10个点,属实有些难了……
  19. 【第十三届全国大学生数学竞赛非数学类】真就参加就有奖
  20. 程序员小吴的 3 月份文章汇总和一个小福利

热门文章

  1. Linux驱动(10)--注册驱动
  2. OpenCV3学习(7.4)——图像分割之四(Meanshift算法,PyrMeanShiftFiltering函数)
  3. NG RouteReuseStrategy(路由复用策略)
  4. 剑指offer-JZ30 包含min函数的栈(C++,附自己的分析)
  5. springmvc为什么不能拦截jsp页面?
  6. virtualbox linux 挂载u盘,Ubuntu 10.04 在Virtualbox 虚拟机上挂载U盘
  7. 交叉编译 for arm-linux-gcc... no,QT4.8.6、tslib库移植到arm上配置出错!求大神指点
  8. P4878 道路修建-美国
  9. Java泛型的PECS原则
  10. 【使用C语言的7的步骤】