1 #!/bin/sh
2 #Shell menu.sh
3 #Author lipc
4 #Date 20200818
5 #Ps linux系统压测,有些工具需要下载,脚本不完善,需要调试
6
7 # Check if user is root
8 [ $(id -u) != "0" ] && {
9 echo "${CFAILURE}Error: You must be root to run this script${CEND}"
10 exit 1
11 }
12 pwd=/tmp
13
14 #初始化、安装跑分
15 function Test_environment_initialization() {
16 dir=$(pwd)
17 cd $pwd
18 yum -y install gcc automake autoconf libtool make perl-Time-HiRes perl wget vim screen
19
20 cd $pwd
21 if [ -s UnixBench-5.1.4.tar.gz ]; then
22 echo "UnixBench-5.1.4.tar.gz [found]"
23 else
24 echo "UnixBench-5.1.4.tar.gz not found!!!download now..."
25 if ! wget -c https://github.com/qcsuper/byte-unixbench/releases/download/v5.1.4/UnixBench-5.1.4.tar.gz; then
26 echo "Failed to download UnixBench-5.1.4.tar.gz, please download it to ${cur_dir} directory manually and try again."
27 exit 1
28 fi
29 fi
30 tar -zxvf UnixBench-5.1.4.tar.gz && rm -f UnixBench-5.1.4.tar.gz
31 cd UnixBench/
32 make
33
34 cd $pwd
35 if [ -s 1.0.17]; then
36 echo "sysbench-1.0.17.tar.gz [fonud]"
37 else
38 echo "sysbench-1.0.17.tar.gz not found!!!download now..."
39 if ! wget -c https://codeload.github.com/akopytov/sysbench/tar.gz/1.0.17; then
40 echo "Failed to download sysbench-1.0.17.tar.gz, please download it to ${cur_dir} directory manually and try again."
41 exit 1
42 fi
43 fi
44 tar -zxvf 1.0.17 -C /usr/local/ && rm -f 1.0.17
45 cd /usr/local/sysbench-1.0.17
46 ./autogen.sh
47 ./configure --without-mysql
48 make -j
49 make install
50
51 #安装获取服务器软件、硬件信息的脚本。
52 if [ ! -e '/tmp/systeminfo.sh' ]; then
53 echo "Installing systeminfo.sh......"
54 dir=$(pwd)
55 cd $pwd
56 wget -N --no-check-certificate https://raw.githubusercontent.com/learning2016/Server-evaluation/master/systeminfo.sh >/dev/null 2>&1
57 cd $pwd
58 chmod a+rx /tmp/systeminfo.sh
59 fi
60 #安装网络延迟的脚本。
61 if [ ! -e '/tmp/AWS-ping.py' ]; then
62 echo "Installing AWS-ping.py......"
63 dir=$(pwd)
64 cd $pwd
65 wget -N --no-check-certificate https://raw.githubusercontent.com/learning2016/Server-evaluation/master/AWS-ping.py >/dev/null 2>&1
66 cd $pwd
67 chmod a+rx /tmp/AWS-ping.py
68 fi
69 }
70
71 function Get_hardware_and_software_information() {
72 /usr/bin/bash /tmp/systeminfo.sh
73 }
74
75 function Network_delay_test() {
76 python /tmp/AWS-ping.py
77 }
78
79 function The_CPU_test() {
80 #printf "正在测试,请耐心等待"
81 /usr/bin/sysbench cpu --cpu-max-prime=200000000 --threads=8 run >/tmp/cpu.log 2>&1
82 #clear
83 name13=CPU计算素数所需时间
84 name14=$(cat /tmp/cpu.log | grep "total time:")
85 str7=$name13$name14
86 echo $str7
87 }
88
89 function The_memory_test() {
90 #printf "正在测试,请耐心等待"
91 /usr/local/sysbench-1.0.17/src/sysbench --test=memory --memory-block-size=8K --memory-total-size=4G --num-threads=2 run >/tmp/memory.log 2>&1
92 name15=内存读写性能
93 name16=$(cat /tmp/memory.log | grep "transferred")
94 str8=$name15$name16
95 echo $str8
96 }
97
98 function Disk_test() {
99 #printf "正在测试,请耐心等待,大约30分钟"
100 #rndrw 混合随机读/写
101 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw prepare >/tmp/rndrw-prepare.log 2>&1
102 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw run >/tmp/rndrw-run.log 2>&1
103 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrw cleanup >/tmp/rndrw-cleanup.log 2>&1
104
105 #rndwr 随机写入
106 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr prepare >/tmp/rndwr-prepare.log 2>&1
107 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr run >/tmp/rndwr-run.log 2>&1
108 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndwr cleanup >/tmp/rndwr-cleanup.log 2>&1
109
110 #rndrd 随机读取
111 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd prepare >/tmp/rndrd-prepare.log 2>&1
112 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd run >/tmp/rndrd-run.log 2>&1
113 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=rndrd cleanup >/tmp/rndrd-cleanup.log 2>&1
114
115 #seqrd 顺序读取
116 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd prepare >/tmp/seqrd-prepare.log 2>&1
117 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd run >/tmp/seqrd-run.log 2>&1
118 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrd cleanup >/tmp/seqrd-cleanup.log 2>&1
119
120 #seqrewr 顺序读写
121 #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr prepare > /tmp/seqrewr-prepare.log 2>&1
122 #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr run > /tmp/seqrewr-run.log 2>&1
123 #/usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqrewr cleanup > /tmp/seqrewr-cleanup.log 2>&1
124
125 #seqwr 顺序写入
126 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr prepare >/tmp/seqwr-prepare.log 2>&1
127 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr run >/tmp/seqwr-run.log 2>&1
128 /usr/local/sysbench-1.0.17/src/sysbench --test=fileio --num-threads=16 --file-total-size=3G --file-test-mode=seqwr cleanup >/tmp/seqwr-cleanup.log 2>&1
129
130 #clear
131 name1=顺序写入速度
132 name2=$(cat /tmp/seqwr-run.log | grep "written, MiB/s:")
133 str1=$name1$name2
134 echo $str1
135
136 #name3=顺序读写速度
137 #name4=$(cat /tmp/seqrewr-run.log |grep "written, MiB/s:")
138 #str2=$name3$name4
139 #echo $str2
140
141 name5=顺序读取速度
142 name6=$(cat /tmp/seqrd-run.log | grep "read, MiB/s:")
143 str3=$name5$name6
144 echo $str3
145
146 name7=随机读取速度
147 name8=$(cat /tmp/rndrd-run.log | grep "read, MiB/s:")
148 str4=$name7$name8
149 echo $str4
150
151 name9=随机写入速度
152 name10=$(cat /tmp/rndwr-run.log | grep "written, MiB/s:")
153 str5=$name9$name10
154 echo $str5
155
156 name11=混合随机读/写
157 name12=$(cat /tmp/rndrw-run.log | grep "MiB/s")
158 str6=$name11$name12
159 echo $str6
160 }
161
162 function Grading_test() {
163 cd /tmp/UnixBench
164 ./Run >/tmp/unixbench.log 2>&1
165 name17=Unixbench评分
166 name18=$(cat /tmp/unixbench.log | grep "System Benchmarks Index Score")
167 str9=$name17$name18
168 echo $str9
169 }
170
171 function A_key_test() {
172 screen iotest
173 Test_environment_initialization
174 Get_hardware_and_software_information
175 printf '%80s\n' | tr ' ' -
176 Network_delay_test
177 printf '%80s\n' | tr ' ' -
178 The_CPU_test
179 printf '%80s\n' | tr ' ' -
180 The_memory_test
181 printf '%80s\n' | tr ' ' -
182 Disk_test
183 printf '%80s\n' | tr ' ' -
184 Grading_test
185 printf '%80s\n' | tr ' ' -
186 }
187
188 function menu() {
189 cat <<EOF
190 ----------------------------------------
191 |***************菜单主页***************|
192 ----------------------------------------
193 $(echo -e "\033[33m 1)测试环境初始化(必选)\033[0m")
194 $(echo -e "\033[33m 2)获取软硬件信息\033[0m")
195 $(echo -e "\033[33m 3)网络延迟测试\033[0m")
196 $(echo -e "\033[33m 4)CPU测试\033[0m")
197 $(echo -e "\033[33m 5)内存测试\033[0m")
198 $(echo -e "\033[33m 6)磁盘IO测试(预估至少30分钟)\033[0m")
199 $(echo -e "\033[33m 7)Unixbench评分测试(预估至少45分钟)\033[0m")
200 $(echo -e "\033[33m 8)一键测试(预估至少75分钟)\033[0m")
201 $(echo -e "\033[33m 9)退出\033[0m")
202 EOF
203 read -p "请输入对应产品的数字:" num1
204 case $num1 in
205 1)
206 #clear
207 Test_environment_initialization
208 menu
209 ;;
210 #获取服务器软件、硬件信息。
211 2)
212 #clear
213 Get_hardware_and_software_information
214 menu
215 ;;
216 #获取网络延迟。
217 3)
218 #clear
219 Network_delay_test
220 menu
221 ;;
222 #测试cpu。
223 4)
224 #clear
225 The_CPU_test
226 menu
227 ;;
228 #测试内存。
229 5)
230 #clear
231 The_memory_test
232 menu
233 ;;
234 #测试磁盘IO。
235 6)
236 #clear
237 Disk_test
238 menu
239 ;;
240 #服务器性能跑分。
241 7)
242 #clear
243 Grading_test
244 menu
245 ;;
246 #以上功能,一键完成。
247 8)
248 A_key_test
249 menu
250 ;;
251 9)
252 exit 0
253 ;;
254 esac
255 }
256 menu