You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ruby脚本中为wash生成的WiFi数据按dBm添加颜色显示

给WiFi接入点输出添加颜色标识

要实现根据dBm区间为输出添加颜色,你可以利用终端的ANSI转义序列来控制文本颜色。以下是修改后的代码:

def select_point_to_crack(access_points, wlan_iface_name)
  # 按功率排序(默认升序会把信号最弱的放前面,加reverse可让信号最好的排首位)
  access_points = access_points.sort_by { |access_point| access_point[:power] }.reverse
  puts "Enter a number (between 0 y #{access_points.length - 1}):"
  
  access_points.each_with_index do |access_point, idx|
    power = access_point[:power].to_i
    # 根据dBm区间匹配对应颜色
    color = case power
            when 0..-60 then "\e[32m"  # 绿色:信号优秀
            when -61..-80 then "\e[33m" # 橙色:信号良好
            when -81..-100 then "\e[31m" # 红色:信号较差
            else "\e[0m" # 默认重置颜色
            end
    reset_color = "\e[0m"
    
    # 仅给功率值添加颜色,也可修改为整行变色
    puts "#{idx}. #{access_point[:essid]} #{access_point[:vendor]} #{access_point[:bssid]} #{color}#{access_point[:power]}dB#{reset_color} Canal: #{access_point[:channel]}"
  end
end

关键细节说明:

  • ANSI颜色控制:\e[32m对应绿色、\e[33m对应橙色、\e[31m对应红色,\e[0m用于重置颜色,避免后续文本继承当前颜色。
  • 排序逻辑:原代码的sort_by是升序排列,会将信号最弱(-100左右)的接入点放在最前面。如果希望优先展示信号好的设备,添加.reverse反转排序结果即可。
  • 区间匹配:Ruby的范围会自动适配数值方向,0..-60实际匹配的是-60到0之间的所有整数,完全覆盖需求中的区间。
  • 整行变色方案:若需要整行根据功率显示对应颜色,只需调整输出语句为:
    puts "#{color}#{idx}. #{access_point[:essid]} #{access_point[:vendor]} #{access_point[:bssid]} #{access_point[:power]}dB Canal: #{access_point[:channel]}#{reset_color}"
    

内容的提问来源于stack exchange,提问作者Damien

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 08:45:28