Soms is het internet traag, maar ligt dat aan de internetverbinding of aan de webserver die je voor het ogenblik gebruikt.
Om de internetverbinding te testen, bestaan verschillende online webpagina's om de snelheid van jouw internetverbinding te meten. Maar dan moet je de vele advertenties erbij nemen. Deze online meetpagina's laden eerst JavaScript code in de browser om een nabijgelegen meetserver op te sporen. Daarna worden er op verschillende manieren (HTTP GET en POST) gegevens met deze meetserver uitgewisseld om de snelheid van de internetverbinding te bepalen. Werk je in een grafische omgeving en een browser dan kan je zo'n online snelheidsmeter gebruiken.
Om de snelheid (bandbreedte) van jouw internetverbinding in een terminal te testen, kan je het python script speedtest.py gebruiken. Speedtest.py meet de bandbreedte van jouw internetverbinding niet met HTTP, maar via sockets. Daar speedtest.py een andere meettechniek gebruikt, kunnen de resultaten van de online en speedstest.py opdracht verschillen. Over welke twee meettechnieken de beste is, valt te discussiëren. Maar beiden geven een goed beeld van de download- en uploadsnelheid van de internetverbinding.
Speedtest kan je installeren via de standaard openSUSE softwarebronnen, maar dan krijg je een oude versie. Daarenboven is Speedtest een python script. En Python heeft een eigen installatiesysteem, waarmee je steeds de meest recentste stabiele versie kunt downloaden en installeren. Installeer het Python 3 installatiesysteem met de volgende opdracht:
dany@pindabook:~> sudo zypper install python3-pip
Gegevens van opslagruimte laden...
Lezen van geïnstalleerde pakketten...
'python3-pip' is al geïnstalleerd.
Geen updatekandidaat voor bijwerken van 'python3-pip-10.0.1-lp151.2.2.noarch'. De hoogst beschikbare versie is al geïnstalleerd.
Pakketafhankelijkheden oplossen...
Geen activiteit.
Zoals je merkt was het Python 3 installatiesysteem reeds op mijn openSUSE Leap 15.1 systeem aanwezig. Speedtest zelf installeer je met de opdracht:
dany@pindabook:~> sudo pip3 install speedtest-cli
Collecting speedtest-cli
Downloading https://files.pythonhosted.org/packages/61/8b/58d1de9a7fff3e91c5ab956ab4ba72b49f42d9f73d5f3e248c740dfcc816/speedtest_cli-2.1.1-py2.py3-none-any.whl
Installing collected packages: speedtest-cli
Successfully installed speedtest-cli-2.1.1
You are using pip version 10.0.1, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
De installatie test je door de versie van de geïnstalleerde Speedtest op te vragen:
dany@pindabook:~> speedtest-cli --version
speedtest-cli 2.1.1
Python 3.6.5 (default, Mar 31 2018, 19:45:04) [GCC]
Om de snelheid van jouw internetverbinding te testen, voer je het speedtest-cli script zonder opties uit:
dany@pindabook:~> speedtest-cli
Retrieving speedtest.net configuration...
Testing from Skynet Belgium (109.130.59.0)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by EDPnet (Sint-Niklaas) [74.76 km]: 14.576 ms
Testing download speed................................................................................
Download: 90.20 Mbit/s
Testing upload speed......................................................................................................
Upload: 14.24 Mbit/s
Wil je de download- en uploadsnelheid in bytes/seconden, gebruik dan de optie --bytes:
dany@pindabook:~> speedtest-cli --bytes
Retrieving speedtest.net configuration...
Testing from Skynet Belgium (109.130.59.0)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by EDPnet (Sint-Niklaas) [74.76 km]: 12.044 ms
Testing download speed................................................................................
Download: 11.29 Mbyte/s
Testing upload speed......................................................................................................
Upload: 2.12 Mbyte/s
Om het resultaat beter te presenteren (van opmaak voorzien) kan je deze in een PNG afbeelding opslaan, voeg daarvoor de optie --share toe:
dany@pindabook:~> speedtest-cli --share
Retrieving speedtest.net configuration...
Testing from Skynet Belgium (109.130.59.0)...
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by EDPnet (Sint-Niklaas) [74.76 km]: 12.059 ms
Testing download speed................................................................................
Download: 90.34 Mbit/s
Testing upload speed......................................................................................................
Upload: 15.42 Mbit/s
Share results: http://www.speedtest.net/result/8339357996.png
Let op het feit dat het resultaat op het internet openbaar wordt gedeeld, vandaar de optie --share.
Een vereenvoudigde uitvoer met enkel de belangrijkste resultaten, verkrijg je met de optie --simple:
dany@pindabook:~> speedtest-cli --simple
Ping: 12.155 ms
Download: 90.22 Mbit/s
Upload: 15.79 Mbit/s
Merk op dat je tijdens de test geen aanwijzing (puntjes) ziet verschijnen dat de test bezig is. Wees dus geduldig en wacht op de beknopte resultaten.
Om een op locatie gesorteerde lijst met meetservers weer te geven, gebruik je de optie --list:
dany@pindabook:~> speedtest-cli --list
Retrieving speedtest.net configuration...
2951) ePlay TV (Roubaix, France) [27.61 km]
16913) Eurafibre (Lille, FR) [35.58 km]
4010) LaFibre.info (Douai, France) [64.02 km]
11433) DELTA (Middelburg, Netherlands) [70.51 km]
4320) EDPnet (Sint-Niklaas, Belgium) [74.76 km]
10915) Skylinq (Goes, Netherlands) [80.38 km]
12627) Proximus (Brussels, Belgium) [86.74 km]
5151) Combell (Brussels, Belgium) [86.74 km]
4319) Orange Belgium (Brussels, Belgium) [86.74 km]
21086) ASP (Brussels, Belgium) [86.74 km]
2848) Cu.be Solutions (Diegem, Belgium) [92.21 km]
2955) Nucleus BVBA (Antwerp, Belgium) [95.25 km]
4812) Universite Catholique de Louvain (Louvain-La-Neuve, Belgium) [109.12 km]
6554) WorldStream B.V. (Naaldwijk, Netherlands) [138.43 km]
21509) i3D.net (Rotterdam, Netherlands) [143.61 km]
21103) Damecon B.V. (Rotterdam, Netherlands) [143.68 km]
1531) Cloud Space UK (Canterbury, Great Britain) [146.73 km]
25318) Inventive ERP Software b.v. (Rijswijk, Netherlands) [147.02 km]
1208) Qweb | Full-Service Hosting (Alblasserdam, Netherlands) [147.28 km]
12066) KPN B.V. (Den Haag, Netherlands) [149.22 km]
20914) Host Sailor Ltd (Capelle, Netherlands) [153.71 km]
3242) ColoCenter bv (Zoetermeer, Netherland) [156.07 km]
...
960) Enternet Online Ltd (Tauranga, New Zealand) [18441.61 km]
2025) PrimoWireless (New Plymouth, New Zealand) [18517.68 km]
2857) REAP-ISP (Taupo, New Zealand) [18544.41 km]
465) NOW (Napier, New Zealand) [18652.10 km]
5907) Webconnect (Hastings, New Zealand) [18667.31 km]
3797) Inspire Net Ltd (Palmerston North, New Zealand) [18702.23 km]
24716) Digital Cloud (Palmerston North, New Zealand) [18702.23 km]
10809) Lightspeed Technology Group (Queenstown, New Zealand) [18757.13 km]
8356) Netspeed Data Limited (Wanaka, New Zealand) [18764.13 km]
11326) Spark New Zealand (Wellington, New Zealand) [18765.11 km]
4954) Vodafone New Zealand (Wellington, New Zealand) [18765.11 km]
4518) CityLink Ltd (Wellington, New Zealand) [18765.11 km]
8699) ACSData (Wellington, New Zealand) [18765.11 km]
21611) Xtreme Networks (Wellington, New Zealand) [18765.11 km]
2336) Amuri.net (Culverden, New Zealand) [18818.43 km]
14976) Yrless Ltd (Gore, New Zealand) [18842.73 km]
11328) Spark New Zealand (Christchurch, New Zealand) [18869.62 km]
4934) Vodafone New Zealand (Christchurch, New Zealand) [18869.62 km]
7317) Vocusgroup NZ (Christchurch, New Zealand) [18869.62 km]
922) 2degrees (Christchurch, New Zealand) [18869.62 km]
6056) 2degrees (Dunedin, New Zealand) [18927.65 km]
12037) Unifone NZ LTD (Dunedin, New Zealand) [18927.65 km]
5482) WIC NZ Ltd (Dunedin, New Zealand) [18927.65 km]
Wil je een verbinding naar bijvoorbeeld een ander land of continent meten dan kan je de internet bandbreedte via een meetserver in dit land of continent gebruiken:
dany@pindabook:~> speedtest-cli --server 3242
Retrieving speedtest.net configuration...
Testing from Skynet Belgium (109.130.59.0)...
Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by ColoCenter bv (Zoetermeer) [156.07 km]: 19.818 ms
Testing download speed................................................................................
Download: 89.64 Mbit/s
Testing upload speed......................................................................................................
Upload: 15.54 Mbit/s
De gemeten internet bandbreedte is niet alleen afhankelijk van de afstand, maar vooral van het aantal gepasseerde knooppunten en de bandbreedte van de bekabeling tussen de knooppunten. Zo zal de bandbreedte van een internetverbinding naar een ander continent lager zijn doordat de kabels tussen de continenten zwaarder belast zijn. Je kunt het vergelijken met een snelweg, waar heel veel verkeer over moet. Er ontstaan al snel files, die de snelheid drastisch omlaag kunnen halen.
Een overzicht van alle mogelijkheden van Speedtest, kan je opvragen met de opdracht:
dany@pindabook:~> speedtest-cli --help
usage: speedtest-cli [-h] [--no-download] [--no-upload] [--single] [--bytes]
[--share] [--simple] [--csv]
[--csv-delimiter CSV_DELIMITER] [--csv-header] [--json]
[--list] [--server SERVER] [--exclude EXCLUDE]
[--mini MINI] [--source SOURCE] [--timeout TIMEOUT]
[--secure] [--no-pre-allocate] [--version]
Command line interface for testing internet bandwidth using speedtest.net.
--------------------------------------------------------------------------
https://github.com/sivel/speedtest-cli
optional arguments:
-h, --help show this help message and exit
--no-download Do not perform download test
--no-upload Do not perform upload test
--single Only use a single connection instead of multiple. This
simulates a typical file transfer.
--bytes Display values in bytes instead of bits. Does not
affect the image generated by --share, nor output from
--json or --csv
--share Generate and provide a URL to the speedtest.net share
results image, not displayed with --csv
--simple Suppress verbose output, only show basic information
--csv Suppress verbose output, only show basic information
in CSV format. Speeds listed in bit/s and not affected
by --bytes
--csv-delimiter CSV_DELIMITER
Single character delimiter to use in CSV output.
Default ","
--csv-header Print CSV headers
--json Suppress verbose output, only show basic information
in JSON format. Speeds listed in bit/s and not
affected by --bytes
--list Display a list of speedtest.net servers sorted by
distance
--server SERVER Specify a server ID to test against. Can be supplied
multiple times
--exclude EXCLUDE Exclude a server from selection. Can be supplied
multiple times
--mini MINI URL of the Speedtest Mini server
--source SOURCE Source IP address to bind to
--timeout TIMEOUT HTTP timeout in seconds. Default 10
--secure Use HTTPS instead of HTTP when communicating with
speedtest.net operated servers
--no-pre-allocate Do not pre allocate upload data. Pre allocation is
enabled by default to improve upload performance. To
support systems with insufficient memory, use this
option to avoid a MemoryError
--version Show the version number and exit
Handig aan het Python installatiesysteem is, dat je geïnstalleerde scripts ook eenvoudig terug kunt verwijderen:
dany@pindabook:~> sudo pip3 uninstall speedtest-cli
Uninstalling speedtest-cli-2.1.1:
Would remove:
/usr/bin/speedtest
/usr/bin/speedtest-cli
/usr/lib/python3.6/site-packages/speedtest.py
/usr/lib/python3.6/site-packages/speedtest_cli-2.1.1.dist-info/*
/usr/lib/python3.6/site-packages/speedtest_cli.py
Proceed (y/n)? y
Successfully uninstalled speedtest-cli-2.1.1
You are using pip version 10.0.1, however version 19.1.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Je kunt het Speedtest Python script ook op verschillende alternatieve manieren installeren. Je maakt dan echter geen gebruik van de officiële Python installatieprocedure. Elke installatieprocedure heeft voor- en nadelen.
Je kunt met een wget opdracht het Speedtest python script rechtstreeks van de github webpagina van de ontwikkelaar downloaden.
dany@pindabook:~> wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
--2019-06-14 11:34:29-- https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
Herleiden van raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.36.133
Verbinding maken met raw.githubusercontent.com (raw.githubusercontent.com)|151.101.36.133|:443... verbonden.
HTTP-verzoek is verzonden; wachten op antwoord... 200 OK
Lengte: 63234 (62K) [text/plain]
Wordt opgeslagen als: ‘speedtest-cli’
speedtest-cli 100%[==============================================>] 61,75K --.-KB/s in 0,03s
2019-06-14 11:34:30 (2,07 MB/s) - '‘speedtest-cli’' opgeslagen [63234/63234]
Na het downloaden moet je het gedownloade script uitvoerrechten geven met:
dany@pindabook:~> chmod +x speedtest-cli
Waardoor je het kunt starten (opdracht uitvoeren):
dany@pindabook:~> python3 speedtest-cli --version
speedtest-cli 2.1.1
Python 3.6.5 (default, Mar 31 2018, 19:45:04) [GCC]
Zo krijg je meest recente versie van Speedtest. Dit is echter niet altijd een stabiele versie, neem dat de ontwikkelaar juist een nieuwe functies heeft toegevoegd of een stuk code heeft herschreven, maar deze nog niet grondig werd getest. Dan kan dit problemen veroorzaken. M.a.w. je werkt met de ontwikkelversie van het Speedtest script (beter bekend als Alpha en Beta versies). Soms is dit ook een voordeel. Stel je hebt een nieuwe recente distributie geïnstalleerd en de stabiele werkt niet, dan kan de ontwikkelaar al bezig zijn met het aanpassen van zijn script, waardoor de ontwikkelversie wel werkt. Denk aan de overstap van Python 2 naar Python 3.
Daar je enkel het script hebt gedownload, kan je Speedtest eenvoudig verwijderen door het gedownloade script te verwijderen:
dany@pindabook:~> rm speedtest-cli
Om een bestand (script) te downloaden, kan je i.p.v. wget ook gebruik maken van curl. De Speedtest installatie verloopt dan als volgt:
dany@pindabook:~>curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 63234 100 63234 0 0 411k 0 --:--:-- --:--:-- --:--:-- 411k dany@pindabook:~>chmod +x speedtest-cli
dany@pindabook:~>python3 speedtest-cli --version
speedtest-cli 2.1.1 Python 3.6.5 (default, Mar 31 2018, 19:45:04) [GCC] dany@pindabook:~>rm speedtest-cli
Veel ontwikkelaars werken met een versiebeheersysteem, waardoor je het volledige ontwikkelproces kunt downloaden en het project verder mee-ontwikkelen. Eerst installeer je indien nodig het versiebeheersysteem:
dany@pindabook:~> sudo zypper install git
[sudo] wachtwoord voor root:
Gegevens van opslagruimte laden...
Lezen van geïnstalleerde pakketten...
'git' is al geïnstalleerd.
Geen updatekandidaat voor bijwerken van 'git-2.16.4-lp151.3.4.x86_64'. De hoogst beschikbare versie is al geïnstalleerd.
Pakketafhankelijkheden oplossen...
Geen activiteit.
Daarna download je een exacte kopie (kloon) van het project waaraan je wilt meewerken of wilt aanpassen:
dany@pindabook:~> git clone https://github.com/sivel/speedtest-cli.git
Cloning into 'speedtest-cli'...
remote: Enumerating objects: 1150, done.
remote: Total 1150 (delta 0), reused 0 (delta 0), pack-reused 1150
Receiving objects: 100% (1150/1150), 310.06 KiB | 518.00 KiB/s, done.
Resolving deltas: 100% (684/684), done.
Open de map met de broncode van het Speedtest project:
dany@pindabook:~> cd speedtest-cli
Sommige ontwikkelaars zorgen voor een installatiescript waarmee je de software op de computer kunt installeren:
dany@pindabook:~/speedtest-cli> sudo python3 setup.py install
[sudo] wachtwoord voor root:
running install
running bdist_egg
running egg_info
creating speedtest_cli.egg-info
writing speedtest_cli.egg-info/PKG-INFO
writing dependency_links to speedtest_cli.egg-info/dependency_links.txt
writing entry points to speedtest_cli.egg-info/entry_points.txt
writing top-level names to speedtest_cli.egg-info/top_level.txt
writing manifest file 'speedtest_cli.egg-info/SOURCES.txt'
reading manifest file 'speedtest_cli.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'speedtest_cli.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-x86_64/egg
running install_lib
running build_py
creating build
creating build/lib
copying speedtest.py -> build/lib
creating build/bdist.linux-x86_64
creating build/bdist.linux-x86_64/egg
copying build/lib/speedtest.py -> build/bdist.linux-x86_64/egg
byte-compiling build/bdist.linux-x86_64/egg/speedtest.py to speedtest.cpython-36.pyc
creating build/bdist.linux-x86_64/egg/EGG-INFO
copying speedtest_cli.egg-info/PKG-INFO -> build/bdist.linux-x86_64/egg/EGG-INFO
copying speedtest_cli.egg-info/SOURCES.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying speedtest_cli.egg-info/dependency_links.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying speedtest_cli.egg-info/entry_points.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
copying speedtest_cli.egg-info/top_level.txt -> build/bdist.linux-x86_64/egg/EGG-INFO
zip_safe flag not set; analyzing archive contents...
creating dist
creating 'dist/speedtest_cli-2.1.1-py3.6.egg' and adding 'build/bdist.linux-x86_64/egg' to it
removing 'build/bdist.linux-x86_64/egg' (and everything under it)
Processing speedtest_cli-2.1.1-py3.6.egg
Copying speedtest_cli-2.1.1-py3.6.egg to /usr/lib/python3.6/site-packages
Adding speedtest-cli 2.1.1 to easy-install.pth file
Installing speedtest script to /usr/bin
Installing speedtest-cli script to /usr/bin
Installed /usr/lib/python3.6/site-packages/speedtest_cli-2.1.1-py3.6.egg
Processing dependencies for speedtest-cli==2.1.1
Finished processing dependencies for speedtest-cli==2.1.1
dany@pindabook:~/speedtest-cli> speedtest-cli --version
speedtest-cli 2.1.1
Python 3.6.5 (default, Mar 31 2018, 19:45:04) [GCC]
De Speedtest ontwikkelaar heeft wel geen verwijderscript aangemaakt, waardoor het verwijderen van Speedtest moeilijker wordt. Maar ja, je bent bezig met de broncode van de ontwikkelversie van Speedtest. M.a.w. weet waar je aan begint.
Jouw computer bevat nu een exacte kopie van het project waaraan de ontwikkelaar zelf werkt. Waardoor je dezelfde mogelijkheden als de ontwikkelaar krijgt. Heb je iets mooi's toegevoegd of een bug (fout) verwijderd, dan kan je de verschillen met het oorspronkelijke project danzij het versiebeheersysteem terugsturen om het in het hoofdproject na goedkeuring te laten opnemen.