私は帯域幅使用量を読み、ifstat
毎秒ダウンロードとアップロードを印刷します。STDOUT
ifstat -i wlp7s0
wlp7s0
KB/s in KB/s out
1390.13 81.20
1039.14 74.05
1810.63 102.08
865.60 183.15
1272.91 274.19
1174.00 400.04
bashスクリプトでコマンドを実行し、値が特定の値より小さい場合、どのようにifstat
値を変数として読み取ることができますか?if statement
例えば、
if [ $in -lt 100 ] && [ $out -lt 100 ]
then
echo Network is slow.
else
echo Network is fast.
fi
毎秒確認するために出力を変数としてifstat
読み取るには?$in
$out
if statement
ベストアンサー1
ネットワーク速度は整数ではないため、数値を計算するには、他のツール(awkなど)でそれを補完する必要があります。努力する:
ifstat -ni wlp7s0 | awk 'NR>2{if ($1+0<100 && $2+0<100) print "Network is slow."; else print "Network is fast."}'
または、複数行にわたってコマンドを分散したい場合:
ifstat -ni wlp7s0 | awk '
NR>2{
if ($1+0<100 && $2+0<100)
print "Network is slow."
else
print "Network is fast."
}'
どのように動作しますか?
このオプションは、ヘッダー行の定期的な反復を抑制する-n
ために追加されました。ifstat
NR>2{...}
NR
行番号が2より大きい場合にのみ、中括弧で囲まれたコマンドを処理するようにawkに指示します。これはヘッダー行をスキップする効果があります。
if ($1+0<100 && $2+0<100)
最初のフィールド$
と2番目のフィールドの両方が$2
100未満であることをテストします。未満の場合はprint "Network is slow."
実行します。そうでない場合はprint "Network is fast."
実行してください。