Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!


Coded a speedtest script that test your server's upload and download speeds
New on LowEndTalk? Please Register and read our Community Rules.

All new Registrations are manually reviewed and approved, so a short delay after registration may occur before your account becomes active.

Coded a speedtest script that test your server's upload and download speeds

blackblack Member
edited September 2013 in General
wget dl.getipaddr.net/speedtest.sh 2>/dev/null -O- | bash 


I had some motivation to write a speed test script that supports both download and upload. Currently it runs on my two spare VPSes. Please let me know if there are issues and preferably, send any security related issues via PM.


Of course providers can donate a container and I'll be sure to add a link to your site in the speedtest results. I can get by with 64 MB of ram but preferably 128 MB and no more than 5 GB of space is needed. Currently it uses 10 MB download + 10 MB per test. 100 GB/month will get you 5120 views /month :) Uploaded files are deleted once every minute and the ftp user has no shell access.


Protip: if you can't remember the command at the top of your head, visit http://dl.getipaddr.net, it'll display some other useful information as well.

«1

Comments

  • it's working perfect ... :D

  • I get:

    ftp: bind: Address already in use
    (standard_in) 1: syntax error

  • @udk said:
    I get:

    ftp: bind: Address already in use
    (standard_in) 1: syntax error



    Try it now. If it still doesn't work, let me know which OS you're running so maybe I can emulate the issue.

  • DalCompDalComp Member
    edited September 2013
    # wget dl.getipaddr.net/speedtest.sh 2>/dev/null -O- | bash
    Speedtest from Houston, TX, USA on a shared 1 Gbps port
            Download Speed: 6.45 MB/s
    (standard_in) 1: parse error
    Speedtest from Tallinn, Estonia on a shared 1 Gbps port
            Download Speed: 1.12 MB/s
    (standard_in) 1: parse error
    Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port
            Download Speed: 85.9 MB/s
    (standard_in) 1: parse error
    # cat /etc/redhat-release && uname -m
    CentOS release 5.8 (Final)
    i686

    Working fine on CentOS 6.4 64bit, though.

  • @DalComp said:

    # wget dl.getipaddr.net/speedtest.sh 2>/dev/null -O- | bash
    > Speedtest from Houston, TX, USA on a shared 1 Gbps port
    >         Download Speed: 6.45 MB/s
    > (standard_in) 1: parse error
    > Speedtest from Tallinn, Estonia on a shared 1 Gbps port
    >         Download Speed: 1.12 MB/s
    > (standard_in) 1: parse error
    > Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port
    >         Download Speed: 85.9 MB/s
    > (standard_in) 1: parse error
    # cat /etc/redhat-release && uname -m
    > CentOS release 5.8 (Final)
    > i686

    Working fine on CentOS 6.4 64bit, though.



    I spun up a CentOS 5.6 container. For some reason ftp outputs the upload rates in scientific format (number.0e+power). I believe this has been corrected.

  • Working good now. :)

  • I tried it, It works good.

  • It worked :)

    root@vserv01:~# wget dl.getipaddr.net/speedtest.sh 2>/dev/null -O- | bash Speedtest from Houston, TX, USA on a shared 1 Gbps port Download Speed: 2.59 MB/s Upload Speed: 2.1 MB/s Speedtest from Tallinn, Estonia on a shared 1 Gbps port Download Speed: 8.77 MB/s Upload Speed: 7.3 MB/s Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port Download Speed: 3.55 MB/s Upload Speed: .8 MB/s

  • udkudk Member
    edited September 2013

    Testing US locations Speedtest from Houston, TX, USA on a shared 1 Gbps port Download Speed: 1.10 MB/s (standard_in) 1: syntax error Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port Download Speed: 2.11 MB/s (standard_in) 1: syntax error -e Testing EU locations Speedtest from Tallinn, Estonia on a shared 1 Gbps port Download Speed: 2.87 MB/s (standard_in) 1: syntax error

    That's on ubuntu server 12.04

  • image

    @udk I was unable to produce the bug on the same OS.

    Can you run this for me and tell me what it says either here or via PM?

    wget dl.getipaddr.net/test.sh 2>/dev/null -O- | bash 
  • # wget dl.getipaddr.net/test.sh 2>/dev/null -O- | bash Speedtest from Houston, TX, USA on a shared 1 Gbps port Download Speed: 1.82 MB/s upload data raw -> Connected to 209.148.94.14. 220 ProFTPD 1.3.4a Server (Speedtest) [::ffff:209.148.94.14] 331 Password required for speedtest 230 User speedtest logged in Remote system type is UNIX. Using binary mode to transfer files. local: 10mb.test remote: 10mb.test 500 Illegal PORT command 221 Goodbye.

  • jarjar Patron Provider, Top Host, Veteran

    Well done sir

  • ftp client is not installed, install it to continue, typically you can install it by typing
    apt-get install ftp
    yum install ftp
    depending on your OS
  • netomxnetomx Moderator, Veteran

    @tux said:

    ftp client is not installed, install it to continue, typically you can install it by typing
    > apt-get install ftp
    > yum install ftp
    > depending on your OS

    maybe you need to install ftp

    Thanked by 1vedran
  • Testing US locations
    Speedtest from Houston, TX, USA on a shared 1 Gbps port
            Download Speed: 2.42 MB/s
            Upload Speed:   5.5 MB/s
    Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port
            Download Speed: 2.85 MB/s
            Upload Speed:   4.1 MB/s
    Speedtest from Dallas, TX, USA on a shared 4x1 Gbps port
            Download Speed: 2.24 MB/s
            Upload Speed:   4.6 MB/s
    
    Testing EU locations
    Speedtest from Tallinn, Estonia on a shared 1 Gbps port
            Download Speed: 5.84 MB/s
            Upload Speed:   9.4 MB/s
    
  • Maybe put this in wiki. it might be pushed down by other threads

  • udk - I think I may have fixed this by giving you the option to enable PASV mode.

    wget dl.getipaddr.net/ENABLEPASSIVESPEEDTEST 2>/dev/null && wget dl.getipaddr.net/speedtest.sh 2>/dev/null -O- | bash 



    If that still doesn't work, it's more likely that a firewall or the network you're on is preventing you from receiving data on a particular port. The server is getting a private IP as the return address, which is not route-able through the public internet.


    I added another feature that lets you force 100MB file test instead of 10MB to overcome TCP Vegas' congestion avoidance so you can get a better sample result. Please only use this when you feel absolutely necessary because it's 10 times more bandwidth overall.

    wget dl.getipaddr.net/FORCE100MBFILESPEEDTEST 2>/dev/null && wget dl.getipaddr.net/speedtest.sh 2>/dev/null -O- | bash 

    If you want more information about the options, go here.

  • @black, wget dl.getipaddr.net/ENABLEPASSIVESPEEDTEST appears to be a blank file, am I missing something?

    I'm trying this on a server without a public IP (NAT), but I didn't think that would make a difference!

    Perhaps you should consider using HTTP POST to send 10MB of data via HTTP? Would be a lot safer imo - wget even supports this.

  • flyfly Member
    edited September 2013

    piping remote scripts directly into bash lulz

    Thanked by 1linuxthefish
  • blackblack Member
    edited September 2013

    udk - It is supposed to be a blank file, yeah. Basically I can't pass arguments to a live bash script so if you want certain options enabled, you wget a blank file, the speed test script checks if that file exists on your system (does not look in the file for contents) and enable that option accordingly.


    I chose an FTP upload implementation because

    1) no execution privileges on anything because the user has no way of executing any files

    2) I don't have to calculate my own speed metrics, I'm not sure if you have to with HTTP Post

    3) I'm not too familiar with php in terms of security or settings on how to set a buffer space for large files (like 100MB) that doesn't impact negatively on the speed test results.

    It does seem like it'd cut down on the problems and setup though. I'll look into it this weekend and see if I can swap out ftp for HTTP POST if I can familiarize myself properly. Thanks!

    @fly no balls no glory :D
    Feel free to have a look at the code before you run it.

  • can you not get http post speeds the exact same way you get the download speeds (using wget)?

  • blackblack Member
    edited September 2013

    @udk - I tried to get it working with wget, but wget's speed results refers to the download speed of the remote server's results, not the upload results to the server. After reading the man pages

    wget get does not currently support "multipart/form-data" for transmitting POST data; only "application/x-www-form-urlencoded".

    so that's an issue as well. I think the next step is to use curl.

    4 hours later edit:

    everything is now transferred via http using curl. wget and ftp are no longer used. Hopefully this will bypass the firewall issues. The code is a lot cleaner as well :)

  • Testing US locations
    Speedtest from Houston, TX, USA on a shared 1 Gbps port
    Download Speed: 17.67 MB/sec
    Upload speed: 6.75 MB/sec
    Speedtest from Los Angeles, CA, USA [ generously donated by http://maximumvps.net ] on a shared 1 Gbps port
    Download Speed: 13.69 MB/sec
    Upload speed: 1.54 MB/sec
    Speedtest from Dallas, TX, USA on a shared 4x1 Gbps port
    Download Speed: 53.38 MB/sec
    Upload speed: 42.99 MB/sec

    Testing EU locations
    Speedtest from Tallinn, Estonia on a shared 1 Gbps port
    Download Speed: 1.48 MB/sec
    Upload speed: .35 MB/sec

  • Nice

  • @vmunich said:
    Nice

    Thanks.
    I made some improvements in the code and it now prints the results asynchronously.

    One more test location (South Bend, Indiana) has been added due to someone's generosity.

    I might add one east coast test location (Montreal, Canada) if @MCHPhil still has some yearlies in stock.

  • Sorry to bump this but I can't edit my original post.

    I've added Buffalo NY, Clifton NJ (thanks to dedicatedminds) , Atlanta GA (thanks to hostUS).



    Speedtest also runs a CPU benchmark of how long it takes to calculate PI to 5,000 decimal places.

    Thanked by 1JerryHou
  • BrianHarrisonBrianHarrison Member, Patron Provider

    Works great, nice work

  • k0nslk0nsl Member
    edited November 2013

    Yep, good work :)

    -k0nsl

  • JohnRoeJohnRoe Member
    edited November 2013

    working great

  • I'd like to donate a VPS for this in Dallas. What do I need to do?

Sign In or Register to comment.