我在BASH脚本中使用速度测试 CLI,如果可能的话只使用一行来获取输出。
典型的测速输出:
Speedtest by Ookla
Server: (censored)
ISP: (censored)
Latency: 93.85 ms (222.66 ms jitter)
Download: 85.75 Mbps (data used: 134.8 MB)
Upload: 5.68 Mbps (data used: 6.2 MB) 我想抓住延迟,下载速度,上传速度,和抖动。
Most ideal format:
Download Speed: xx Mbps
Upload Speed: xx Mbps
Latency: xx ms
Jitter: xx ms我当前的测试代码使用了两个浪费的语句:
dl_speed=`speedtest | grep "Download: " | head -2 | tail -1 | awk {'print$2'} | cut -f1 -d:`
ul_speed=`speedtest | grep "Upload: " | head -2 | tail -1 | awk {'print$2'} | cut -f1 -d:`
echo "Download Speed: $dl_speed Mbps"
echo "Upload Speed: $ul_speed Mbps"发布于 2021-12-03 23:17:46
speedtest | tr -d '(:' | \
awk '/Download|Upload/ {print $1 " Speed: ",$2,$3}
/Latency/ {print $1":",$2,$3}
/jitter/ {print "Jitter:",$4,$5}'给出
Latency: 93.85 ms
Jitter: 222.66 ms
Download Speed: 85.75 Mbps
Upload Speed: 5.68 Mbps发布于 2021-12-05 03:00:06
awk '{if ($1 ~ /Download/){print "Download speed: " $2 " mbps"}else{if($1 ~ /Upload/){print "Upload Speed: "$2 " mbps"}else{if($NF ~ /jitter/ && $1 ~ /Latency/){gsub(/\(/,"",$(NF-2));print "Latency :" $2 " ms\n jitter: " $(NF-2)" ms"}}}}' filename
Latency :93.85 ms
jitter: 222.66 ms
Download speed: 85.75 mbps
Upload Speed: 5.68 mbps发布于 2021-12-04 14:46:26
在每个Unix框上使用任何shell中的任何awk,并且只在需要打印它们时使用代码中的数据名称一次,这样您就可以添加额外的prt()语句、修改它们、测试它们和/或重新排序这些或任何其他类似格式的数据,而不必对代码进行任何其他更改:
$ speedtest | awk '
{
gsub(/[:()]/,"")
tag2val[tolower($1)] = $2 " " $3
tag2val[tolower($6)] = $4 " " $5
}
END {
prt("Download Speed")
prt("Upload Speed")
prt("Latency")
prt("Jitter")
}
function prt(name, tag) {
tag = tolower(name)
sub(/ .*/,"",tag)
print name ":" OFS tag2val[tag]
}
'
Download Speed: 85.75 Mbps
Upload Speed: 5.68 Mbps
Latency: 93.85 ms
Jitter: 222.66 mshttps://unix.stackexchange.com/questions/680095
复制相似问题