clean_es_index.sh
#!/bin/bash
while read line;do
key=`echo $line|awk -F = '{print $1}'`
val=`echo $line|awk -F = '{print $2}'`
eval "${key}=${val}"
done < ./env.cfg
echo "保存时间==${save_days}" >> ${clean_log}
del_time=$[$[$(date +%s%N)/1000000]-(86400000*$save_days)]
echo "删除截止时间==${del_time}" >> ${clean_log}
index_times=$(curl -s -u ${es_username}:${es_passward} "${es_server_ip}:${es_server_port}/_cat/indices?h=i,cd"|awk '{print $1,$2}')
echo "${index_times}" >> ${clean_log}
indexs=(${index_times// / })
echo "all index size==="${#indexs[@]}
for(( i=0;i<${#indexs[@]};i++));do
if [ $(($i%2)) -eq 0 ];then
indexname=${indexs[i]}
indextime=${indexs[i+1]}
if [ $indextime -lt $del_time ];then
for delete_index in ${delete_indexs[@]};do
if [[ $indexname =~ $delete_index ]];then
del_result=`curl -s -u ${es_username}:${es_passward} -XDELETE "${es_server_ip}:${es_server_port}/"${indexname}"?pretty" |sed -n '2p'`
echo "删除截止时间==${del_time} 数组下标==$i 索引创建时间==${indextime} 索引名称==${indexname} 删除结果==${del_result}" >> ${clean_log}
fi
done
fi
fi
done
env.cfg
clean_log=/root/log_es_clean.log
save_days=1
es_server_ip=192.168.44.20
es_server_port=9200
es_username=admin
es_passward=admin123
delete_indexs=(dw_span_model dw_trace_model dw_trace_min_summary_model dw_trace_hour_summary_model dw_trabizattr_model)
顾名思义,上面这两个脚本是做es索引清理的,在使用eval读取字典文件的时候报了下面这个异常
开始一直使用cat去看文件有什么不对劲,但是一直没有发现问题,最后在vi的时候才发现env.cfg最下面有个空行,导致了报错