找回密码
 立即注册
查看: 24942|回复: 161

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制
. Q- _$ n, |! @7 g, A+ | 聊一聊x3p的LED控制机制* b  Y0 \" P- g
和用led来显示硬盘温度
& x+ P1 H! @) Q6 j1 D) l6 z让你的RGB灯来指示系统温度
4 w0 w: n$ w- j# E/ T: `现在我们可以进一步让led来显示系统网速,且往下看- `, o3 n2 Y0 Z' M5 F1 ^
需要用到一个python脚本来获取系统的联网状态以及各个io状态% |7 G, S* S% t$ ]( \
  1. import psutil
    0 @% ]! l( t; G# r
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的7 j8 W& L: b2 G/ D
  1. {
    " D0 A+ Z# Q6 G+ f1 M
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),  t3 n6 I5 h! |+ g
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ; c/ o5 W: A3 x8 N
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    + W5 d3 S+ L0 x0 T4 j7 n  d
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    9 B) S) W6 {  r
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),. s& Q# p6 b+ o4 F
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)' A; p3 d: ]- ^/ [9 ]
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
3 ^1 B" @' d& V/ k% ]- e 批注 2019-10-06 120535.png % y3 ?9 d" }2 j7 B# J
因为网速差别实在太大,所以我用了分级显示的方案:8 y# X. e4 S( p" ~; K9 q
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯" l' ?$ M4 y" v2 w3 m: B6 o
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯1 s: I: Z+ |* t: U# r8 J* ~
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
0 v7 ^# }8 G. H/ h
  1. net_led_dn() {
    / @: P, {6 O& B- g2 P" c( A$ I- [
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    : p8 Y: {7 Z3 D
  3.     new_rtx=$(cat /root/new.rtx)
    8 O9 M( i& `& u5 ]% z" O
  4.     old_rtx=$(cat /root/rtx.log)& m. U9 H4 D" U* b4 t' G6 j
  5.     rtx=$(expr $new_rtx - $old_rtx)  A8 H* B( v- h
  6.     echo $rtx7 S* V6 N/ ]8 W: q' k( C
  7.     if [ $rtx -lt 1024 ]; then8 P' K6 |2 e1 R1 A) J8 g0 z
  8.                                                                                                                                                                                               7 |" L  N8 v2 O2 {
  9.         rtx_led=$(expr $rtx / 4)
    " B" O# ^0 U7 u
  10.                                                                                                                                                                                               : k# Z& _5 o  P% N' p$ F
  11.         set_led c1 $rtx_led 00 G1 s9 g- s% z6 q
  12.         set_led c2 0 0& P, O( h* t/ U; `; o& L  \
  13.         set_led c3 0 03 l. V& \1 |. k; k3 }/ U8 l4 R
  14.                                                                                                                                                                                               1 h- q' ]" T& w6 v+ Q6 f5 ~3 U$ k
  15.     elif [ $rtx -lt 1048576 ]; then( u. }  O4 {2 b7 g5 R
  16.         rtx_led=$(expr $rtx / 4096)
    ( o- r' r1 }) I* Q: H
  17.         set_led c1 0 03 A& O5 n$ u" C" Q* K  h5 w
  18.         set_led c2 $rtx_led 0
    0 f6 Y! l- @) w! T9 S
  19.         set_led c3 0 0
    ! ]0 X: o. ~% K0 c0 |, U) h
  20.     elif [ $rtx -lt 1073741824 ]; then
    2 {3 U- z7 J" z3 s2 w  p6 I, n
  21.         rtx_led=$(expr $rtx / 4194304)1 I0 m; P, j$ i7 u; `
  22.         set_led c1 0 0; D6 ~+ T2 X* c2 a) B
  23.         set_led c2 0 0; p* p, G6 j  S1 z8 f; a1 @$ |$ m
  24.         set_led c3 $rtx_led 0
    " m/ O! \: t: G) L. @
  25.     fi
    . s. Y* L2 H, s% y5 V' a
  26.     echo $new_rtx >/root/rtx.log
    * t7 K( T% s0 l( I9 M* i  w
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。2 F, ^! Z, n( R( D. i& |
下面是完整脚本,看附件吧。# w* y- q/ _- k
一共有五个文件
9 w1 _  ^7 t  K7 A
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换, t# G+ O! C* U! i+ D" a
  2. netspeed.py                 #放在root下 $ C2 o. g3 J) h/ b( {- I$ j
  3. new.rt                         #放在root下
    ; z2 y6 @* V( g+ r" I0 {
  4. mew.rtx                       #放在root下- `/ o1 i# I/ N7 U5 u
  5. rtx                              #放在root下
复制代码

9 ?1 d! m/ @$ R/ m0 q; u
' l3 j( b& w! W2 Q# N3 q led_control.zip (1015 Bytes, 下载次数: 114)
! g/ D5 y( _, A$ V* `- V解压密码(刮刮乐):chwhsen
& ]7 {0 c5 X( F9 u# B
1 I4 O, j, g3 `2 u, N# ^- R# f7 H9 ~+ G* X- N# \- j
  E2 z6 Z/ S# {+ s+ G

评分

参与人数 3渣金 +35 经验值 +65 收起 理由
jakc + 10 + 15 很给力!
yzfdy + 10 + 10 很给力!
xxx + 15 + 40 很给力!

查看全部评分

8

主题

50

回帖

320

积分

中级渣柚V1

积分
320
发表于 2019-10-6 12:51:07 | 显示全部楼层
谢谢分享

4

主题

764

回帖

2795

积分

中级渣柚V3

积分
2795
发表于 2019-10-6 13:27:51 | 显示全部楼层
好教程,谢谢分享,

27

主题

133

回帖

408

积分

中级渣柚V1

积分
408
发表于 2019-10-6 13:42:40 | 显示全部楼层
厉害了!!!!1

1

主题

5

回帖

45

积分

初级渣柚V1

积分
45
发表于 2019-10-7 22:12:17 | 显示全部楼层
佩服超级厉害了

12

主题

157

回帖

470

积分

中级渣柚V1

积分
470
发表于 2019-10-7 22:57:46 来自手机 | 显示全部楼层
感谢分享

3

主题

72

回帖

663

积分

中级渣柚V2

积分
663
发表于 2019-10-7 23:15:48 | 显示全部楼层
感谢分享。先收藏了

42

主题

394

回帖

2049

积分

中级渣柚V3

积分
2049
发表于 2019-10-8 07:39:56 | 显示全部楼层
厉害了!

4

主题

40

回帖

243

积分

中级渣柚V1

积分
243
发表于 2019-10-8 08:23:32 来自手机 | 显示全部楼层
牛掰牛掰,厉害厉害
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|矿渣社区 ( 黔ICP备2024020525号-1 )

GMT+8, 2025-7-2 09:06 , Processed in 0.076209 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表