Good to Know Database

Shell Skript: HTTP/FTP Speed Test


Das folgende Shell Skript kann zur Messung und Überprüfung der HTTP- und FTP-Downloadgeschwindigkeit sowie der FTP-Uploadgeschwindigkeit genutzt werden. Dazu müssen Sie nur die am Anfang des Skripts befindlichen Variablen an Ihre Testumgebung anpassen. Wenn Sie einen Test nicht durchführen wollen, setzen Sie die Anzahl der Durchläufe (Loops) auf den Wert 0.

###########################################################################
##                                                                       ##
##                          HTTP/FTP Speed Test                          ##
##                                                                       ##
## Creation:    19.06.2011                                               ##
## Last Update: 20.10.2013                                               ##
##                                                                       ##
## Copyright (c) 2011-2013 by Georg Kainzbauer <http://www.gtkdb.de>     ##
##                                                                       ##
## This program is free software; you can redistribute it and/or modify  ##
## it under the terms of the GNU General Public License as published by  ##
## the Free Software Foundation; either version 2 of the License, or     ##
## (at your option) any later version.                                   ##
##                                                                       ##
###########################################################################
#!/bin/bash

# Path to the local directory
LOCAL_DIR=/tmp

# Log file
LOGFILE=~/$(date +%Y-%m-%d)_speedtest.log

############################
# HTTP download speed test #
############################

# URL of the HTTP server
HTTP_DL_SERVER=http://192.168.10.1

# Path to the testfiles on the HTTP server
HTTP_DL_PATH=/download

# Filename of the testfile
HTTP_DL_FILE=testfile_1gb.bin

# Number of HTTP download loops
HTTP_DL_LOOPS=10

###########################
# FTP download speed test #
###########################

# URL of the FTP server
FTP_DL_SERVER=ftp://192.168.10.1

# Path to the testfiles on the FTP server
FTP_DL_PATH=/download

# Filename of the testfile
FTP_DL_FILE=testfile_1gb.bin

# Number of parallel download connections
FTP_DL_CONNECTIONS=1

# Number of FTP download loops
FTP_DL_LOOPS=10

#########################
# FTP upload speed test #
#########################

# URL of the FTP server
FTP_UL_SERVER=ftp://192.168.10.1

# Path to the writeable directory on the FTP server
FTP_UL_PATH=/upload

# Filename of the testfile
FTP_UL_FILE=testfile.bin

# Size of the testfile in MBytes
FTP_UL_SIZE=100

# Number of FTP upload loops
FTP_UL_LOOPS=10


###################################################################
# NORMALLY THERE IS NO NEED TO CHANGE ANYTHING BELOW THIS COMMENT #
###################################################################

# Change BASH language
export LANG=en_GB.utf8
export LANGUAGE=en_GB:en

# Create local directory if not exists
if [ ! -d ${LOCAL_DIR} ] ; then
  mkdir -p ${LOCAL_DIR}
fi

# Change to the local directory
cd ${LOCAL_DIR}


############################
# HTTP download speed test #
############################

if [ ${HTTP_DL_LOOPS} -gt 0 ] ; then

  echo -e "\nHTTP download speed test (${HTTP_DL_LOOPS} loops)\n" | tee -a ${LOGFILE}

  for i in $(seq ${HTTP_DL_LOOPS}) ; do

    # Download testfile from HTTP server
    wget ${HTTP_DL_SERVER}${HTTP_DL_PATH}/${HTTP_DL_FILE} -O /dev/null 2>&1 | grep "saved" | cut -d"(" -f2 | cut -d")" -f1 | tee -a ${LOGFILE}

  done

fi


###########################
# FTP download speed test #
###########################

if [ ${FTP_DL_LOOPS} -gt 0 ] ; then

  echo -e "\nFTP download speed test (${FTP_DL_LOOPS} loops)\n" | tee -a ${LOGFILE}

  for i in $(seq ${FTP_DL_LOOPS}) ; do

    # Remove testfile if exists
    if [ -f ${FTP_DL_FILE} ] ; then
      rm -f ${FTP_DL_FILE}
    fi

    # Download testfile from FTP server
    lftp -e "pget -n ${FTP_DL_CONNECTIONS} ${FTP_DL_SERVER}${FTP_DL_PATH}/${FTP_DL_FILE}; quit" 2>&1 | grep "seconds" | cut -d "(" -f2 | cut -d ")" -f1 | tee -a ${LOGFILE}

  done

fi


#########################
# FTP upload speed test #
#########################

if [ ${FTP_UL_LOOPS} -gt 0 ] ; then

  echo -e "\nFTP upload speed test (${FTP_UL_LOOPS} loops)\n" | tee -a ${LOGFILE}

  # Remove testfile if exists
  if [ -f ${FTP_UL_FILE} ] ; then
    rm -f ${FTP_UL_FILE}
  fi

  # Create testfile
  dd if=/dev/urandom of=${LOCAL_DIR}/${FTP_UL_FILE} bs=1M count=${FTP_UL_SIZE} >/dev/null 2>&1

  for i in $(seq ${FTP_UL_LOOPS}) ; do

    # Upload testfile to FTP server
    lftp -e "put -O ${FTP_UL_SERVER}${FTP_UL_PATH} ${LOCAL_DIR}/${FTP_UL_FILE}; rm ${FTP_UL_SERVER}${FTP_UL_PATH}/${FTP_UL_FILE}; quit" 2>&1 | grep "transferred" | cut -d "(" -f2 | cut -d ")" -f1 | tee -a ${LOGFILE}

  done

fi


exit 0


Dieser Eintrag wurde am 30.06.2011 erstellt und zuletzt am 05.04.2015 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_34_1329.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer