mirror of
https://github.com/MHA-Team/PTS-Team.git
synced 2026-02-15 10:42:35 +00:00
551 lines
18 KiB
Bash
551 lines
18 KiB
Bash
#!/bin/bash
|
|
# serverreview-benchmark by @sayem314
|
|
# Github: https://github.com/sayem314/serverreview-benchmark
|
|
|
|
# shellcheck disable=SC1117,SC2086,SC2003,SC1001,SC2116,SC2046,2128,2124
|
|
|
|
about () {
|
|
echo ""
|
|
echo " ========================================================= "
|
|
echo " \ Serverreview Benchmark Script / "
|
|
echo " \ Basic system info, I/O test and speedtest / "
|
|
echo " \ V 3.0.3 (13 Sep 2019) / "
|
|
echo " \ Created by Sayem Chowdhury / "
|
|
echo " ========================================================= "
|
|
echo ""
|
|
echo " This script is based on bench.sh by camarg from akamaras.com"
|
|
echo " Later it was modified by dmmcintyre3 on FreeVPS.us"
|
|
echo " Thanks to Hidden_Refuge for the update of this script"
|
|
echo ""
|
|
}
|
|
|
|
prms () {
|
|
echo " Arguments:"
|
|
echo " $(tput setaf 3)-info$(tput sgr0) - Check basic system information"
|
|
echo " $(tput setaf 3)-io$(tput sgr0) - Run I/O test with or w/ cache"
|
|
echo " $(tput setaf 3)-cdn$(tput sgr0) - Check download speed from CDN"
|
|
echo " $(tput setaf 3)-northamercia$(tput sgr0) - Download speed from North America"
|
|
echo " $(tput setaf 3)-europe$(tput sgr0) - Download speed from Europe"
|
|
echo " $(tput setaf 3)-asia$(tput sgr0) - Download speed from asia"
|
|
echo " $(tput setaf 3)-a$(tput sgr0) - Test and check all above things at once"
|
|
echo " $(tput setaf 3)-b$(tput sgr0) - System info, CDN speedtest and I/O test"
|
|
echo " $(tput setaf 3)-ispeed$(tput sgr0) - Install speedtest-cli (python 2.4-3.4 required)"
|
|
echo " $(tput setaf 3)-speed$(tput sgr0) - Check internet speed using speedtest-cli"
|
|
echo " $(tput setaf 3)-about$(tput sgr0) - Check about this script"
|
|
echo ""
|
|
echo " Parameters"
|
|
echo " $(tput setaf 3)share$(tput sgr0) - upload results (default to ubuntu paste)"
|
|
echo " Available option for share:"
|
|
echo " ubuntu # upload results to ubuntu paste (default)"
|
|
echo " haste # upload results to hastebin"
|
|
echo " clbin # upload results to clbin"
|
|
echo " ptpb # upload results to ptpb"
|
|
}
|
|
|
|
howto () {
|
|
echo ""
|
|
echo " Wrong parameters. Use $(tput setaf 3)bash $BASH_SOURCE -help$(tput sgr0) to see parameters"
|
|
echo " ex: $(tput setaf 3)bash $BASH_SOURCE -info$(tput sgr0) (without quotes) for system information"
|
|
echo ""
|
|
}
|
|
|
|
benchinit() {
|
|
if ! hash curl 2>$NULL; then
|
|
echo "missing dependency curl"
|
|
echo "please install curl first"
|
|
exit
|
|
fi
|
|
}
|
|
|
|
CMD="$1"
|
|
PRM1="$2"
|
|
PRM2="$3"
|
|
log="$HOME/bench.log"
|
|
ARG="$BASH_SOURCE $@"
|
|
benchram="/mnt/tmpbenchram"
|
|
NULL="/dev/null"
|
|
true > $log
|
|
|
|
cancel () {
|
|
echo ""
|
|
rm -f test
|
|
echo " Abort"
|
|
if [[ -d $benchram ]]; then
|
|
rm $benchram/zero
|
|
umount $benchram
|
|
rm -rf $benchram
|
|
fi
|
|
exit
|
|
}
|
|
|
|
trap cancel SIGINT
|
|
|
|
systeminfo () {
|
|
# Systeminfo
|
|
echo "" | tee -a $log
|
|
echo " $(tput setaf 6)## System Information$(tput sgr0)"
|
|
echo " ## System Information" >> $log
|
|
echo "" | tee -a $log
|
|
|
|
# OS Information (Name)
|
|
cpubits=$( uname -m )
|
|
if echo $cpubits | grep -q 64; then
|
|
bits=" (64 bit)"
|
|
elif echo $cpubits | grep -q 86; then
|
|
bits=" (32 bit)"
|
|
elif echo $cpubits | grep -q armv5; then
|
|
bits=" (armv5)"
|
|
elif echo $cpubits | grep -q armv6l; then
|
|
bits=" (armv6l)"
|
|
elif echo $cpubits | grep -q armv7l; then
|
|
bits=" (armv7l)"
|
|
else
|
|
bits="unknown"
|
|
fi
|
|
|
|
if hash lsb_release 2>$NULL; then
|
|
soalt=$(lsb_release -d)
|
|
echo -e " OS Name : "${soalt:13} $bits | tee -a $log
|
|
else
|
|
so=$(awk 'NF' /etc/issue)
|
|
pos=$(expr index "$so" 123456789)
|
|
so=${so/\/}
|
|
extra=""
|
|
if [[ "$so" == Debian*9* ]]; then
|
|
extra="(stretch)"
|
|
elif [[ "$so" == Debian*8* ]]; then
|
|
extra="(jessie)"
|
|
elif [[ "$so" == Debian*7* ]]; then
|
|
extra="(wheezy)"
|
|
elif [[ "$so" == Debian*6* ]]; then
|
|
extra="(squeeze)"
|
|
fi
|
|
if [[ "$so" == *Proxmox* ]]; then
|
|
so="Debian 7.6 (wheezy)";
|
|
fi
|
|
otro=$(expr index "$so" \S)
|
|
if [[ "$otro" == 2 ]]; then
|
|
so=$(cat /etc/*-release)
|
|
pos=$(expr index "$so" NAME)
|
|
pos=$((pos-2))
|
|
so=${so/\/}
|
|
fi
|
|
echo -e " OS Name : "${so:0:($pos+2)}$extra$bits | tr -d '\n' | tee -a $log
|
|
echo "" | tee -a $log
|
|
fi
|
|
sleep 0.1
|
|
|
|
#Detect virtualization
|
|
if hash ifconfig 2>$NULL; then
|
|
eth=$(ifconfig)
|
|
fi
|
|
virtualx=$(dmesg)
|
|
if [[ -f /proc/user_beancounters ]]; then
|
|
virtual="OpenVZ"
|
|
elif [[ "$virtualx" == *kvm-clock* ]]; then
|
|
virtual="KVM"
|
|
elif [[ "$virtualx" == *"VMware Virtual Platform"* ]]; then
|
|
virtual="VMware"
|
|
elif [[ "$virtualx" == *"Parallels Software International"* ]]; then
|
|
virtual="Parallels"
|
|
elif [[ "$virtualx" == *VirtualBox* ]]; then
|
|
virtual="VirtualBox"
|
|
elif [[ "$eth" == *eth0* ]];then
|
|
virtual="Dedicated"
|
|
elif [[ -e /proc/xen ]]; then
|
|
virtual="Xen"
|
|
fi
|
|
|
|
#Kernel
|
|
echo " Kernel : $virtual / $(uname -r)" | tee -a $log
|
|
sleep 0.1
|
|
|
|
# Hostname
|
|
echo " Hostname : $(hostname)" | tee -a $log
|
|
sleep 0.1
|
|
|
|
# CPU Model Name
|
|
cpumodel=$( awk -F: '/model name/ {name=$2} END {print name}' /proc/cpuinfo )
|
|
echo " CPU Model :$cpumodel" | tee -a $log
|
|
sleep 0.1
|
|
|
|
# CPU Cores
|
|
cores=$( awk -F: '/model name/ {core++} END {print core}' /proc/cpuinfo )
|
|
corescache=$( awk -F: '/cache size/ {cache=$2} END {print cache}' /proc/cpuinfo )
|
|
freq=$( awk -F: ' /cpu MHz/ {freq=$2} END {print freq}' /proc/cpuinfo )
|
|
if [[ $cores == "1" ]]; then
|
|
echo " CPU Cores : $cores core @ $freq MHz" | tee -a $log
|
|
else
|
|
echo " CPU Cores : $cores cores @ $freq MHz" | tee -a $log
|
|
fi
|
|
sleep 0.1
|
|
echo " CPU Cache :$corescache" | tee -a $log
|
|
sleep 0.1
|
|
|
|
# RAM Information
|
|
tram="$( free -m | grep Mem | awk 'NR=1 {print $2}' ) MiB"
|
|
fram="$( free -m | grep Mem | awk 'NR=1 {print $7}' ) MiB"
|
|
fswap=$( free -m | grep Swap | awk 'NR=1 {print $4}' )MiB
|
|
echo " Total RAM : $tram (Free $fram)" | tee -a $log
|
|
sleep 0.1
|
|
|
|
# Swap Information
|
|
tswap="$( free -m | grep Swap | awk 'NR=1 {print $2}' ) MiB"
|
|
tswap0=$( grep SwapTotal < /proc/meminfo | awk 'NR=1 {print $2$3}' )
|
|
if [[ "$tswap0" == "0kB" ]]; then
|
|
echo " Total SWAP : SWAP not enabled" | tee -a $log
|
|
else
|
|
echo " Total SWAP : $tswap (Free $fswap)" | tee -a $log
|
|
fi
|
|
sleep 0.1
|
|
|
|
# HDD information
|
|
hdd=$( df -h --total --local -x tmpfs | grep 'total' | awk '{print $2}' )B
|
|
hddfree=$( df -h --total | grep 'total' | awk '{print $5}' )
|
|
echo " Total Space : $hdd ($hddfree used)" | tee -a $log
|
|
sleep 0.1
|
|
|
|
# Uptime
|
|
secs=$( awk '{print $1}' /proc/uptime | cut -f1 -d"." )
|
|
if [[ $secs -lt 120 ]]; then
|
|
sysuptime="$secs seconds"
|
|
elif [[ $secs -lt 3600 ]]; then
|
|
sysuptime=$( printf '%d minutes %d seconds\n' $((secs%3600/60)) $((secs%60)) )
|
|
elif [[ $secs -lt 86400 ]]; then
|
|
sysuptime=$( printf '%dhrs %dmin %dsec\n' $((secs/3600)) $((secs%3600/60)) $((secs%60)) )
|
|
else
|
|
sysuptime=$( echo $((secs/86400))"days - "$(date -d "1970-01-01 + $secs seconds" "+%Hhrs %Mmin %Ssec") )
|
|
fi
|
|
echo " Running for : $sysuptime" | tee -a $log
|
|
echo "" | tee -a $log
|
|
}
|
|
|
|
echostyle(){
|
|
if hash tput 2>$NULL; then
|
|
echo " $(tput setaf 6)$1$(tput sgr0)"
|
|
echo " $1" >> $log
|
|
else
|
|
echo " $1" | tee -a $log
|
|
fi
|
|
}
|
|
|
|
FormatBytes() {
|
|
bytes=${1%.*}
|
|
local Mbps=$( printf "%s" "$bytes" | awk '{ printf "%.2f", $0 / 1024 / 1024 * 8 } END { if (NR == 0) { print "error" } }' )
|
|
if [[ $bytes -lt 1000 ]]; then
|
|
printf "%8i B/s | N/A " $bytes
|
|
elif [[ $bytes -lt 1000000 ]]; then
|
|
local KiBs=$( printf "%s" "$bytes" | awk '{ printf "%.2f", $0 / 1024 } END { if (NR == 0) { print "error" } }' )
|
|
printf "%7s KiB/s | %7s Mbps" "$KiBs" "$Mbps"
|
|
else
|
|
# awk way for accuracy
|
|
local MiBs=$( printf "%s" "$bytes" | awk '{ printf "%.2f", $0 / 1024 / 1024 } END { if (NR == 0) { print "error" } }' )
|
|
printf "%7s MiB/s | %7s Mbps" "$MiBs" "$Mbps"
|
|
|
|
# bash way
|
|
# printf "%4s MiB/s | %4s Mbps""$(( bytes / 1024 / 1024 ))" "$(( bytes / 1024 / 1024 * 8 ))"
|
|
fi
|
|
}
|
|
|
|
pingtest() {
|
|
# ping one time
|
|
local ping_link=$( echo ${1#*//} | cut -d"/" -f1 )
|
|
local ping_ms=$( ping -w1 -c1 $ping_link | grep 'rtt' | cut -d"/" -f5 )
|
|
|
|
# get download speed and print
|
|
if [[ $ping_ms == "" ]]; then
|
|
printf " | ping error!"
|
|
else
|
|
printf " | ping %3i.%sms" "${ping_ms%.*}" "${ping_ms#*.}"
|
|
fi
|
|
}
|
|
|
|
# main function for speed checking
|
|
# the report speed are average per file
|
|
speed() {
|
|
# print name
|
|
printf "%s" " $1" | tee -a $log
|
|
|
|
# get download speed and print
|
|
C_DL=$( curl -m 4 -w '%{speed_download}\n' -o $NULL -s "$2" )
|
|
printf "%s\n" "$(FormatBytes $C_DL) $(pingtest $2)" | tee -a $log
|
|
}
|
|
|
|
# 2 location (200MB)
|
|
cdnspeedtest () {
|
|
echo "" | tee -a $log
|
|
echostyle "## CDN Speedtest"
|
|
echo "" | tee -a $log
|
|
speed "CacheFly :" "http://cachefly.cachefly.net/100mb.test"
|
|
|
|
# google drive speed test
|
|
TMP_COOKIES="/tmp/cookies.txt"
|
|
TMP_FILE="/tmp/gdrive"
|
|
DRIVE="drive.google.com"
|
|
FILE_ID="0B1MVW1mFO2zmdGhyaUJESWROQkE"
|
|
|
|
printf " Gdrive :" | tee -a $log
|
|
curl -c $TMP_COOKIES -o $TMP_FILE -s "https://$DRIVE/uc?id=$FILE_ID&export=download"
|
|
D_ID=$( grep "confirm=" < $TMP_FILE | awk -F "confirm=" '{ print $NF }' | awk -F "&" '{ print $1 }' )
|
|
C_DL=$( curl -m 4 -Lb $TMP_COOKIES -w '%{speed_download}\n' -o $NULL \
|
|
-s "https://$DRIVE/uc?export=download&confirm=$D_ID&id=$FILE_ID" )
|
|
printf "%s\n" "$(FormatBytes $C_DL) $(pingtest $DRIVE)" | tee -a $log
|
|
echo "" | tee -a $log
|
|
}
|
|
|
|
# 10 location (1GB)
|
|
northamerciaspeedtest () {
|
|
echo "" | tee -a $log
|
|
echostyle "## North America Speedtest"
|
|
echo "" | tee -a $log
|
|
speed "Softlayer, Washington, USA :" "http://speedtest.wdc04.softlayer.com/downloads/test100.zip"
|
|
speed "SoftLayer, San Jose, USA :" "http://speedtest.sjc01.softlayer.com/downloads/test100.zip"
|
|
speed "SoftLayer, Dallas, USA :" "http://speedtest.dal01.softlayer.com/downloads/test100.zip"
|
|
speed "Vultr, New Jersey, USA :" "http://nj-us-ping.vultr.com/vultr.com.100MB.bin"
|
|
speed "Vultr, Seattle, USA :" "http://wa-us-ping.vultr.com/vultr.com.100MB.bin"
|
|
speed "Vultr, Dallas, USA :" "http://tx-us-ping.vultr.com/vultr.com.100MB.bin"
|
|
speed "Vultr, Los Angeles, USA :" "https://lax-ca-us-ping.vultr.com/vultr.com.100MB.bin"
|
|
speed "Ramnode, New York, USA :" "http://lg.nyc.ramnode.com/static/100MB.test"
|
|
speed "Ramnode, Atlanta, USA :" "http://lg.atl.ramnode.com/static/100MB.test"
|
|
speed "OVH, Beauharnois, Canada :" "http://bhs.proof.ovh.net/files/100Mio.dat"
|
|
echo ""
|
|
}
|
|
|
|
# 9 location (900MB)
|
|
europespeedtest () {
|
|
echo "" | tee -a $log
|
|
echostyle "## Europe Speedtest"
|
|
echo "" | tee -a $log
|
|
speed "Vultr, London, UK :" "http://lon-gb-ping.vultr.com/vultr.com.100MB.bin"
|
|
speed "LeaseWeb, Frankfurt, Germany :" "http://mirror.de.leaseweb.net/speedtest/100mb.bin"
|
|
speed "Hetzner, Germany :" "https://speed.hetzner.de/100MB.bin"
|
|
speed "Ramnode, Alblasserdam, NL :" "http://lg.nl.ramnode.com/static/100MB.test"
|
|
speed "Vultr, Amsterdam, NL :" "http://ams-nl-ping.vultr.com/vultr.com.100MB.bin"
|
|
speed "EDIS, Stockholm, Sweden :" "http://se.edis.at/100MB.test"
|
|
speed "OVH, Roubaix, France :" "http://rbx.proof.ovh.net/files/100Mio.dat"
|
|
speed "Online, France :" "http://ping.online.net/100Mo.dat"
|
|
speed "Prometeus, Milan, Italy :" "http://mirrors.prometeus.net/test/test100.bin"
|
|
echo "" | tee -a $log
|
|
}
|
|
|
|
# 4 location (200MB)
|
|
exoticpeedtest () {
|
|
echo "" | tee -a $log
|
|
echostyle "## Exotic Speedtest"
|
|
echo "" | tee -a $log
|
|
speed "Sydney, Australia :" "https://syd-au-ping.vultr.com/vultr.com.100MB.bin"
|
|
speed "Lagoon, New Caledonia :" "http://mirror.lagoon.nc/speedtestfiles/test50M.bin"
|
|
speed "Hosteasy, Moldova :" "http://mirror.as43289.net/speedtest/100mb.bin"
|
|
speed "Prima, Argentina :" "http://sftp.fibertel.com.ar/services/file-50MB.img"
|
|
echo "" | tee -a $log
|
|
}
|
|
|
|
# 4 location (400MB)
|
|
asiaspeedtest () {
|
|
echo "" | tee -a $log
|
|
echostyle "## Asia Speedtest"
|
|
echo "" | tee -a $log
|
|
speed "SoftLayer, Singapore :" "http://speedtest.sng01.softlayer.com/downloads/test100.zip"
|
|
speed "Linode, Tokyo, Japan :" "http://speedtest.tokyo2.linode.com/100MB-tokyo2.bin"
|
|
speed "Linode, Singapore :" "http://speedtest.singapore.linode.com/100MB-singapore.bin"
|
|
speed "Vultr, Tokyo, Japan :" "http://hnd-jp-ping.vultr.com/vultr.com.100MB.bin"
|
|
echo "" | tee -a $log
|
|
}
|
|
|
|
freedisk() {
|
|
# check free space
|
|
freespace=$( df -m . | awk 'NR==2 {print $4}' )
|
|
if [[ $freespace -ge 1024 ]]; then
|
|
printf "%s" $((1024*2))
|
|
elif [[ $freespace -ge 512 ]]; then
|
|
printf "%s" $((512*2))
|
|
elif [[ $freespace -ge 256 ]]; then
|
|
printf "%s" $((256*2))
|
|
elif [[ $freespace -ge 128 ]]; then
|
|
printf "%s" $((128*2))
|
|
else
|
|
printf 1
|
|
fi
|
|
}
|
|
|
|
averageio() {
|
|
ioraw1=$( echo $1 | awk 'NR==1 {print $1}' )
|
|
[ "$(echo $1 | awk 'NR==1 {print $2}')" == "GB/s" ] && ioraw1=$( awk 'BEGIN{print '$ioraw1' * 1024}' )
|
|
ioraw2=$( echo $2 | awk 'NR==1 {print $1}' )
|
|
[ "$(echo $2 | awk 'NR==1 {print $2}')" == "GB/s" ] && ioraw2=$( awk 'BEGIN{print '$ioraw2' * 1024}' )
|
|
ioraw3=$( echo $3 | awk 'NR==1 {print $1}' )
|
|
[ "$(echo $3 | awk 'NR==1 {print $2}')" == "GB/s" ] && ioraw3=$( awk 'BEGIN{print '$ioraw3' * 1024}' )
|
|
ioall=$( awk 'BEGIN{print '$ioraw1' + '$ioraw2' + '$ioraw3'}' )
|
|
ioavg=$( awk 'BEGIN{printf "%.1f", '$ioall' / 3}' )
|
|
printf "%s" "$ioavg"
|
|
}
|
|
|
|
cpubench() {
|
|
if hash $1 2>$NULL; then
|
|
io=$( ( dd if=/dev/zero bs=512K count=$2 | $1 ) 2>&1 | grep 'copied' | awk -F, '{io=$NF} END { print io}' )
|
|
if [[ $io != *"."* ]]; then
|
|
printf " %4i %s" "${io% *}" "${io##* }"
|
|
else
|
|
printf "%4i.%s" "${io%.*}" "${io#*.}"
|
|
fi
|
|
else
|
|
printf " %s not found on system." "$1"
|
|
fi
|
|
}
|
|
|
|
iotest () {
|
|
echo "" | tee -a $log
|
|
echostyle "## IO Test"
|
|
echo "" | tee -a $log
|
|
|
|
# start testing
|
|
writemb=$(freedisk)
|
|
if [[ $writemb -gt 512 ]]; then
|
|
writemb_size="$(( writemb / 2 / 2 ))MB"
|
|
writemb_cpu="$(( writemb / 2 ))"
|
|
else
|
|
writemb_size="$writemb"MB
|
|
writemb_cpu=$writemb
|
|
fi
|
|
|
|
# CPU Speed test
|
|
printf " CPU Speed:\n" | tee -a $log
|
|
printf " bzip2 %s -" "$writemb_size" | tee -a $log
|
|
printf "%s\n" "$( cpubench bzip2 $writemb_cpu )" | tee -a $log
|
|
printf " sha256 %s -" "$writemb_size" | tee -a $log
|
|
printf "%s\n" "$( cpubench sha256sum $writemb_cpu )" | tee -a $log
|
|
printf " md5sum %s -" "$writemb_size" | tee -a $log
|
|
printf "%s\n\n" "$( cpubench md5sum $writemb_cpu )" | tee -a $log
|
|
|
|
# Disk test
|
|
echo " Disk Speed ($writemb_size):" | tee -a $log
|
|
if [[ $writemb != "1" ]]; then
|
|
io=$( ( dd bs=512K count=$writemb if=/dev/zero of=test; rm -f test ) 2>&1 | awk -F, '{io=$NF} END { print io}' )
|
|
echo " I/O Speed -$io" | tee -a $log
|
|
|
|
io=$( ( dd bs=512K count=$writemb if=/dev/zero of=test oflag=dsync; rm -f test ) 2>&1 | awk -F, '{io=$NF} END { print io}' )
|
|
echo " I/O Direct -$io" | tee -a $log
|
|
else
|
|
echo " Not enough space to test." | tee -a $log
|
|
fi
|
|
echo "" | tee -a $log
|
|
|
|
# RAM Speed test
|
|
# set ram allocation for mount
|
|
tram_mb="$( free -m | grep Mem | awk 'NR=1 {print $2}' )"
|
|
if [[ tram_mb -gt 1900 ]]; then
|
|
sbram=1024M
|
|
sbcount=2048
|
|
else
|
|
sbram=$(( tram_mb / 2 ))M
|
|
sbcount=$tram_mb
|
|
fi
|
|
[[ -d $benchram ]] || mkdir $benchram
|
|
mount -t tmpfs -o size=$sbram tmpfs $benchram/
|
|
printf " RAM Speed (%sB):\n" "$sbram" | tee -a $log
|
|
iow1=$( ( dd if=/dev/zero of=$benchram/zero bs=512K count=$sbcount ) 2>&1 | awk -F, '{io=$NF} END { print io}' )
|
|
ior1=$( ( dd if=$benchram/zero of=$NULL bs=512K count=$sbcount; rm -f test ) 2>&1 | awk -F, '{io=$NF} END { print io}' )
|
|
iow2=$( ( dd if=/dev/zero of=$benchram/zero bs=512K count=$sbcount ) 2>&1 | awk -F, '{io=$NF} END { print io}' )
|
|
ior2=$( ( dd if=$benchram/zero of=$NULL bs=512K count=$sbcount; rm -f test ) 2>&1 | awk -F, '{io=$NF} END { print io}' )
|
|
iow3=$( ( dd if=/dev/zero of=$benchram/zero bs=512K count=$sbcount ) 2>&1 | awk -F, '{io=$NF} END { print io}' )
|
|
ior3=$( ( dd if=$benchram/zero of=$NULL bs=512K count=$sbcount; rm -f test ) 2>&1 | awk -F, '{io=$NF} END { print io}' )
|
|
echo " Avg. write - $(averageio "$iow1" "$iow2" "$iow3") MB/s" | tee -a $log
|
|
echo " Avg. read - $(averageio "$ior1" "$ior2" "$ior3") MB/s" | tee -a $log
|
|
rm $benchram/zero
|
|
umount $benchram
|
|
rm -rf $benchram
|
|
echo "" | tee -a $log
|
|
}
|
|
|
|
speedtestresults () {
|
|
#Testing Speedtest
|
|
if hash python 2>$NULL; then
|
|
curl -Lso speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
|
|
python speedtest-cli --share | tee -a $log
|
|
rm -f speedtest-cli
|
|
echo ""
|
|
else
|
|
echo " Python is not installed."
|
|
echo " First install python, then re-run the script."
|
|
echo ""
|
|
fi
|
|
}
|
|
|
|
startedon() {
|
|
echo "\$ $ARG" >> $log
|
|
echo "" | tee -a $log
|
|
benchstart=$(date +"%d-%b-%Y %H:%M:%S")
|
|
start_seconds=$(date +%s)
|
|
echo " Benchmark started on $benchstart" | tee -a $log
|
|
}
|
|
|
|
finishedon() {
|
|
end_seconds=$(date +%s)
|
|
echo " Benchmark finished in $((end_seconds-start_seconds)) seconds" | tee -a $log
|
|
echo " results saved on $log"
|
|
echo "" | tee -a $log
|
|
}
|
|
|
|
sharetest() {
|
|
case $1 in
|
|
'ubuntu')
|
|
share_link=$( curl -v --data-urlencode "content@$log" -d "poster=bench.log" -d "syntax=text" "https://paste.ubuntu.com" 2>&1 | \
|
|
grep "Location" | awk '{print $3}' );;
|
|
'haste' )
|
|
share_link=$( curl -X POST -s -d "$(cat $log)" https://hastebin.com/documents | awk -F '"' '{print "https://hastebin.com/"$4}' );;
|
|
'clbin' )
|
|
share_link=$( curl -sF 'clbin=<-' https://clbin.com < $log );;
|
|
'ptpb' )
|
|
share_link=$( curl -sF c=@- https://ptpb.pw/?u=1 < $log );;
|
|
esac
|
|
|
|
# print result info
|
|
echo " Share result:"
|
|
echo " $share_link"
|
|
echo ""
|
|
|
|
}
|
|
|
|
case $CMD in
|
|
'-info'|'-information'|'--info'|'--information' )
|
|
systeminfo;;
|
|
'-io'|'-drivespeed'|'--io'|'--drivespeed' )
|
|
iotest;;
|
|
'-northamercia'|'-na'|'--northamercia'|'--na' )
|
|
benchinit; northamerciaspeedtest;;
|
|
'-europe'|'-eu'|'--europe'|'--eu' )
|
|
benchinit; europespeedtest;;
|
|
'-exotic'|'--exotic' )
|
|
benchinit; exoticpeedtest;;
|
|
'-asia'|'--asia' )
|
|
benchinit; asiaspeedtest;;
|
|
'-cdn'|'--cdn' )
|
|
benchinit; cdnspeedtest;;
|
|
'-b'|'--b' )
|
|
benchinit; startedon; systeminfo; cdnspeedtest; iotest; finishedon;;
|
|
'-a'|'-all'|'-bench'|'--a'|'--all'|'--bench' )
|
|
benchinit; startedon; systeminfo; cdnspeedtest; northamerciaspeedtest;
|
|
europespeedtest; exoticpeedtest; asiaspeedtest; iotest; finishedon;;
|
|
'-speed'|'-speedtest'|'-speedcheck'|'--speed'|'--speedtest'|'--speedcheck' )
|
|
benchinit; speedtestresults;;
|
|
'-help'|'--help'|'help' )
|
|
prms;;
|
|
'-about'|'--about'|'about' )
|
|
about;;
|
|
*)
|
|
howto;;
|
|
esac
|
|
|
|
case $PRM1 in
|
|
'-share'|'--share'|'share' )
|
|
if [[ $PRM2 == "" ]]; then
|
|
sharetest ubuntu
|
|
else
|
|
sharetest $PRM2
|
|
fi
|
|
;;
|
|
esac
|
|
|
|
# ring a bell
|
|
printf '\007'
|