Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Q
qa-deploy-utils
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QA
qa-deploy-utils
Commits
641f85af
Commit
641f85af
authored
May 19, 2017
by
智勇
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add
parent
29dbd412
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
75 additions
and
59 deletions
+75
-59
2_get_code_by_type.sh
qa_shell_script/2_get_code_by_type.sh
+9
-8
3_link_config_file_by_type.sh
qa_shell_script/3_link_config_file_by_type.sh
+10
-10
4_build_by_name.sh
qa_shell_script/4_build_by_name.sh
+7
-7
4_build_by_type.sh
qa_shell_script/4_build_by_type.sh
+13
-12
5_restart_by_name.sh
qa_shell_script/5_restart_by_name.sh
+3
-1
5_restart_by_type.sh
qa_shell_script/5_restart_by_type.sh
+13
-10
get_env_ip.sh
qa_shell_script/config_server/get_env_ip.sh
+1
-1
show_info.sh
qa_shell_script/config_server/show_info.sh
+3
-2
deploy_project_by_type.sh
qa_shell_script/deploy_project_by_type.sh
+9
-4
exception_sub_shell.sh
qa_shell_script/exception_sub_shell.sh
+6
-3
make_ngrok_yml.sh
qa_shell_script/ngrok/make_ngrok_yml.sh
+1
-1
No files found.
qa_shell_script/2_get_code_by_type.sh
View file @
641f85af
#!/bin/bash
project_type
=
$1
git_branch
=
$2
ip
=
$3
pwd_path
=
"/home/qa-deploy-utils/qa_shell_script"
config_server
=
"
$pwd_path
/config_server"
project_path
=
`
cat
$config_server
/project_path.sh
`
...
...
@@ -20,7 +21,8 @@ function getCode()
cd
$project_path
project_folder
=
`
find ./
-maxdepth
1
-name
"
$project
"
`
if
[
-n
"
$project_folder
"
]
;
then
sh
$config_server
/show_info.sh
$project
pull代码
$desc
echo
"sh
$config_server
/show_info.sh
$project
pull代码
$desc
$2
"
sh
$config_server
/show_info.sh
$project
pull代码
$desc
$2
cd
./
$project
git checkout ./
git fetch
...
...
@@ -30,7 +32,7 @@ function getCode()
fi
git pull
else
sh
$config_server
/show_info.sh
$project
clone代码
$desc
sh
$config_server
/show_info.sh
$project
clone代码
$desc
$2
git_path
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
git_path
`
git clone
$git_path
fi
...
...
@@ -50,9 +52,8 @@ elif [ "$project_type" = "python" ]
then
getCode python
else
getCode java
getCode python
getCode node
getCode ui
fi
getCode java
$ip
getCode python
$ip
getCode node
$ip
getCode ui
$ip
fi
qa_shell_script/3_link_config_file_by_type.sh
View file @
641f85af
#!/bin/bash
project_type
=
$1
is_public_ip
=
$2
ip
=
$3
pwd_path
=
"/home/qa-deploy-utils/qa_shell_script"
config_server
=
"
$pwd_path
/config_server"
project_path
=
`
cat
$config_server
/project_path.sh
`
...
...
@@ -15,7 +16,7 @@ function linkProjectConfig()
project
=
$1
project_type
=
$2
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
sh
$config_server
/show_info.sh
$project
连接配置文件
$desc
sh
$config_server
/show_info.sh
$project
连接配置文件
$desc
$3
file
=
`
node
$config_server
/get_project_config.js
-name
${
project
}
-attr
config_file
`
echo
"----rm -rf /home/quant_group/
${
project
}
/
$file
"
...
...
@@ -43,7 +44,7 @@ function cpProjectConfig()
project
=
$1
project_type
=
$2
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
sh
$config_server
/show_info.sh
$project
连接配置文件
$desc
sh
$config_server
/show_info.sh
$project
连接配置文件
$desc
$3
file
=
`
node
$config_server
/get_project_config.js
-name
${
project
}
-attr
config_file
`
echo
"----rm -rf /home/quant_group/
${
project
}
/
$file
"
...
...
@@ -61,8 +62,7 @@ function cpProjectConfig()
function
linkNginxConfdProject
()
{
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
sh
$config_server
/show_info.sh nginx_config.d 连接配置文件
$desc
sh
$config_server
/show_info.sh nginx_config.d 连接配置文件
$desc
$3
rm
-rf
/etc/nginx/conf.d
ln
-s
$config_path
/nginx_conf.d /etc/nginx/conf.d
nginx
-t
;
nginx
-s
reload
...
...
@@ -96,19 +96,19 @@ then
else
for
project
in
${
java_projects
[@]
}
do
linkProjectConfig
$project
java
linkProjectConfig
$project
java
$ip
done
for
project
in
${
ui
_projects
[@]
}
for
project
in
${
python
_projects
[@]
}
do
cpProjectConfig
$project
ui
linkProjectConfig
$project
python
$ip
done
for
project
in
${
node_projects
[@]
}
do
linkProjectConfig
$project
node
linkProjectConfig
$project
node
$ip
done
for
project
in
${
python
_projects
[@]
}
for
project
in
${
ui
_projects
[@]
}
do
linkProjectConfig
$project
python
cpProjectConfig
$project
ui
$ip
done
linkNginxConfdProject
fi
qa_shell_script/4_build_by_name.sh
View file @
641f85af
...
...
@@ -73,14 +73,14 @@ function buildUiProject()
# 第一步 将nginx项目的所有文件进行打包
cd
$project_path
/
$project
rm
-rf
./
$config_file
#
rm -rf ./$config_file
if
$is_public_ip
&&
[
-n
"
$is_public_ip
"
]
then
cp
-r
$config_path
/public/ui/
$project
.
*
$project_path
/
$project
/
$config_file
else
cp
-r
$config_path
/ui/
$project
.
*
$project_path
/
$project
/
$config_file
fi
#
if $is_public_ip && [ -n "$is_public_ip" ]
#
then
#
cp -r $config_path/public/ui/$project.* $project_path/$project/$config_file
#
else
#
cp -r $config_path/ui/$project.* $project_path/$project/$config_file
#
fi
#imagemin_dist=`grep -n -A3 "imagemin" *.js|awk '{print $1}'`
...
...
qa_shell_script/4_build_by_type.sh
View file @
641f85af
#!/bin/bash
project_type
=
$1
is_public_ip
=
$2
ip
=
$3
pwd_path
=
"/home/qa-deploy-utils/qa_shell_script"
config_server
=
"
$pwd_path
/config_server"
project_path
=
`
cat
$config_server
/project_path.sh
`
...
...
@@ -17,7 +18,7 @@ function buildJavaProject()
{
project
=
$1
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
sh
$config_server
/show_info.sh
$project
BUILD
$desc
sh
$config_server
/show_info.sh
$project
BUILD
$desc
$2
cd
$project_path
/
$project
rm
-rf
./target/
...
...
@@ -103,7 +104,7 @@ function buildUiProject()
function
buildNginx
()
{
# 第二步 不关机使得nginx生效
sh
$config_server
/show_info.sh nginx.config_d BUILD nginx配置文件生效
sh
$config_server
/show_info.sh nginx.config_d BUILD nginx配置文件生效
$2
nginx
-t
;
nginx
-s
reload
}
...
...
@@ -111,7 +112,7 @@ function buildNodeProject()
{
project
=
$1
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
sh
$config_server
/show_info.sh
$project
BUILD
$desc
sh
$config_server
/show_info.sh
$project
"打包BUILD"
$desc
$2
config_file
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
config_file
`
command
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
command
`
node_version
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
node_version
`
...
...
@@ -129,7 +130,7 @@ function buildPythonProject()
{
project
=
$1
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
sh
$config_server
/show_info.sh
$project
BUILD
$desc
sh
$config_server
/show_info.sh
$project
BUILD
$desc
$2
config_file
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
config_file
`
cd
$project_path
/
$project
setup_path_temp
=
`
find ./
-name
"setup.py"
`
...
...
@@ -168,22 +169,22 @@ else
java_projects
=(
`
node
$config_server
/get_project_config.js
-type
java
-attr
name
`
)
for
project
in
${
java_projects
[@]
}
do
buildJavaProject
$project
buildJavaProject
$project
$ip
done
ui_projects
=(
`
node
$config_server
/get_project_config.js
-type
ui
-attr
name
`
)
for
project
in
${
ui
_projects
[@]
}
python_projects
=(
`
node
$config_server
/get_project_config.js
-type
python
-attr
name
`
)
for
project
in
${
python
_projects
[@]
}
do
build
UiProject
$project
build
PythonProject
$project
$ip
done
node_projects
=(
`
node
$config_server
/get_project_config.js
-type
node
-attr
name
`
)
for
project
in
${
node_projects
[@]
}
do
buildNodeProject
$project
buildNodeProject
$project
$ip
done
python_projects
=(
`
node
$config_server
/get_project_config.js
-type
python
-attr
name
`
)
for
project
in
${
python
_projects
[@]
}
ui_projects
=(
`
node
$config_server
/get_project_config.js
-type
ui
-attr
name
`
)
for
project
in
${
ui
_projects
[@]
}
do
build
PythonProject
$project
build
UiProject
$project
$ip
done
buildNginx
fi
qa_shell_script/5_restart_by_name.sh
View file @
641f85af
...
...
@@ -52,7 +52,9 @@ function restartJavaProject()
mv
$project_path
/logs/
$log_name
$project_path
/logs/
$project
.log.
$time
if
[[
$project
==
"redpacket"
]]
;
then
if
[[
$project
==
"xyqb-mall"
]]
;
then
echo
`
java
-Xmx1024m
-XX
:PermSize64m
-Xloggc
:/tmp/
${
project
}
.log
-XX
:+PrintGCDetails
-XX
:+PrintGCTimeStamps
-jar
${
project
}
.jar
--worker
1
--currentW
orker 1
-t
-ts
>
/dev/null 2>&1 &
`
elif
[[
$project
==
"redpacket"
]]
;
then
echo
`
java
-Xmx512m
-XX
:PermSize64m
-Xloggc
:/tmp/
${
project
}
.log
-XX
:+PrintGCDetails
-XX
:+PrintGCTimeStamps
-jar
${
project
}
.jar
--worker
1
--currentWorker
1
-t
-ts
>
/dev/null 2>&1 &
`
else
echo
`
java
-Xmx512m
-XX
:PermSize64m
-Xloggc
:/tmp/
${
project
}
.log
-XX
:+PrintGCDetails
-XX
:+PrintGCTimeStamps
-jar
${
project
}
.jar
--worker
1
--currentWorker
1
-t
>
/dev/null 2>&1 &
`
...
...
qa_shell_script/5_restart_by_type.sh
View file @
641f85af
#!/bin/bash
project_type
=
$1
is_public_ip
=
$2
ip
=
$3
pwd_path
=
"/home/qa-deploy-utils/qa_shell_script"
config_shell_path
=
"
$pwd_path
"
config_server
=
"
$pwd_path
/config_server"
...
...
@@ -21,7 +22,7 @@ function restartJavaProject()
for
project
in
${
projects
[@]
}
do
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
sh
$config_server
/show_info.sh
$project
重新启动
$desc
sh
$config_server
/show_info.sh
$project
重新启动
$desc
$1
cd
$project_path
/
$project
P_UUID
=
`
ps
-ef
|grep
${
project
}
.jar |grep
-v
'grep'
|awk
'{print $2}'
`
if
[
-n
"
${
P_UUID
}
"
]
;
then
...
...
@@ -49,7 +50,9 @@ function restartJavaProject()
echo
"-----project:
$project
while be run command: java -Xmx256m -XX:PermSize64m -Xloggc:/tmp/
${
project
}
.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar
${
project
}
.jar --worker 1 --currentWorker 1 -t > /dev/null 2>&1 &"
#echo `java -Xmx512m -XX:PermSize64m -Xloggc:/tmp/${project}.log -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -jar ${project}.jar --worker 1 --currentWorker 1 -t > /dev/null 2>&1 &`
if
[[
$project
==
"redpacket"
]]
;
then
if
[[
$project
==
"xyqb-mall"
]]
;
then
echo
`
java
-Xmx1024m
-XX
:PermSize64m
-Xloggc
:/tmp/
${
project
}
.log
-XX
:+PrintGCDetails
-XX
:+PrintGCTimeStamps
-jar
${
project
}
.jar
--worker
1
--currentWorker
1
-t
-ts
>
/dev/null 2>&1 &
`
elif
[[
$project
==
"redpacket"
]]
;
then
echo
`
java
-Xmx512m
-XX
:PermSize64m
-Xloggc
:/tmp/
${
project
}
.log
-XX
:+PrintGCDetails
-XX
:+PrintGCTimeStamps
-jar
${
project
}
.jar
--worker
1
--currentWorker
1
-t
-ts
>
/dev/null 2>&1 &
`
else
echo
`
java
-Xmx512m
-XX
:PermSize64m
-Xloggc
:/tmp/
${
project
}
.log
-XX
:+PrintGCDetails
-XX
:+PrintGCTimeStamps
-jar
${
project
}
.jar
--worker
1
--currentWorker
1
-t
>
/dev/null 2>&1 &
`
...
...
@@ -68,7 +71,7 @@ function restartNodeProject()
do
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
stop_command
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
command2
`
sh
$config_server
/show_info.sh
$project
重新启动
$desc
sh
$config_server
/show_info.sh
$project
重新启动
$desc
$1
cd
$project_path
/
$project
$stop_command
...
...
@@ -98,7 +101,7 @@ function restartPythonProject()
desc
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
desc
`
port
=
`
node
$config_server
/get_project_config.js
-name
$project
-attr
port
`
sh
$config_server
/show_info.sh
$project
重新启动
$desc
sh
$config_server
/show_info.sh
$project
重新启动
$desc
$1
cd
$project_path
/
$project
setup_path_temp
=
`
find ./
-name
"run.py"
`
python_project_path
=
$project_path
/
$project
${
setup_path_temp
/\.\//\/
}
...
...
@@ -172,12 +175,12 @@ elif [ "$project_type" = "python" ]; then
elif
[
"
$project_type
"
=
"ui"
]
;
then
restartUiProject
else
echo
"***restart
node
***"
restart
NodeProject
echo
"***restart
java
***"
restart
JavaProject
$ip
echo
"***restart python***"
restartPythonProject
restartPythonProject
$ip
echo
"***restart node***"
restartNodeProject
$ip
echo
"***restart ui***"
restartUiProject
echo
"***restart java***"
restartJavaProject
restartUiProject
$ip
fi
qa_shell_script/config_server/get_env_ip.sh
View file @
641f85af
12 13 14 15 16 17 22 23 24 2
6
50 151 152 153 154 155 156 158 161 162 163 164
12 13 14 15 16 17 22 23 24 2
5 26 28
50 151 152 153 154 155 156 158 161 162 163 164
qa_shell_script/config_server/show_info.sh
View file @
641f85af
#!/bin/bash
echo
"
\"
--------------------------------------------
\"
"
echo
"
\"
--------项目
$1
将要
$2
\"
"
echo
"
\"
--------项目描述:
$3
\"
"
echo
"
\"
--------项目
$1
将要
$2
--------
\"
"
echo
"
\"
--------项目描述:
$3
--------
\"
"
echo
"
\"
--------部署环境:
$4
--------
\"
"
echo
"
\"
--------------------------------------------
\"
"
qa_shell_script/deploy_project_by_type.sh
View file @
641f85af
...
...
@@ -3,6 +3,7 @@ date
project_type
=
$1
branch_name
=
$2
public_ip
=
$3
ip
=
$4
pwd_path
=
"/home/qa-deploy-utils/qa_shell_script"
config_server
=
"
$pwd_path
/config_server"
...
...
@@ -22,8 +23,12 @@ else
projects
=(
`
node
$config_server
/get_project_config.js
-type
$1
-attr
name
`
)
echo
${#
projects
[@]
}
"个"
$1
"项目:"
${
projects
[@]
}
fi
sh 2_get_code_by_type.sh
$project_type
$branch_name
sh 3_link_config_file_by_type.sh
$project_type
$public_ip
sh 4_build_by_type.sh
$project_type
$public_ip
sh 5_restart_by_type.sh
$project_type
$public_ip
echo
"sh 2_get_code_by_type.sh
$project_type
$branch_name
$ip
"
sh 2_get_code_by_type.sh
$project_type
$branch_name
$ip
echo
"sh 3_link_config_file_by_type.sh
$project_type
$public_ip
$ip
"
sh 3_link_config_file_by_type.sh
$project_type
$public_ip
$ip
echo
"sh 4_build_by_type.sh
$project_type
$public_ip
$ip
"
sh 4_build_by_type.sh
$project_type
$public_ip
$ip
echo
"sh 5_restart_by_type.sh
$project_type
$public_ip
$ip
"
sh 5_restart_by_type.sh
$project_type
$public_ip
$ip
date
qa_shell_script/exception_sub_shell.sh
View file @
641f85af
...
...
@@ -41,10 +41,11 @@ function tranceConfig()
#tranceConfig ui "7047" "12047" "192.168.4.12" "merchant-op-ui.js"
#tranceConfig java "spider-center.host=http:\/\/192.168.4.12:7021\/" "spider-center.host=http:\/\/spider-center-12.ss.xyqb.loan\/" "192.168.4.12" "spider-center.properties"
#tranceConfig ui "7041" "7054" "192.168.4.12" "activity-ui.js"
tranceConfig java
"baitiao_redpacket_notify_url=http:
\/\/
192.168.4.12:7031
\/
redpacket
\/
distribute
\/
"
"baitiao_redpacket_notify_url=http:
\/\/
192.168.4.12:7031"
"192.168.4.12"
"baitiao.properties"
#4.13
tranceConfig java
"pay.debug=0"
"pay.debug=1"
"192.168.4.13"
"xyqb-mall.properties"
#
tranceConfig java "pay.debug=0" "pay.debug=1" "192.168.4.13" "xyqb-mall.properties"
tranceConfig java
"red.packet.id=10000115"
"red.packet.id=56"
"192.168.4.13"
"xyqb-mall.properties"
tranceConfig java
"7002"
"7050"
"192.168.4.13"
"baitiao.properties"
tranceConfig java
"lkb.model.url=http:
\/\/
192.168.4.202
\/
Model
\/
openapi"
"lkb.model.url=http:
\/\/
192.168.4.13:8090
\/
Model
\/
openapi"
"192.168.4.13"
"baitiao.properties"
...
...
@@ -54,6 +55,7 @@ tranceConfig java "xyqb.model.url=http:\/\/192.168.4.202\/Model\/openapi" "xyqb.
#tranceConfig java 'cardniu.client.url=http://kn.feidee.net/loanmanage/loan/partner/k_n_user_quota_client.do' 'cardniu.client.url=http://192.168.4.248/mockjs/31/loanmanage/loan/partner/k_n_user_quota_client.do' "192.168.4.14" "xyqb.properties"
#tranceConfig java "cardniu.url=http://kn.feidee.net/loanmanage/loan/partner/k_n_user_quota.do" "cardniu.url=http://192.168.4.248/mockjs/31/loanmanage/loan/partner/k_n_user_quota.do" "192.168.4.14" "xyqb.properties"
tranceConfig java
"xyqb.is.debug=0"
"xyqb.is.debug=1"
"192.168.4.14"
"xyqb.properties"
tranceConfig nginx
"
\/
home
\/
quant_group
\/
paycenter-ui
\/
dist"
"
\/
home
\/
quant_group
\/
new-paycenter-ui
\/
dist"
"192.168.4.14"
"paycenter-ui.conf"
#tranceConfig java "192.168.4.14:3306" "192.168.4.20:3306" "192.168.4.14" "*"
#tranceConfig java "192.168.4.14:7007" "139.198.2.95:1407" "192.168.4.14" "gu-bei.properties"
#tranceConfig python "192.168.4.14" "192.168.4.20" "192.168.4.14" "qin-qiong.*"
...
...
@@ -70,6 +72,7 @@ tranceConfig java "xyqb.is.debug=0" "xyqb.is.debug=1" "192.168.4.14" "xyqb.prope
#tranceConfig java "wx7bf214ccdcbd2e16" "wx0a7c0bce0c3ac523" "192.168.4.15" "gu-bei.properties"
#tranceConfig java "paycenter.host.url=http:\/\/192.168.4.15:7007" "paycenter.host.url=http:\/\/wechattest1.xyqb.com" "192.168.4.15" "gu-bei.properties"
#tranceConfig java "139.198.2.95:1507" "wechattest1.xyqb.com" "192.168.4.15" "gu-bei.properties"
#tranceConfig java "loanorder" "loanstatus" "192.168.4.15" "xyqb.properties"
tranceConfig java
"xyqb-ui.url=http://192.168.4.15:7001"
"xyqb-ui.url=http://192.168.4.15:7057"
"192.168.4.15"
"xyqb.properties"
#4.16
...
...
@@ -108,8 +111,8 @@ tranceConfig node "d45o0qd" "5exp2xo" "192.168.4.152" "op-api.js"
#tranceConfig java "qgbc-ui.url=http:\/\/192.168.4.152:7002" "qgbc-ui.url=http:\/\/192.168.4.152:7050" "192.168.4.152" "xyqb.properties"
#tranceConfig java "7025" "7003" "192.168.4.152" "baitiao.properties"
#tranceConfig ui "wechattest.xyqb.com" "wechattest1.xyqb.com" "192.168.4.22" "xyqb-user-ui.js"
tranceConfig ui
"192.168.4.152:7019"
"171910sn46.iask.in"
"192.168.4.152"
"bt-ui.js"
tranceConfig java
"139.198.2.95:2231"
"192.168.4.22:7031"
"192.168.4.22"
"xyqb.properties"
tranceConfig java
"baitiao_redpacket_notify_url=http:
\/\/
192.168.4.12:7031
\/
redpacket
\/
distribute
\/
"
"baitiao_redpacket_notify_url=http:
\/\/
192.168.4.12:7031"
"192.168.4.12"
"baitiao.properties"
tranceConfig nginx
"
\/
home
\/
quant_group
\/
paycenter-ui
\/
dist"
"
\/
home
\/
quant_group
\/
new-paycenter-ui
\/
dist"
"192.168.4.14"
"paycenter-ui.conf"
qa_shell_script/ngrok/make_ngrok_yml.sh
View file @
641f85af
...
...
@@ -57,7 +57,7 @@ function addFile()
# port=`node $config_server/get_project_config.js -name $project -attr port`
# addFile $project $port $filename
#done
projects_of_out_proxy
=(
gu-bei activity-op op-api spider-center di-ting merchant-backend cash-loan-flow xyqb xyqb-quartz xyqb-query qgbc-ui bt-ui xyqb-ui xyqb-user-ui
)
projects_of_out_proxy
=(
gu-bei activity-op op-api spider-center di-ting merchant-backend cash-loan-flow xyqb xyqb-quartz xyqb-query qgbc-ui bt-ui xyqb-ui xyqb-user-ui
xyqb-mall
)
for
ip_last
in
${
ips
[@]
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment