#!/bin/bash
#################################################################################
# script pour linux Debian / Ubuntu du 09/06/2008  -  écrit par Vivien GUEANT   #
# dépendances : iperf, téléchargeable sur http://dast.nlanr.net/Projects/Iperf/ #
#################################################################################
goto="continue"
while [ "$goto" = "continue" ] # boucle permettant de reboucler tant que $goto != "fin"
do

which iperf >/dev/null # test la présence d'iperf
if [ "$?" = "0" ]
then # iperf est présent, on commence le test (menu principal)
  clear
  echo -e "________________________________________________________________________________"
  echo -e ""
  echo -e "                     TEST DE PERFORMANCE INTERNET"
  echo -e "________________________________________________________________________________"
  echo -e "La version d'Iperf utilisé sur le serveur est Iperf 2.0.2"
  echo -e "Les remarques sont à adresser à Vivien GUEANT\n"
  echo -e "6 tests vous sont proposés :"
  echo -e "--------------------------"
  echo -e "  (0) : quiter"
  echo -e "  (1) : port TCP 5001, upload uniquement"
  echo -e "  (2) : port TCP 5001, upload puis download"
  echo -e "  (3) : port TCP 5001, upload (x3) + download (x3) = 6 connexions simultanées"
  echo -e "  (1e): port TCP 4662, upload uniquement sur le port d'emule"
  echo -e "  (2e): port TCP 4662, upload puis download sur le port d'emule"
  echo -e "  (3e): port TCP 4662, upload (x3) + download (x3) simultané sur le port d'emule\n"
  echo -e "Pour les tests 2/3/2e/3e il est nécessaire d'ouvrir le port sur votre routeur\n"
  echo -e "Indiquez le N° de votre test puis sur la touche \"Entrée\" pour continuer"
  read pause
  case "$pause" in
  "0" | "o" | "O" ) # souhaite quitter
    echo -e "A bientôt"
    goto="fin"
    ;;
  "1" | "2" | "3" | "1e" | "1E" | "2e" | "2E" | "3e" | "3E" ) # partie commune aux tests
    clear
    echo -e "________________________________________________________________________________"
    echo -e ""
    echo -e "                     TEST DE PERFORMANCE INTERNET"
    echo -e "________________________________________________________________________________"
    case "$pause" in # on re-test pour séparer les tests entre eux
    "1" )
      echo -e "port TCP 5001, upload uniquement (1 connexion simultanée)"
      echo -e "    => iperf -c 212.27.33.25 -m -w 500K -i 5 -t 20 $1 $2 $3 $4 $5 $6\n"
      iperf -c 217.171.27.254 -m -w 500K -i 1 -t 12 $1 $2 $3 $4 $5 $6
      ;;
    "2" )
      echo -e "port TCP 5001, upload puis download (1 connexion simultanée)"
      echo -e "    => iperf -c 212.27.33.25 -m -w 500K -i 5 -t 20 -r $1 $2 $3 $4 $5 $6\n"
      iperf -c 217.171.27.254 -m -w 500K -i 1 -t 12 -r $1 $2 $3 $4 $5 $6
      ;;
    "3" )
      echo -e "port TCP 5001, upload (x3) + download (x3) = 6 connexions simultanées"
      echo -e "    => iperf -c 212.27.33.25 -m -w 500K -i 10 -t 40 -d -P 3 $1 $2 $3 $4 $5 $6\n"
      iperf -c 217.171.27.254 -m -w 500K -i 1 -t 12 -d -P 3 $1 $2 $3 $4 $5 $6
      ;;
    "1e" | "1E" )
      echo -e "port TCP 4662, upload uniquement sur le port d'emule (1 connexion simultanée)"
      echo -e "    => iperf -c 212.27.33.25 -m -w 500K -i 5 -t 20 -p 4662 $1 $2 $3 $4 $5 $6\n"
      iperf -c 217.171.27.254 -m -w 500K -i 1 -t 12 -p 4662 $1 $2 $3 $4 $5 $6
      ;;
    "2e" | "2E" )
      echo -e "port TCP 4662, upload puis download sur le port d'emule (1 connexion simultanée)"
      echo -e "    => iperf -c 212.27.33.25 -m -w 500K -i 5 -t 20 -r -p 4662 $1 $2 $3 $4 $5 $6\n"
      iperf -c 217.171.27.254 -m -w 500K -i 1 -t 12 -r -p 4662 $1 $2 $3 $4 $5 $6
      ;;
    "3e" | "3E" )
      echo -e "port TCP 4662, upload (x3) + download (x3) simultané sur le port d'emule"
      echo -e "    => iperf -c 212.27.33.25 -m -w 500K -i 10 -t 40 -d -P 3-p 4662 $1 $2 $3 $4 $5 $6\n"
      iperf -c 217.171.27.254 -m -w 500K -i 1 -t 12 -d -P 3-p 4662 $1 $2 $3 $4 $5 $6
      ;;
    esac # pas besoin de *) car déja testé dans le case précédent
    # partie commune aux tests (aprés exécution iperf)
    echo -e "appuyez sur \"entrée\" pour sortir ou sur \"c\" + \"entrée\" pour un autre test"
    read pause2
    if [ "$pause2" = "c" ]
    then
      echo "on continue, goto reste avec la valeur continue" >/dev/null
    else # on quitte
      goto="fin"
    fi
    ;;
  * ) # s'est trompé, test qui n'existe pas
    clear
    echo -e "________________________________________________________________________________"
    echo -e ""
    echo -e "                                ERREUR :"
    echo -e "________________________________________________________________________________\n"
    echo -e "la valeur \"$pause\" n'est pas correcte"
    echo -e "il faut taper \"0\" pour quiter, \"1\" pour le test 1, \"3e\" pour le test 3e,...  \n"
    echo -e "Appuyez sur la touche \"Entrée\" pour revenir à l'écran précédent\a"
    read pause
    ;;
  esac

else # iperf n'est pas présent, il faut l'instller
  clear
  echo -e "________________________________________________________________________________"
  echo -e ""
  echo -e "                                ERREUR :"
  echo -e "                IPERF n'est pas installé sur votre linux."
  echo -e "________________________________________________________________________________\n"
  echo -e "IPERF est indispensable pour l'execution de ce script de test de débit.\n"
  echo -e "Les sources et la licence d'Iperf sont téléchargeables sur :"
  echo -e "http://dast.nlanr.net/Projects/Iperf/"
  echo -e "Les remarques sont à adresser à Vivien GUEANT\n\n"
  echo -e "Note :"
  echo -e "------"
  echo -e "  - Si votre distribution de linux est Ubuntu ou Debian compatible"
  echo -e "    => tapez install puis entrée pour démarrer l'installation automatique."
  echo -e "    (iperf prend 46 Ko sur votre disque)\n"
  echo -e "  - Si vous avez une autre distibution, il vous faudra faire vous même."
  echo -e "    l'isntallation puis relancer ce script"
  echo -e "    => appuyez sur la touche \"entrée\" pour sortir."
  read pause
  if [ "$pause" = "install" ]
  then # souhaite installer iperf
    clear
    echo -e "________________________________________________________________________________"
    echo -e ""
    echo -e "                            Installation d'IPERF"
    echo -e "________________________________________________________________________________\n"
    echo -e "La commande utilisée est \"sudo apt-get install iperf\"."
    echo -e "Il est possible que votre mot de passe vous soit demandé.\n"
    sudo apt-get install iperf # installation iperf
    which iperf >/dev/null # test voir si installation iperf = ok
    if [ "$?" = "0" ]
    then
      echo "installation réussi, goto = continue" >/dev/null
    else
      echo -e "________________________________________________________________________________"
      echo -e "Echec de l'installation => vérifiez que les points suivants sont vérifiés :"
      echo -e "  1/ être sous Ubuntu / Debian / Debian compatible + un accés root via sudo"
      echo -e "  2/ avoir une connexion Internet opérationelle"
      echo -e "  3/ avoir ajouté le dépôt qui contient iperf (universe pour ubuntu)"
      echo -e "Appuyez sur la touche \"entrée\" pour sortir."
      read pause
      goto="fin"
    fi
  else # souhaite installer manuellement / quiter
    echo -e "Aucune installation effectuée"
    goto="fin"
  fi
fi

done #done de la boucle permettant de reboucler tant que $goto != "fin"
