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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
chwhsen 发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式 IP:–河南–鹤壁 联通
之前我们你已经说过了led管控机制% o# o, o+ y; z; o4 B; F
聊一聊x3p的LED控制机制5 [: o8 Y1 |9 {2 M" J: M! k
和用led来显示硬盘温度
/ a* n$ t; K8 v  T% o让你的RGB灯来指示系统温度
) l- |) a* P! }1 z4 L现在我们可以进一步让led来显示系统网速,且往下看% i  o. I! a3 B$ F$ J
需要用到一个python脚本来获取系统的联网状态以及各个io状态  M) ^& x5 u7 P. a/ ]
  1. import psutil
    . [% O- z, d+ M' Y# Z4 j" z
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的0 S. N( ~1 H/ L7 G) _
  1. {5 d9 J# W! g* W; ^+ G, r) {
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),6 t3 p  t& }1 T7 S0 V& `
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    + D+ q1 I' V8 z7 d
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ) X# c' E0 P- j2 t
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),9 M+ ]% S$ _1 _7 L- j' q8 O6 ]5 i0 \' j
  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* c' E# c3 @% o) p8 N$ q1 t! O
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)+ O3 c1 Q! J9 L- Y8 e
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
5 o$ g: W* [& B( n8 |. L* F 批注 2019-10-06 120535.png
. }0 K0 G9 c7 ?6 ]3 q( h3 y- `1 w' c+ p因为网速差别实在太大,所以我用了分级显示的方案:4 i; }9 c$ |% C7 u, v1 B6 X! ^
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯4 w0 k; q3 K: T3 T0 O: {6 W6 Y
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯- [+ f8 s- s0 Y# e8 B! v
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
" }% X& y. B  W7 R# h
  1. net_led_dn() {6 l1 g* i5 s5 U3 s: y* H  w$ J
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    & N, R7 {. h7 L- N7 D& g/ Y
  3.     new_rtx=$(cat /root/new.rtx)
    # ^6 S# @/ N* P9 Q
  4.     old_rtx=$(cat /root/rtx.log)
    / T; s2 I* m. ~. m0 T
  5.     rtx=$(expr $new_rtx - $old_rtx). W6 s' X, ^5 }  E' i8 Q
  6.     echo $rtx% ^  u* g- G0 h/ f: v$ Z
  7.     if [ $rtx -lt 1024 ]; then3 l" ~, F5 i' k
  8.                                                                                                                                                                                               ( ^- [" ]) E* N- e
  9.         rtx_led=$(expr $rtx / 4)4 w3 S% l, Z! r) L
  10.                                                                                                                                                                                              
    " I, B/ C% ?) O, o
  11.         set_led c1 $rtx_led 0
    7 w; B* ?) s4 J0 {: d
  12.         set_led c2 0 0: F! M' W9 j% x0 i& J+ H/ |
  13.         set_led c3 0 08 @8 i. D8 @( L% n" p
  14.                                                                                                                                                                                              
    ! j% \5 B: h% M6 u
  15.     elif [ $rtx -lt 1048576 ]; then
    ! O1 W: \  ]% E/ V
  16.         rtx_led=$(expr $rtx / 4096)
    ( {$ k& A- q* o& C# _( y% P
  17.         set_led c1 0 09 E. C- A" K  \* c- n- }
  18.         set_led c2 $rtx_led 0! M3 y& y" f! J
  19.         set_led c3 0 0  |4 P& f& a# H, l; o/ W
  20.     elif [ $rtx -lt 1073741824 ]; then
    2 X& \' L; M5 ~: v6 H
  21.         rtx_led=$(expr $rtx / 4194304)" {% u0 d1 @, l/ e
  22.         set_led c1 0 0! H: ]5 i  \/ Q* F1 C
  23.         set_led c2 0 08 m  Y+ z+ `5 m. S
  24.         set_led c3 $rtx_led 08 r  a. b6 c9 }( F. T0 _( M
  25.     fi
    7 C7 P7 t; M1 V; ^
  26.     echo $new_rtx >/root/rtx.log
    " R3 @# {* T' u
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。3 X! `5 k. k' a- ]( w4 y, V
下面是完整脚本,看附件吧。
6 M! r( Z3 e0 @5 g, M: t  m一共有五个文件; j5 j4 f& i# }5 \' y" ?% ~( M
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换: B1 Y; P/ t4 U! O5 f
  2. netspeed.py                 #放在root下
    % F& Q! {& {5 N( H' C$ x& Y, M" P
  3. new.rt                         #放在root下
    8 d3 c! R7 V0 D  J# O
  4. mew.rtx                       #放在root下
      _5 W- d9 v+ l) p% F' T
  5. rtx                              #放在root下
复制代码

; K! _( ?; X2 B- h1 X  Q
( ]% d  f5 x! K8 w/ C led_control.zip (1015 Bytes, 下载次数: 114)
/ U5 G! V: `* b: V/ A# J9 h解压密码(刮刮乐):chwhsen! A5 B; A  N" \& C

3 Y1 k2 H9 r; \# w) G# w& @
1 V/ T: e/ K- @

) h5 P/ ?, q" V. D) W0 ~

评分

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

查看全部评分

8

主题

50

回帖

320

积分

中级渣柚V1

积分
320
zsyg 发表于 2019-10-6 12:51:07 | 显示全部楼层 IP:–广西 移动/数据上网公共出口
谢谢分享

4

主题

767

回帖

3722

积分

实力垃圾佬

积分
3722
kpxx 发表于 2019-10-6 13:27:51 | 显示全部楼层 IP:–广东–江门 电信
好教程,谢谢分享,

27

主题

133

回帖

408

积分

中级渣柚V1

积分
408
47823439 发表于 2019-10-6 13:42:40 | 显示全部楼层 IP:–河南–郑州 联通
厉害了!!!!1

1

主题

5

回帖

45

积分

初级渣柚V1

积分
45
逆水三千 发表于 2019-10-7 22:12:17 | 显示全部楼层 IP:–天津–天津 联通
佩服超级厉害了

12

主题

157

回帖

470

积分

中级渣柚V1

积分
470
起司 发表于 2019-10-7 22:57:46 来自手机 | 显示全部楼层 IP:–山东–东营 联通
感谢分享

3

主题

72

回帖

663

积分

中级渣柚V2

积分
663
Tate 发表于 2019-10-7 23:15:48 | 显示全部楼层 IP:–广东–珠海 电信
感谢分享。先收藏了

42

主题

396

回帖

2189

积分

中级渣柚V3

积分
2189
tiandap 发表于 2019-10-8 07:39:56 | 显示全部楼层 IP:–天津–天津 联通
厉害了!

4

主题

40

回帖

243

积分

中级渣柚V1

积分
243
ziyouchidu 发表于 2019-10-8 08:23:32 来自手机 | 显示全部楼层 IP:–山东 电信数据上网公共出口
牛掰牛掰,厉害厉害
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-5-30 03:08 , Processed in 0.078371 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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