#!/bin/bash
#生成配置文件auto-ops.conf的中间件配置项,要求auto-ops.conf文件已经存在
#usage ./scriptname apahce 1.1.1.1 tomcat 1.1.1.2 jboss 1.1.1.3
###参数规范性校验
###清除原有中间件的参数配置
CONFIG=auto-ops.conf
if [ -f ${CONFIG} ];
then
sed -i '/\"jboss\"/,$d' auto-ops.conf
else
exit 2
fi
###把参数分两类写入两个文件
for i in $*
do
case "$i" in
apache|tomcat|jboss)
echo $i >>midtype
;;
*)
echo $i >>ipaddr
;;
esac
done
###生成随机密码
P1=`cat /dev/urandom | tr -cd abcdefghjkmnpqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ| head -c 4`
P2=`cat /dev/urandom | tr -cd \!@\#$%0123456789| head -c 3`
P3=`cat /dev/urandom | tr -cd \!@\#$% | head -c 1`
PASS="$P1$P2$P3"
hostname=`hostname`
###写入apache参数配置
WebConf(){
cat >>${CONFIG}<<EOF
{
"type":"ews-$midtype",
"host":{"ip":"$ipaddr"}
},
EOF
}
###写入jboss参数配置
JbossConf(){
cat >>${CONFIG}<<EOF
{
"type":"eap-$midtype",
"host":{"ip":"$ipaddr"}
"admin-user":"jbossadmin",
"admin-password":"$PASS",
"node-name":["$hostname-Server1","$hostname-Server2"]
},
EOF
}
###写入tomcat参数配置
TomcatConf(){
cat >>${CONFIG}<<EOF
{
"type":"ews-$midtype",
"host":{"ip":"$ipaddr"}
"admin-user":"tomcatadmin",
"admin-password":"$PASS",
"node-name":["$hostname-Server1","$hostname-Server2"]
},
EOF
}
###开始写入新的中间件参数配置
cat >>${CONFIG}<<EOF
"jboss":[
EOF
###调用webconf,jbossconf,tomcatconf写入参数到配置文件
while read -u 3 midtype;read -u 5 ipaddr
do
case $midtype in
apache)
WebConf
;;
tomcat)
TomcatConf
;;
jboss)
JbossConf
;;
esac
done 3<midtype 5<ipaddr
###删除中间产出文件
rm -f midtype ipaddr jdkver
###补全配置文件结尾
cat >>${CONFIG}<<EOF
]
EOF
知识点:
sed 用法,EOF用法,函数调用,while循环两个变量的方法