批量生成10个虚拟主机配置
写一个脚本,批量生成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个虚拟主机配置相关推荐
- 在window 10 x64下Apache24的下载、安装及虚拟主机配置(以wordpress为例)
什么是Apache 关于Apache是什么及与tomcat的区别联系见上一篇文章,这里我们只讲window下的Apache web服务器的安装及虚拟主机的配置. Apache下载 (1)打开百度,搜索 ...
- nginx之配置文件解读及虚拟主机配置
文章目录 一.认识配置文件 1.整体结构 2.各"块"功能 3.最详细的配置文件解释 二.配置虚拟主机 1.什么是虚拟主机? 2.虚拟主机类型 3.配置虚拟主机 如果你还没有搭 ...
- 访问限制和身份验证和虚拟主机配置的三种方式
实验:配置访问限制和身份验证登录和三种方式配置虚拟主机访问 设置服务访问控制 限制策略规则 all 表示任意IP地址 Require all granted 允许所有主机访问 Require all ...
- Tomcat简介、服务部署、虚拟主机配置及相关配置文件参数优化
Tomcat简介.服务部署.虚拟主机配置及相关配置文件参数优化 一.Tomcat 简介 核心的组件 二.Tomcat 服务部署安装 1.关闭防火墙,将安装 Tomcat 所需软件包传到/opt目录下 ...
- Tomcat 服务器的部署与虚拟主机配置
目录 前言 一.Tomcat服务器 1.核心组件 2.Tomcat 处理请求过程 二.Tomcat部署 1.安装JDK,配置JAVA环境 2.安装配置Tomcat 3.主要目录说明 三.Tomcat优 ...
- linux下安装iasp以及apache多站点虚拟主机配置
安装配置 1. linux下安装iasp 1.1需要准备的的安装包: httpd-2.0.59.tar.gz(最好选该版本,2.2版本在安装配置完后启动出错 ...
- Tomcat服务(部署、虚拟主机配置、优化)
目录 一.介绍tomcat服务器 1. servlet 2.JSP 3.tomcat核心组件 4.Tomcat处理请求过程 1.Tomcat 功能组件结构 二.tomcat数据流向 三.部署Tomca ...
- Nginx 虚拟主机配置及负载均衡
虚拟主机配置: 在现实中,公司为了充分利用服务器资源 , 一台 Nginx 服务器会同时挂多个站点,这些站点可以基于80端口配置 N 多不同域名的服务器,那么,怎样实现这一功能呢,接下来就让我们学习一 ...
- apache2.2 虚拟主机配置
一.改动httpd.conf 打开appserv的安装文件夹,找到httpd.conf文件,分别去掉以下两行文字前面的#号. #LoadModule vhost_alias_module module ...
最新文章
- 三种活体检测方式分析
- PCMCIA接口采集卡系列
- C#宿舍管理系统命名规范与评分标注
- 【MATLAB统计分析与应用100例】案例003:matlab调用smooth函数进行加噪数据的平滑处理
- 【Elasticsearch】elasticsearch bool 布尔 查询
- Java学习笔记24(Map集合)
- 夏侯南溪搭建目标检测模型——数据读取篇
- 如何根据iframe内嵌页面调整iframe高宽续篇
- catia装配体怎么把零件旋转180度_工件180度翻转装置的设计
- MockServer 服务框架
- 回顾百度企业竞争情报系统
- 数据库原理及应用教程(第4版|微课版)陈志泊-第三章习题
- 基于springboot特色农产品电商平台毕业设计-附源码211515
- onload 属性的作用
- Qt使用QCustomPlot画坐标图教程
- 安装Chrome Restlet Client插件
- 铁路行业通信平台方案
- 网传阿里将裁两万人,其股价又大跌10个点,属实有些难了……
- 【第十三届全国大学生数学竞赛非数学类】真就参加就有奖
- 程序员小吴的 3 月份文章汇总和一个小福利
热门文章
- Linux驱动(10)--注册驱动
- OpenCV3学习(7.4)——图像分割之四(Meanshift算法,PyrMeanShiftFiltering函数)
- NG RouteReuseStrategy(路由复用策略)
- 剑指offer-JZ30 包含min函数的栈(C++,附自己的分析)
- springmvc为什么不能拦截jsp页面?
- virtualbox linux 挂载u盘,Ubuntu 10.04 在Virtualbox 虚拟机上挂载U盘
- 交叉编译 for arm-linux-gcc... no,QT4.8.6、tslib库移植到arm上配置出错!求大神指点
- P4878 道路修建-美国
- Java泛型的PECS原则
- 【使用C语言的7的步骤】