scripts/update/dash_rand_logo.sh

64 lines
1.7 KiB
Bash

#!/bin/bash
# 设置图片数量和输出文件名
IMAGE_NUM_ALL=`ls /opt/apps/localcr/A_dashboard/local/icons | wc -l`
IMAGE_NUM_NEEDED=`cat /opt/apps/localcr/A_dashboard/local/config/services.yaml | grep -E '[0-9]{1,3}.jpg' | wc -l`
if [[ $IMAGE_NUM_NEEDED -gt $IMAGE_NUM_ALL ]]; then
alarm='Dashboard:\nThere is NOT enough logos to use, please check ASAP.'
bash /opt/scripts/alert/sendmsg.sh "$alarm"
exit 233
fi
# 初始化数组
declare -a arr=()
# 随机选择图片名,不重复
for ((i=0; i<$IMAGE_NUM_NEEDED; i++)); do
while true; do
# 随机生成图片名
RAND=$((RANDOM%IMAGE_NUM_ALL))
IMG_NAME=$RAND.jpg
# 判断图片名是否已经被选择过
chosen=0
for num in "${arr[@]}"; do
if [ "$num" == "$IMG_NAME" ]; then
chosen=1
break
fi
done
# 如果图片名未被选择过,则将其添加到数组中
if [ "$chosen" -eq 0 ]; then
arr=(${arr[@]} $IMG_NAME)
break
fi
done
done
# 需要修改的文件的路径和名称
filename_origin="/opt/apps/localcr/A_dashboard/local/config/services.yaml"
filename_copy="/opt/apps/localcr/A_dashboard/local/config/services_copy.yaml"
cp $filename_origin $filename_copy
# 循环处理所有符合指定模式的行
let count=0
lineno=1
while read line; do
# 获取文件名和路径
oldname=$(echo $line | grep -Eo '[0-9]{1,3}.jpg')
if [[ $oldname != '' ]]; then
newname=${arr[$count]}
# echo $newname = $oldname
# 替换文件名
sed -i "${lineno}s/\/$oldname/\/$newname/" $filename_origin
let count=count+1
fi
let lineno=lineno+1
done < $filename_copy
rm $filename_copy