Last active
March 28, 2023 04:10
-
-
Save patmandenver/fe5648c6faad8f49ef8dd705a509bb7f to your computer and use it in GitHub Desktop.
scp speed test between servers
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# scp-speed-test.sh | |
# | |
# Usage: | |
# ./scp-speed-test.sh user@hostname [test file size in MBs] | |
# | |
############################################################# | |
ssh_server=$1 | |
test_file=".scp-test-file" | |
# Optional: user specified test file size in MBs | |
if test -z "$2" | |
then | |
# default size is 10MB | |
test_size="10" | |
else | |
test_size=$2 | |
fi | |
# generate a file of all zeros | |
echo "Generating $test_size MB test file..." | |
dd if=/dev/zero of=$test_file bs=$(echo "$test_size*1024*1024" | bc) \ | |
count=1 &> /dev/null | |
# upload test | |
echo "Testing upload to $ssh_server..." | |
up_speed=$(scp -v $test_file $ssh_server:$test_file 2>&1 | \ | |
grep "Bytes per second" | \ | |
sed "s/^[^0-9]*\([0-9.]*\)[^0-9]*\([0-9.]*\).*$/\1/g") | |
up_speed=$(echo "($up_speed/1000000)" | bc) | |
# download test | |
echo "Testing download from $ssh_server..." | |
down_speed=$(scp -v $ssh_server:$test_file $test_file 2>&1 | \ | |
grep "Bytes per second" | \ | |
sed "s/^[^0-9]*\([0-9.]*\)[^0-9]*\([0-9.]*\).*$/\2/g") | |
down_speed=$(echo "($down_speed/1000000)" | bc) | |
# clean up | |
echo "Removing test file on $ssh_server..." | |
ssh $ssh_server "rm $test_file" | |
echo "Removing test file locally..." | |
rm $test_file | |
# print result | |
echo "" | |
echo "Upload speed: $up_speed MBps" | |
echo "Download speed: $down_speed MBps" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I added some features such as argument parsing, checking if the server is reachable, the option to skip the download speed test, and a destination folder. Here it is,