2013年12月25日 星期三

如何使用Linux command來量測對外的連網速度

   當你覺得上網速度變慢了,你可能會想去測試一下您自家ISP的速度,這時,您可以考慮使用Speedtrest.net,這是個常用的網路速度測試網站。

  連上了Speedtrest.net之後,Speedtrest.net首先會載入一些Javascript碼到您的瀏覽器,以便偵測離您最近的Speedtrest.net伺服器,並且開始發出HTTP GET/POST需求到server來量測下載/上傳的速率。

  然而,如果您是要從遠端的headless serverVPS、或是沒有安裝桌面的系統來測試它們的網路速度,那麼Speedtrest.net Flash格式的使用者介面就不適合了,你需要一個command-line interface (CLI) 版本的Speedtrest.net,稱為speedtest-cli。下面我們將展示如何使用speedtest-cli來檢查網路速度。

在Linux安裝speedtest-cli
    SpeedTest-cli是用Python寫的小軟體,利用Speedtest.net設備來偵測網路速度;基本上不需要什麼安裝,只要下載SpeedTest-cli這個Python script就能執行。
$ wget https://raw.github.com/sivel/speedtest-cli/master/speedtest_cli.py
$ chmod a+rx speedtest_cli.py
$ sudo mv speedtest_cli.py /usr/local/bin/speedtest-cli
$ sudo chown root:root /usr/local/bin/speedtest-cli

開始使用speedtest_cli測試速度
您只要直接執行speedtest_cli就可以測試目前的連網速度了,不需要帶任何的參數。
$ speedtest-cli
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from CHTD, Chunghwa Telecom Co., Ltd. (60.248.186.157)...
Selecting best server based on ping...
Hosted by Taiwan Fixed Network (Taichung) [79.83 km]: 21.299 ms
Testing download speed........................................
Download: 40.64 Mbit/s
Testing upload speed..................................................
Upload: 6.29 Mbit/s

speedtest_cli指令會連到最近的一台Speedtest.net server(地理上的距離,有看到它連到位於台中的server了嗎?),並計算出上傳及下載到該server的速度。您會看到,凌陽創新連到Internet的速度,目前下載是40.64 Mbit/s,上傳是6.29 Mbit/s。

  如果您打算將這個連線數據分享給其他人,您可以在command後面加上 ‘--hare’ 選項,這個選項會產生一個美觀的連線數據圖形檔,並產生連結讓您下載。
 ...
 Share results: http://www.speedtest.net/result/3228036590.png
 http://www.speedtest.net/result/3228036590.png

  如果您好奇想看看全世界的Speedtest.net servers,可以使用’--list’選項,它會秀出一串伺服器列表,並由距離您最近的開始排列。

全球一共有2533台:
$ speedtest-cli --list | wc -l
2533

    $ speedtest-cli --list
2191) kbro CO.LTD (Hsinying, Taiwan) [74.04 km]
2591) Far EasTone Telecommunications Co., Ltd (Taichung, Taiwan) [79.83 km]
3841) Taiwan Fixed Network (Taichung, Taiwan) [79.83 km]
2192) kbro CO.LTD (Taichung, Taiwan) [79.83 km]
2595) Far EasTone Telecommunications Co., Ltd (Hualien, Taiwan) [81.04 km]
2592) Far EasTone Telecommunications Co., Ltd (Tainan, Taiwan) [101.31 km]
2860) Blumen (Lyudao, Taiwan) [103.08 km]
2594) Far EasTone Telecommunications Co., Ltd (Pingtung, Taiwan) [105.21 km]
2190) kbro CO.LTD (Pingtung, Taiwan) [105.21 km]
2593) Far EasTone Telecommunications Co., Ltd (Kaohsiung, Taiwan) [122.13 km]
3842) Taiwan Fixed Network (Kaohsiung, Taiwan) [122.13 km]
2934) Far Eastone Telecommunications Co., Ltd. (Neihu, Taiwan) [138.47 km]
2590) Far EasTone Telecommunications Co., Ltd (Hsinchu, Taiwan) [146.42 km]
2182) kbro CO.LTD (Hsinchu, Taiwan) [146.42 km]
2589) Far EasTone Telecommunications Co., Ltd (Taoyuan, Taiwan) [176.75 km]
3921) Taiwan Fixed Network (Taoyuan, Taiwan) [176.75 km]
3967) Chief Telecom (Taipei, Taiwan) [178.86 km]
2133) Taiwan Fixed Network (Taipei, Taiwan) [178.86 km]
2327) Far Eastone Telecommunications Co., Ltd. (Taipei, Taiwan) [178.86 km]
2181) kbro CO.LTD (Taipei, Taiwan) [178.86 km]
1028) Shepherd Software (Xiamen, China) [315.38 km]
1628) Xiamen Guangdian Xinxu (Xiamen, China) [315.38 km]
….
  可以看到在台灣共有20台speedTest server,但距離資訊不太正確,新竹反而排到台中、花蓮屏東之後了,但無妨,畢竟台灣太小了,這對網路的速度並沒有影響。

 但如果只能量測距離與最近的一個節點之間的網路速度的話,那麼這個tool似乎也太雞肋沒啥作用?但實際上您可以指定針對某度server作量測,只要加入’--server ???’就行了!’???’指的是server的編號,例如台中是2591, 3841或2192,新竹是2590;我認為這相當實用,畢竟我們連網不會只有連台灣的server,更多時候是連到全球各地,尤其是美國,因此,除了測試本地的速度外,也要同時測試連線到國外的速度,這個數據會比較客觀。例如,下方的數據,我是指定連到 ‘3824) Hot Spot Broadband (Reno, Nevada, USA) [10589.01 km]’ 這台(距台灣約1萬589公里),您可以看到連線速度降低了不少(下載速度少了接近1/3,上傳約少了一半速度)。
$ speedtest-cli --server 3824
Retrieving speedtest.net configuration...
Retrieving speedtest.net server list...
Testing from CHTD, Chunghwa Telecom Co., Ltd. (60.248.186.157)...
Hosted by Hot Spot Broadband (Reno, Nevada) [10589.01 km]: 12786.388 ms
Testing download speed........................................
Download: 13.03 Mbit/s
Testing upload speed..................................................
Upload: 5.18 Mbit/s