Skip to content

Commit 00bb524

Browse files
authored
处理MySQL命令行输入密码的安全提示
1 parent f3b2fb6 commit 00bb524

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

mysql_oltp_test.sh

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ sb_test() {
4040

4141
#创建记录测试信息的表
4242
echo -e "\n---------------\n创建测测试结果表$m_db.$m_table\n---------------"
43-
mysql -u$m_user -p$m_passwd -P$m_port -h$m_host <<EOF
43+
return=$(mysql -u$m_user -p$m_passwd -P$m_port -h$m_host <<EOF 2>&1
4444
CREATE TABLE IF NOT EXISTS $m_db.$m_table (
4545
scenario varchar(30) NOT NULL DEFAULT '' COMMENT '测试场景',
4646
server_name varchar(15) NOT NULL COMMENT '被测DB name',
@@ -55,8 +55,10 @@ sb_test() {
5555
95_pct_time decimal(12,2) NOT NULL DEFAULT '0.00' COMMENT '单位毫秒'
5656
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
5757
EOF
58+
)
5859
if [ $? -ne 0 ];then
59-
echo "create table $m_db.$m_table failed"
60+
echo $return|sed 's/[Ww]arning:.*password on the command.*insecure\.//'
61+
#echo "create table $m_db.$m_table failed"
6062
exit -1
6163
fi
6264

@@ -75,22 +77,26 @@ EOF
7577
echo -e "\nSysbench error! For more information see $log"
7678
exit -1
7779
fi
78-
result=$(cat $log | egrep "read:|write:|read/write.*:|total:|total\ time:|approx\..*95.*:" | sed -r -e "s/[0-9]+ \(//g" -e "s/\ per sec\.\)//g" -e "s/m?s$//g"| awk '{printf("%s
79-
",$NF)}' | sed "s/\ /,/g" | sed "s/,$//g")
80+
result=$(cat $log | egrep "read:|write:|read/write.*:|total:|total\ time:|approx\..*95.*:" | sed -r -e "s/[0-9]+ \(//g" -e "s/\ per sec\.\)//g" -e "s/m?s$//g"| awk '{printf("%s ",$NF)}' | sed "s/\ /,/g" | sed "s/,$//g")
8081

8182
#测试完成后立刻记录系统一分钟负载值,可近似认为测试过程中proxy的负载抽样
8283
load=$(ssh -p22 $4 "uptime|awk -F: '{print \$NF}'|awk -F, '{print \$1}'" 2>/dev/null)
83-
84+
if [ -s $load ];then
85+
load=0.00
86+
fi
8487
#本次测试结果写入数据库
85-
mysql -u$m_user -p$m_passwd -P$m_port -h$m_host <<EOF
88+
return=$(mysql -u$m_user -p$m_passwd -P$m_port -h$m_host <<EOF 2>&1
8689
INSERT INTO $m_db.$m_table (scenario,server_name,test_type,sb_threads,server_load,request_read,
8790
request_write,request_total,request_per_second,total_time,95_pct_time)
8891
VALUES ('$2','$4','$3','$sb_threds','$load',$result);
8992
EOF
93+
)
9094

9195
if [ $? -ne 0 ];then
9296
echo -e "\n----------$sb_threds线程测试,第$i次插入数据库时失败----------"
93-
echo "INSERT VALUES ('$2','$4','$3',$sb_threds,$load,$result)"
97+
#错误输出中排除mysql安全提示
98+
echo $return|sed 's/[Ww]arning:.*password on the command.*insecure\.//'
99+
#echo "INSERT VALUES ('$2','$4','$3',$sb_threds,$load,$result)"
94100
exit -2
95101
fi
96102
sleep 60 #让库歇一会,也让一分钟负载能够恢复到测试前的值
@@ -101,7 +107,8 @@ EOF
101107

102108
#结果分析函数
103109
sb_analyse() {
104-
mysql -u$m_user -p$m_passwd -h$m_host -P$m_port <<EOF 2>&1|grep -v 'password on the command line'
110+
#2>&1|grep部分为避免安全提示,使用该技巧就无法获取SQL执行的返回码了
111+
mysql -u$m_user -p$m_passwd -h$m_host -P$m_port <<EOF 2>&1|grep -v 'password on the command line'
105112
SELECT
106113
scenario,
107114
server_name,

0 commit comments

Comments
 (0)