Linux、macOSなどのUnix環境でネットワーク速度を測定する計測サーバ検索機能付きベンチマーク用シェルスクリプト(バッチ処理プログラム) ~RHEL、CentOS、Fedora、Ubuntu、macOS、Cygwinなどに対応したネットワークスピードテストのベンチマークツール~
以前の下記の記事でLinux、macOSなどのUnix環境でサーバやクライアントの性能を評価する指標の一つであるディスクアクセス速度のベンチマークを行うシェルスクリプト(バッチ処理プログラム)について紹介しました。
今回はディスク速度の他に重要な位置づけである性能評価指標の一つネットワーク速度を計測するシェルスクリプト(バッチ処理プログラム)を備忘として紹介します。
Linux、macOSなどのUnix環境でネットワーク速度を測定する計測サーバ検索機能付きベンチマーク用シェルスクリプト(バッチ処理プログラム) ~RHEL、CentOS、Fedora、Ubuntu、macOS、Cygwinなどに対応したネットワークスピードテストのベンチマークツール~
シェルスクリプト(バッチ処理プログラム)の基本方針としてはgithubで公開されているspeedtest-cliというPythonスクリプトを利用してネットワーク速度を計測します。
計測時に利用するサーバは世界中に点在しているため、自分が計測したいサーバを選択する必要があります。
そのため、今回紹介するシェルスクリプト(バッチ処理プログラム)では計測サーバ検索機能を追加して、自分の居場所や測定先に指定したいロケーションを探しやすくしています。
計測サーバの検索はスクリプトの引数に文字列を記載することで世界中のサーバリストから対象文字列でgrep検索するようになっています。
Linux、macOSなどのUnix環境でネットワーク速度を測定する計測サーバ検索機能付きベンチマーク用シェルスクリプト(バッチ処理プログラム)
具体的な処理の内容としては、指定したスクリプトディレクトリにspeedtest-cliが存在しなければ、githubからspeedtest-cliをダンロードして実行権限を付与します。
次に世界中の計測サーバリストを指定された引数のキーワードで検索(引数無しの場合は「Japan」で検索)し、検索結果を表示します(検索結果が1件のみの場合はそのサーバで即座にネットワーク速度の測定が行われます)。
計測サーバの検索結果から測定したいサーバのID番号を入力するとネットワーク速度の測定が行えます。
[magtranetwork@localhost ~]# vim speedtest-select.sh
#!/bin/bash SCRIPT_DIR=/usr/local/bin if [ ! -f ${SCRIPT_DIR}/speedtest-cli ]; then mkdir -p ${SCRIPT_DIR} cd ${SCRIPT_DIR}/ rm -f ${SCRIPT_DIR}/speedtest-cli curl -Lo speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py fi chmod 755 ${SCRIPT_DIR}/speedtest-cli cd `dirname $0` KEYWORD=$1 if [ "${KEYWORD}" = "" ]; then KEYWORD=Japan fi ${SCRIPT_DIR}/speedtest-cli --list | grep "${KEYWORD}" SERVERS=(`${SCRIPT_DIR}/speedtest-cli --list | grep "${KEYWORD}" | awk '{print $1}' | sed -e 's/)//g'`) if [ ${#SERVERS[@]} -eq 1 ]; then ANS=${SERVERS[0]} elif [ ${#SERVERS[@]} -eq 0 ]; then echo "There is No Search Results." exit 0 else echo "Which server do you want to use? [Input Number]" read ANS fi if [ "${ANS}" = "" ]; then echo "Answer is Nothing. So Use All Servers of the Above." for SERVER in ${SERVERS[@]}; do SERVER_ID=`echo ${SERVER} | awk '{print $1}' | sed -e 's/)//g'` echo "[`date +"%Y/%m/%d %H:%M:%S"`]Start Speed Test by ${SERVER}" ${SCRIPT_DIR}/speedtest-cli --server ${SERVER_ID} echo "[`date +"%Y/%m/%d %H:%M:%S"`]End Speed Test by ${SERVER}" done else echo "[`date +"%Y/%m/%d %H:%M:%S"`]Start Speed Test by ${ANS}" ${SCRIPT_DIR}/speedtest-cli --server ${ANS} echo "[`date +"%Y/%m/%d %H:%M:%S"`]End Speed Test by ${ANS}" fi
Linux、macOSなどのUnix環境でネットワーク速度を測定する計測サーバ検索機能付きベンチマーク用シェルスクリプト(バッチ処理プログラム)の実行例
計測サーバを検索するキーワードを引数にして実行することで、計測サーバを指定したキーワードで検索でき、サーバのIDを入力することで対象のサーバでネットワーク速度の計測ができます。
引数が未指定の場合は「Japan」のキーワードで計測サーバリストを検索した結果が表示されます。
[magtranetwork@localhost ~]# chmod 755 speedtest-select.sh [magtranetwork@localhost ~]# ./speedtest-select.sh % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 47228 100 47228 0 0 217k 0 --:--:-- --:--:-- --:--:-- 217k 8842) kimagure (Sapporo, Japan) [7741.91 km] 6405) Allied Telesis Capital Corporation (Misawa, Japan) [7884.27 km] 8193) kamiari (Sendai, Japan) [8069.60 km] 7139) SoftEther Corporation (Tsukuba, Japan) [8269.45 km] 8348) Foxcore-LS (Sodegaura, Japan) [8295.79 km] 6492) denpa893 (Sumida, Japan) [8309.26 km] 12162) Indegene (Tokyo, Japan) [8320.15 km] 7510) ASEINet (Tokyo, Japan) [8320.15 km] 6508) at2wn (Yokohama, Japan) [8338.92 km] 6087) Allied Telesis Capital Corporation (Fussa-shi, Japan) [8342.63 km] 12177) OrukaNet (Yamato, Japan) [8349.39 km] 8407) Allied Telesis Capital Corporation (Sagamihara, Japan) [8350.18 km] 6766) JAIST(ino-lab) (Nomi, Japan) [8498.90 km] 6368) gatolabo (Maibara, Japan) [8592.34 km] 11385) buriitto (Suzuka, Japan) [8599.63 km] 11908) Jun(skjun.net) (Katano, Japan) [8671.66 km] 8832) OMN (Ikeda, Japan) [8687.63 km] 6476) rxy (individual) (Osaka, Japan) [8690.91 km] 6477) satoweb (Sakai, Japan) [8700.48 km] 7976) denpa893 (Hikari, Japan) [8997.46 km] 811) GLBB Japan KK (Chatan, Japan) [9855.57 km] 6581) haza (Haebaru, Japan) [9867.71 km] Which server do you want to use? [Input Number] 6766 [2017/05/18 00:00:06]Start Speed Test by 6766 Retrieving speedtest.net configuration... Testing from ... Retrieving speedtest.net server list... Selecting best server based on ping... Hosted by JAIST(ino-lab) (Nomi) [8498.90 km]: 45.322 ms Testing download speed................................................................................ Download: 1085.45 Mbit/s Testing upload speed................................................................................................ Upload: 798.01 Mbit/s [2017/05/18 00:00:12]End Speed Test by 6766 [magtranetwork@localhost ~]# [magtranetwork@localhost ~]# ./speedtest-select.sh Tokyo % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 47228 100 47228 0 0 200k 0 --:--:-- --:--:-- --:--:-- 201k 12162) Indegene (Tokyo, Japan) [8320.15 km] 7510) ASEINet (Tokyo, Japan) [8320.15 km] Which server do you want to use? [Input Number] 7510 [2017/05/18 00:00:39]Start Speed Test by 7510 Retrieving speedtest.net configuration... Testing from ... Retrieving speedtest.net server list... Selecting best server based on ping... Hosted by ASEINet (Tokyo) [8320.15 km]: 90.032 ms Testing download speed................................................................................ Download: 226.20 Mbit/s Testing upload speed................................................................................................ Upload: 181.47 Mbit/s [2017/05/18 00:00:56]End Speed Test by 7510Reference: Tech Blog citing related sources