首页 > 解决方案 > 从 iwconfig 获取以 % 为单位的信号质量

问题描述

第一篇寻求帮助....我正在尝试从 iwconfig 命令中获取以 % 为单位的信号质量...我从这个命令开始,但它返回文本“信号值”

iwconfig wlan0 | grep Quality | awk -F '=|/|=[  ]' '{print $2,$3}'

70 70  Signal level

我只想得到“100%”的结果

wlan0     IEEE 802.11  ESSID:"SKYNET"
      Mode:Managed  Frequency:2.412 GHz  Access Point: AC:84:C9:CD:79:E0
      Bit Rate=72.2 Mb/s   Tx-Power=31 dBm
      Retry short limit:7   RTS thr:off   Fragment thr:off
      Power Management:on
      Link Quality=68/70  Signal level=-42 dBm
      Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
      Tx excessive retries:51  Invalid misc:0   Missed beacon:0

标签: awk

解决方案


以下是 (68/70)*100。使用split() 68 存储在,a[2]而 70 存储在a[3]

iwconfig wlan0|awk '/Link Quality/{split($2,a,"=|/");print (a[2]/a[3])*100"%"}'
97.1429%

对于整数结果:

iwconfig wlan0|awk '/Link Quality/{split($2,a,"=|/");print int((a[2]/a[3])*100)"%"}'
97%

或者只是使用printf

iwconfig wlan0|awk '/Link Quality/{split($2,a,"=|/");printf "%d%s\n", (a[2]/a[3])*100, "%"}'
97%

PS:使用有问题的 OP 提供的输出进行测试。


推荐阅读