Posted at

【CLIツール探訪②】ブラウザを開かずに、コマンドのみでの通信速度測定に便利な「speedtest-cli」を試用。


  • CLIの恩恵を更に浴びるべく、ひたすら魅惑のツールを追い求める記事第二弾。

  • 定期的な過去回想作業を実施したところ、最初と最新の記事の内容の変化の無さに、数秒間「時間の平等さ」を疑問視。

  • 今回は、コマンド上から通信速度の測定が可能な「speedtest-cli」を試用することにしよう。


概要


特徴


コマンドベースでの測定


  • ブラウザから速度測定サイトへいく必要がなく、ターミナル上からコマンド一発で測定することができる。

  • そのため、ブラウザ環境がないLinux環境でも通信測定が可能。


最寄りサーバーの自動検知


  • 最寄りのサーバーを指定する必要がなく、基本コマンドをうつと、自動で最寄りのサーバーを検知して、その拠点での測定をする。


サーバー指定


  • speedtest-cliで測定可能なサーバーリストから、直接サーバーIDを指定しての測定も可能。


共有画像の出力


  • 測定結果を共有する際に、画像URLとして出力してくれるため、容易な結果連携が可能。


結果


  • 下記の基本コマンドを入力すると、自動で近辺のサーバーに接続して、速度を測定できる。

test.png


  • また、速度結果に加えて、オプション指定で共有可能な画像URLを出力してくれる。

test2.png

hist.png


環境


  • Amazon Linux 2

  • speedtest-cliは、Python(pip,easy_install)やcurl等のインストールにも対応しているため、MacやWindowsでも可能。


インストール


Python(pip)でのインストール


  • Pythonのパッケージ管理ツールであるpipを利用してのインストールは、下記のコマンドをうつ。

$ sudo pip install speedtest-cli


Python(easy_install)でのインストール


  • Pythonのパッケージ管理ツールであるeasy_installを利用してのインストールは、下記のコマンドをうつ。

$ sudo easy_install speedtest-cli


curlでのインストール


  • curlを利用して直接ダウンロードしてくるには、下記のコマンドをうつ。

$ curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py

$ chmod +x speedtest-cli


その他でのインストール


  • 上記以外での方法のインストール方法は、こちらを参照。


インストール確認


  • 上記の方法でのインストールが完了したら、下記のコマンドをうち、speedtest-cliが利用可能か確認する。

# バージョン確認

$ speedtest-cli --version


基本操作一覧


  • 基本操作は、下記の一覧のように行う。

内容
コマンド

基本測定
speedtest-cli

ダウンロード測定をスキップした測定
アップロードテストでの測定
speedtest-cli --no-download

アップロード測定をスキップした測定
ダウンロードテストでの測定
speedtest-cli --no-upload

結果をバイト単位で出力する測定
※通常はビット単位

speedtest-cli --no-upload

共有画像URLも出力する測定
speedtest-cli --share

CSV形式での結果出力測定
詳細測定はスキップ

speedtest-cli --csv

JSON形式での結果出力測定
詳細測定はスキップ

speedtest-cli --json

接続サーバー一覧出力
※距離が近い順で並べられている。

speedtest-cli --list
※単体で行うと、膨大な出力結果になる。
そのため、grep Japan等で項目を絞る。

サーバー指定での測定

speedtest-cli --server サーバーID
※サーバーIDは、上記のspeedtest-cli --listで表示されるIDを指す。

HTTPS接続での測定
speedtest-cli --secure

バージョン確認
sppedtest-cli --version


操作例


  • 下記、いくつかの基本操作例。


基本測定と共有画像URL出力測定

# 基本測定

$ speedtest-cli

Retrieving speedtest.net configuration...
Testing from XXXXX
Retrieving speedtest.net server list...
Selecting best server based on ping...
Hosted by Consolidated XXXXX
Testing download speed................................................................................
Download: 364.06 Mbit/s
Testing upload speed................................................................................................
Upload: 355.05 Mbit/s

# 共有画像URL出力測定
$ speedtest-cli --share

・・・・・・・
Download: 377.33 Mbit/s
Testing upload speed................................................................................................
Upload: 294.77 Mbit/s
Share results: http://www.speedtest.net/result/XXXXX.png


CSVやJSON形式出力

# CSV出力

$ speedtest-cli --csv

7168,Time Warner Cable,"XXXXXX, XXXX",2019-07-31T12:09:42.XXXXX,2.XXXXXX,27.117,XXXXXX.XXXXXX,XXXXXX.XXXXXX,,XXXXXX

# JSON出力
# ※JSON整形コマンド「jq」との併用も可能。
$ speedtest-cli --json | jq

{
"client": {
"rating": "0",
"loggedin": "0",
"isprating": "3.7",
"ispdlavg": "0",
"ip": "XXXXXX",
・・・・・・
}
}


サーバー指定での測定

# 接続先サーバー一覧(日本)の確認

# ※出力結果の一番左の「XXXXX)」のXXX部分がサーバーID
$ speedtest-cli --list | grep Japan

XXXXX) Allied Telesis Capital Corporation (Misawa, Japan) [XXXX km]
XXXX) SoftEther Corporation (Tsukuba, Japan) [XXX km]
XXX) IPA CyberLab (Bunkyo, Japan) [XXXX km]
XXX) OPEN Project (via 20G SINET) (Tokyo, Japan) [XXXX km]
XXXX) GLBB Japan (Tokyo, Japan) [XXXX km]
XXX) i3D.net (Tokyo, Japan) [XXXX km]
XXXX) Rakuten Mobile , Inc (Tokyo, Japan) [XXXX km]

# サーバーID指定での測定
# ※出力結果のHostedが指定サーバーへ変更していることを確認。
$ speedtest-cli --server サーバーID

Retrieving speedtest.net server list...
Retrieving information for the selected server...
Hosted by XXXX


まとめ


  • 今回は速度測定ということで、滅多に無い機会であるこの状況のせいか、終始高揚状態になりながら、記事を書く。

  • 「他者との比較での面白さ」という測定系の最大利点の、代替を必死に探索。

  • 通信系ツールにときめきを見出したため、次回も同様のツールを試してみることにしよう。


参考