MTU Changer
MTUを任意の値で連続して増減、あるいは任意の値が代入できます。目的は、ネットワークを利用したゲームで発生するラグとMTU値の関係性をチェックするものです。
環境 :LMDE 4
実行画面
実行には、管理者権限(sudo
)が必要になります。引数により二つのモードがあります。一つは、'q'
を入力するまで設定した値の間隔で増減を繰り返すもの。もう一つは、任意の値を代入するものです。引数を設定せずに実行すると、簡単な使い方が表示されます。
$ sudo ./mtu_changer.sh
$ sudo ./mtu_changer [+|-|=] [value]
$ sudo ./mtu_changer.sh - 30
The Current mtu is 1500.
decliment by 30. OK: any key | Quit : q
The Current mtu is 1500
The Current mtu is 1470
The Current mtu is 1440
The Current mtu is 1410
The Current mtu is 1380
$ sudo ./mtu_changer.sh + 75
The Current mtu is 1380.
decliment by 75. OK: any key | Quit : q
The Current mtu is 1455
The Current mtu is 1530
The Current mtu is 1605
$ sudo ./mtu_changer.sh = 1500
The Current mtu is 1605.
assignment by 1500. OK: any key | Quit : q
The Current mtu is 1500
mtu_changerのコード
GNU/Linux用に書いてあります。macOSやBSD/UNIXでは動かすのは修正が必要になります。定数のdeclare -r IF=
は、筆者の環境では自動で取得できましたが、他環境では正常に動作するか分かりません。動作しない場合は、定数IF
の1行上でコメントアウトしてあるように、インターフェース名を直接記述してください。
#!/bin/bash
#declare -r IF=wlp1s0 #Any Interface name
declare -r IF=$(ifconfig | grep 'UP,BROADCAST' | grep -o '^.*:') #Any Interface name
declare -i mtu=$(ifconfig | grep "${IF%:}" | grep -o '[0-9]*$') #Current mtu
declare -r SIGN=$1 #Any sign (+|-|=)
declare -ri STEP=$2 #Any value
fn_main()
{
case $1 in
+)
fn_calc_mtu incliment
;;
-)
fn_calc_mtu decliment
;;
=)
fn_calc_mtu assignment
;;
*)
echo "The current mtu is $mtu."
echo "\$ sudo $0 [+|-|=] [value]"
;;
esac
}
fn_calc_mtu()
{
show_argname $1
while :
do
case $1 in
incliment)
((mtu += STEP))
fn_set_mtu
waiting_input
;;
decliment)
((mtu -= STEP))
fn_set_mtu
waiting_input
;;
assignment)
((mtu = STEP))
fn_set_mtu
exit 0
;;
esac
done
}
fn_show_argname()
{
echo "The current mtu is $mtu."
echo "$1 by $STEP. OK: any key | Quit: q"
fn_waiting_input
}
fn_set_mtu()
{
ifconfig $IF mtu $mtu
echo "The current mtu is $mtu"
}
fn_waiting_input()
{
read -sn 1 ans
if [[ "$ans" = [Qq] ]]; then
exit 0
fi
}
fn_main $1
# HASE Kazuaki <https://psipsina.jp>
更新情報
- 作成日:2020-07-03
- 作成日:2022-05-02