Quantcast
Channel: ustechnica » Script
Viewing all articles
Browse latest Browse all 6

Bash script to find Unix Server (Upload/Download) speed

$
0
0

Logic: Speed=Size/time (MB/s)

Step 1: Create a blank file of some size, say 10MB.

Step 2: Transfer this file to the server for which we want to find out speed

Step 3: Binary operation to get speed i.e divide size by time.

Step4: Repeat  steps 2 and 3, 10 times and then take average of 3 best iterations:

Script:

#!/bin/bash

file_size=10

SERVER= ### Put server name here

### Create file of “$file_size”MB

if [ ! -f /opt/speedtestfile_"$file_size"MB ]

then

dd if=/dev/zero of=/opt/speedtestfile_”$file_size”MB bs=1024k count=”$file_size”

fi

##### Test upload speed 10 times #####

for (( i=0; i<10; i++))

do

/usr/bin/time -f %e -o /opt/real.log scp /opt/speedtestfile_”$file_size”MB $SERVER:/opt/speedtestfile_”$file_size”MB

real=$(cat /opt/real.log)

upspeed=$(echo “scale=3;”$file_size”/$real” | bc)

echo $upspeed >> /opt/upload.log

done

###### To sort best 3 iterations #######

cat /opt/upload.log | sort -r | head -n 3 > /opt/upload_new.log

#### calculate average Upload speed ####

upsum=0

un=0

for u in `cat /opt/upload_new.log`

do

upsum=`echo $upsum + $u|bc`

if [ "$?" -eq "0" ]; then

un=`expr $un + 1`

fi

done

upload_average=$(echo “scale=3;$upsum/$un” | bc)

###### find download speed 10 times #####

echo “Download speed test for Server_name”

for (( i=0; i<10; i++))

do

/usr/bin/time -f %e -o /opt/dreal.log scp $SERVER:/opt/speedtestfile_”$file_size”MB /opt/speedtestfile_”$file_size”MB

dreal=$(cat /opt/dreal.log)

downspeed=$(echo “scale=3;”$file_size”/$dreal” | bc)

echo $downspeed >> /opt/download.log

done

### To sort best 3 iterations #####

cat /opt/download.log |  sort -r | head -n 3 > /opt/download_new.log

#### To calculate average of 3 iterations ####

downsum=0

dn=0

for d in `cat /opt/download_new.log`

do

downsum=`echo $downsum + $d|bc`

if [ "$?" -eq "0" ]; then

dn=`expr $dn + 1`

fi

done

download_average=$(echo “scale=3;$downsum/$dn” | bc)

echo -e “\nServer upload speed: $upload_average”

echo -e “\nServer Download Speed: $download_average”



Viewing all articles
Browse latest Browse all 6

Trending Articles