|
楼主 |
发表于 2017-6-6 15:22:44
|
显示全部楼层
本帖最后由 枫狐狸 于 2017-6-6 15:32 编辑
正确格式如下,注意红字部分:
{"data":[
{"{#JMX_PORT}":"12345","{#JAVA_NAME}":"X"},
{"{#JMX_PORT}":"12346","{#JAVA_NAME}":"XX"},
{"{#JMX_PORT}":"12347","{#JAVA_NAME}":"XXX"},
{"{#JMX_PORT}":"12348","{#JAVA_NAME}":"XXXX"},
{"{#JMX_PORT}":"12349","{#JAVA_NAME}":"XXXXX"}]}
你的可能是循环判断错了,最后一行多输出一个,号
#!/bin/bash
t_datadir=`find /home/*/tomcat*/bin/ -name catalina.sh|awk -F"/bin/catalina.sh" '{print $1}'` #检查tomcat实例路径,如果实例都是root用户启动,在| grep [t]omcat后添加|grep root
tomcat_no=`find /home/*/tomcat*/bin/ -name catalina.sh|awk -F"/bin/catalina.sh" '{print $1}'|wc -l` #检查tomcat实例数,如果实例都是root用户启动,在| grep [t]omcat后添加|grep root
n_port=12345 #配置监控初始端口
i=1 #定议第一条t_datadir的内容
printf '{"data":[\n'
for tomcat in $t_datadir #输出JSON文件
do
t_service=`echo "$tomcat"|awk -F"/" '{print $(NF-1)}'`
if [ "$i" != ${tomcat_no} ];then #判断i不是最后一个,输出连续格式 },\n
printf "\t\t{ \n"
printf "\t\t\t\"{#JMX_PORT}\":\"${n_port}\",\n"
printf "\t\t\t\"{#JAVA_NAME}\":\"${t_service}\"},\n"
else #当i是最后一个时,输出json结束格式 }]}\n
printf "\t\t{ \n"
printf "\t\t\t\"{#JMX_PORT}\":\"${n_port}\",\n"
printf "\t\t\t\"{#JAVA_NAME}\":\"${t_service}\"}]}\n"
fi
let "n_port=n_port+1" #监控端口号默认+1
let "i=i+1" #t_datadir的输出内容自动向后移一位
done
|
|