chwhsen 发表于 2019-10-6 12:23:16

x3p猫盘的led控制系统之让led灯显示网速

之前我们你已经说过了led管控机制
聊一聊x3p的LED控制机制
和用led来显示硬盘温度
让你的RGB灯来指示系统温度
现在我们可以进一步让led来显示系统网速,且往下看
需要用到一个python脚本来获取系统的联网状态以及各个io状态
import psutil
print(psutil.net_io_counters(pernic=True))输出结果是下面的
{
        'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
        'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
        'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
        'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
        'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
        'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
}有了数据就能够处理数据转化为网速了。

因为网速差别实在太大,所以我用了分级显示的方案:
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
net_led_dn() {
    python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    new_rtx=$(cat /root/new.rtx)
    old_rtx=$(cat /root/rtx.log)
    rtx=$(expr $new_rtx - $old_rtx)
    echo $rtx
    if [ $rtx -lt 1024 ]; then
                                                                                                                                                                                             
      rtx_led=$(expr $rtx / 4)
                                                                                                                                                                                             
      set_led c1 $rtx_led 0
      set_led c2 0 0
      set_led c3 0 0
                                                                                                                                                                                             
    elif [ $rtx -lt 1048576 ]; then
      rtx_led=$(expr $rtx / 4096)
      set_led c1 0 0
      set_led c2 $rtx_led 0
      set_led c3 0 0
    elif [ $rtx -lt 1073741824 ]; then
      rtx_led=$(expr $rtx / 4194304)
      set_led c1 0 0
      set_led c2 0 0
      set_led c3 $rtx_led 0
    fi
    echo $new_rtx >/root/rtx.log
}这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
下面是完整脚本,看附件吧。
一共有五个文件
ledstatus.sh                  #放在/opt/bin文件夹下替换
netspeed.py               #放在root下
new.rt                         #放在root下
mew.rtx                     #放在root下
rtx                              #放在root下


解压密码(刮刮乐):chwhsen



zsyg 发表于 2019-10-6 12:51:07

谢谢分享

kpxx 发表于 2019-10-6 13:27:51

好教程,谢谢分享,

47823439 发表于 2019-10-6 13:42:40

厉害了!!!!1

逆水三千 发表于 2019-10-7 22:12:17

佩服超级厉害了

起司 发表于 2019-10-7 22:57:46

感谢分享

Tate 发表于 2019-10-7 23:15:48

感谢分享。先收藏了

tiandap 发表于 2019-10-8 07:39:56

厉害了!

ziyouchidu 发表于 2019-10-8 08:23:32

牛掰牛掰,厉害厉害
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: x3p猫盘的led控制系统之让led灯显示网速