#!/bin/bash # script to test bandwidth to ssh server # it copies a 10MB file to the server and # loads it back down again. # usage: bandwidth user@server # if no server is applied a default server is used # defaults sshserver=birdofprey sshuser=david sshpath="/tmp" localpath="/tmp" file=$RANDOM size=10 #MB silent=1 # config if [ $# -ne 0 ]; then sshuser=$(echo $1 | sed 's/@.*//') sshserver=$(echo $1 | sed 's/.*@//') if [ $# -gt 1 ]; then echo "too much arguments. exiting." exit 1 fi if [ $silent -ne 1 ]; then echo "using custom server. ($sshuser@$sshserver)" fi else if [ $silent -ne 1 ]; then echo "using default server. ($sshuser@$sshserver)" fi fi # preflight command -v scp &> /dev/null if [[ $? -ne 0 ]]; then echo "scp must be installed first. exiting." exit 1 fi command -v ssh &> /dev/null if [[ $? -ne 0 ]]; then echo "ssh must be installed first. exiting." exit 1 fi command -v python &> /dev/null if [[ $? -ne 0 ]]; then echo "python must be installed first. exiting." exit 1 fi # create file if [ $silent -ne 1 ]; then echo "creating $size MB file." fi dd if=/dev/zero of=$localpath/$file bs=$(($size*1024*1024)) count=1 &> /dev/null if [[ $? -ne 0 ]]; then echo "cannot create file. ($localpath/$file)" exit 1 fi # upload file if [ $silent -ne 1 ]; then echo "uploading file to $sshserver" fi scp -v $localpath/$file $sshuser@$sshserver:$sshpath/$file &> $localpath/bandwidth_scplogup if [ $? -ne 0 ]; then echo "error while uploading file. exiting." echo "there might be information in the scp log. ($localpath/bandwidth_scplogup)" # remove local file rm $localpath/$file if [[ $? -ne 0 ]]; then echo "cannot delete local file. exiting. ($localpath/$file) - you must fix this!!" else if [ $silent -ne 1 ]; then echo "local file has been deleted." fi fi exit 1 fi result=$(cat $localpath/bandwidth_scplogup | grep "Bytes per second" | awk '{print $5}' | sed 's/\,//') result=$(echo $result | sed 's/\..*//') echo "UPLOAD: $(($result * 8 / 1024)) kbit/s" rm $localpath/bandwidth_scplogup # download file if [ $silent -ne 1 ]; then echo "downloading file from $sshserver." fi scp -v $sshuser@$sshserver:$sshpath/$file $localpath/$file &> $localpath/bandwidth_scplogdown if [ $? -ne 0 ]; then echo "error while downloading file. exiting." echo "there might be information in the scp log. ($localpath/bandwidth_scplogdown)" # remove remote file ssh $sshuser@$sshserver rm $sshpath/$file &> /dev/null if [[ $? -ne 0 ]]; then echo "cannot remove remote file. ($sshpath/$file) - you must fix this!!" sleep 5 else if [ $silent -ne 1 ]; then echo "remote file removed." fi fi exit 1 fi result=$(cat $localpath/bandwidth_scplogdown | grep "Bytes per second" | awk '{print $7}' | sed 's/\,//') result=$(echo $result | sed 's/\..*//') echo "DOWNLOAD: $(($result * 8 / 1024)) kbit/s" rm $localpath/bandwidth_scplogdown # remove remote file ssh $sshuser@$sshserver rm $sshpath/$file &> /dev/null if [[ $? -ne 0 ]]; then echo "cannot remove remote file. ($sshpath/$file) - you must fix this!!" sleep 5 else if [ $silent -ne 1 ]; then echo "remote file removed." fi fi # remove local file rm $localpath/$file if [[ $? -ne 0 ]]; then echo "cannot delete local file. exiting. ($localpath/$file) - you must fix this!!" exit 1 else if [ $silent -ne 1 ]; then echo "local file has been deleted." fi exit 0 fi if [ $silent -ne 1 ]; then echo "all done. exiting." fi exit 0