提交 cd4865f7 authored 作者: PGY's avatar PGY

refactor(自动化部署脚本): 优化shell脚本代码中的问题

- 将时间戳变量声明和赋值分离,提高代码可读性
- 使用find命令替换grep -vE模式,改进网络接口检测的准确性和性能
- 为数组元素添加引号,避免变量展开问题
- 移除未使用的group变量
- 使用tee -a命令替换cat >>,提高文件写入的安全性
- 移除EMQX容器的重复端口映射配置
- 修复数组遍历时的语法,使用"${array[@]}"替换"${array[*]}"
- 添加版本信息日志输出
- 移除调试用的尾日志命令注释
上级 bd4502c7
......@@ -6,7 +6,8 @@ mkdir -p "$(dirname "$LOG_FILE")" 2>/dev/null
# 用户输入的东西也同步记录到日志信息里面
function log() {
# 获取当前时间
local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
local timestamp
timestamp=$(date "+%Y-%m-%d %H:%M:%S")
# 日志级别对应的颜色代码
local INFO_COLOR="\033[32m" # 绿色
local WARN_COLOR="\033[33m" # 黄色
......@@ -52,7 +53,7 @@ function log() {
#------------------------------服务器检测-start---------------------------------------------
function detectNetType() {
log "INFO" "准备获取所有网口信息,排除 loopback 和虚拟接口"
INTERFACES=$(ls /sys/class/net | grep -vE 'lo|docker|br-|veth|virbr|vmnet')
INTERFACES=$(find /sys/class/net -mindepth 1 -maxdepth 1 -type d -not -name 'lo' -not -name 'docker*' -not -name 'br-*' -not -name 'veth*' -not -name 'virbr*' -not -name 'vmnet*' -exec basename {} \;)
# 遍历每个网口,检查是否配置了 IP 地址,并输出网口信息
log "INFO" "检测到的网口信息如下:"
for iface in $INTERFACES; do
......@@ -340,8 +341,8 @@ fs11=$auto_java"/server_bag/ufastdfs.tar"
fs12=$auto_java"/new_auto.sh"
ds=($ds1 $ds2 $ds3 $ds4 $ds5 $ds6 $ds7 $ds8 $ds9 $ds10 $ds11 )
fs=($fs1 $fs2 $fs3 $fs4 $fs5 $fs6 $fs7 $fs8 $fs9 $fs10 $fs11 $fs12)
ds=("$ds1" "$ds2" "$ds3" "$ds4" "$ds5" "$ds6" "$ds7" "$ds8" "$ds9" "$ds10" "$ds11")
fs=("$fs1" "$fs2" "$fs3" "$fs4" "$fs5" "$fs6" "$fs7" "$fs8" "$fs9" "$fs10" "$fs11" "$fs12")
log "INFO" "准备检查预定系统文件"
for j in 0 1 2 3 4 5 6 7 8 9 10;
do
......@@ -379,7 +380,6 @@ function add_user()
{
log "INFO" "创建用户user"
user=user
group=user
log "INFO" "判断是否存在用户$user"
egrep "^$user" /etc/passwd >& /dev/null
......@@ -569,7 +569,7 @@ then
else
#每天13点备份
log "INFO" "配置数据库定时备份"
sudo cat >> /var/spool/cron/$userset<<EOF
sudo tee -a /var/spool/cron/$userset <<EOF
0 13 * * * bash /usr/local/docker/UbainsmysqlBakUp.sh
EOF
sleep 3
......@@ -600,7 +600,6 @@ else
-p 1883:1883 \
-p 8883:8883 \
-p 8083:8083 \
-p 18083:18083 \
-v /var/www/emqx/config/emqx.conf:/opt/emqx/etc/emqx.conf:ro \
-v /var/www/emqx/config/auth-built-in-db-bootstrap.csv:/opt/emqx/etc/auth-built-in-db-bootstrap.csv:ro \
-v /var/www/emqx/config/acl.conf:/opt/emqx/etc/acl.conf:ro \
......@@ -922,8 +921,8 @@ fj2=$install_dir_java"/java/api-java-meeting2.0/update.sh"
fj3=$install_dir_java"/java/api-java-meeting2.0/ubains-meeting-inner-api-1.0-SNAPSHOT.jar"
fj4=$install_dir_java"/java/start.sh"
dj=($dj1 $dj2 $dj3 $dj4 $dj5 $dj6 $dj7 $dj8 $dj9)
fj=($fj1 $fj2 $fj3 $fj4 )
dj=("$dj1" "$dj2" "$dj3" "$dj4" "$dj5" "$dj6" "$dj7" "$dj8" "$dj9")
fj=("$fj1" "$fj2" "$fj3" "$fj4")
for j in 0 1 2 3 4 5 6 7 8;
do
if [ -d "${dj[j]}" ] ; then
......@@ -961,7 +960,7 @@ file13=$install_dir_java'/java/api-java-dubbo/dingding/config/application-prod.p
file14=$install_dir_java'/java/api-java-dubbo/dingding/config/bootstrap.yml'
file15=$install_dir_java'/java/api-java-dubbo/welink/config/application-prod.properties'
file16=$install_dir_java'/java/api-java-dubbo/welink/config/bootstrap.yml'
file=($file1 $file2 $file3 $file4 $file5 $file6 $file7 $file8 $file9 $file10 $file11 $file12 $file13 $file14 $file15 $file16)
file=("$file1" "$file2" "$file3" "$file4" "$file5" "$file6" "$file7" "$file8" "$file9" "$file10" "$file11" "$file12" "$file13" "$file14" "$file15" "$file16")
for j in 0 1 2 3 4 5 7 8 9 10 11 12 13 14 15;
do
if [ -f "${file[j]}" ] ; then
......@@ -976,7 +975,7 @@ done
log "INFO" "开始修改配置文件中的ip地址"
log "INFO" "准备修改配置文件中的ip地址为$IP"
for i in ${file[*]};
for i in "${file[@]}";
do
$sudoset sed -i "s/$ip/$IP/g" $i
......@@ -1040,6 +1039,8 @@ elif [ -e "$PWD/$sys3" ]; then
version="预定系统+运维系统版本"
fi
log "INFO" "$txt"
#-------------------------------获取服务器ip-start--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
#文件默认ip
ip='192.168.1.141'
......@@ -1123,4 +1124,4 @@ log "INFO" "预定系统服务:umysql,uredis,ujava2,uemqx,ustorage,utrac
$sudoset docker ps
#------------------------------脚本执行-end------------------------------------------------------------------
#tail -1000f /var/www/java/api-java-meeting2.0/logs/ubains-INFO-AND-ERROR.log
#tail -1000f /var/www/java/api-java-meeting2.0/logs/ubains-INFO-AND-ERROR.log
\ No newline at end of file
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论