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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制6 z' I1 m$ v3 U2 u: a. B7 v3 `' l
聊一聊x3p的LED控制机制
  e% L4 ]8 y, G" G3 c和用led来显示硬盘温度
) t5 W& V  x1 f" ]让你的RGB灯来指示系统温度
) \5 |0 w3 {/ m! t现在我们可以进一步让led来显示系统网速,且往下看2 H+ E$ ~) V2 |/ J& W. e2 f: f
需要用到一个python脚本来获取系统的联网状态以及各个io状态
' F' O$ V+ i7 ]4 o
  1. import psutil
    . j+ P5 h! b& b; {
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的( Y5 _, |1 k1 F$ b. f, I1 V
  1. {
    " p8 w" C! [/ ?' d7 Y% T
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    % s% j6 _. N# E9 D* x" f$ }1 s
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    8 R9 I9 ?  V: {- Y  E
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    9 v' K4 f) ~7 t+ t. a0 r/ M
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),6 }6 W' I; {" }; b7 _7 L
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),: ?2 ]# t/ M6 B- S+ m
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0): j" J% {7 ?2 ]) X! U/ \' c9 V" c
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
  m' ?: N, @2 m; @8 v6 ? 批注 2019-10-06 120535.png
2 H! Q3 D. P( O3 s5 U  n; A因为网速差别实在太大,所以我用了分级显示的方案:/ P4 N6 n7 p, `) @. o
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯" a4 l( r7 V" Z0 l' b
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯. R; Z/ b2 ]# f( ~# M& r' X
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。  Y: J. G2 E: r- @; F
  1. net_led_dn() {0 K' n& A) O* W7 R# F- i# H8 L
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    ; p4 y' z- G$ J$ h
  3.     new_rtx=$(cat /root/new.rtx)
    3 M4 d/ T5 U& R" i8 z) V# O
  4.     old_rtx=$(cat /root/rtx.log)
    * s8 V( ]0 E, J$ o; ~3 ]
  5.     rtx=$(expr $new_rtx - $old_rtx)) \3 n0 b& _1 o( T* m; e" ^
  6.     echo $rtx
    & G- L, z% S3 p  n9 J' A# D
  7.     if [ $rtx -lt 1024 ]; then
    9 a6 q8 L! c' C, Q
  8.                                                                                                                                                                                              
    7 h1 u% v2 b/ N0 c$ U3 A
  9.         rtx_led=$(expr $rtx / 4)
    ( ?, P  n7 m8 d
  10.                                                                                                                                                                                              
    & |) B$ b' W: D6 l; T0 o( P
  11.         set_led c1 $rtx_led 06 v7 ?, h3 X" m6 Q- R. H2 [7 a
  12.         set_led c2 0 06 T; @, Q5 H  R8 M, ~7 }9 _
  13.         set_led c3 0 05 b3 a( K1 ~, z* W) ~* a& Y
  14.                                                                                                                                                                                              
    $ {4 a2 F; _( j% S  c8 c
  15.     elif [ $rtx -lt 1048576 ]; then
    ! X& K! _, s# Y5 s# Y0 i( B
  16.         rtx_led=$(expr $rtx / 4096)
    6 C  [. e. ?3 J9 o- Z6 o0 h6 P
  17.         set_led c1 0 0: L# H7 ^' N* w4 Q* H0 u& q6 z
  18.         set_led c2 $rtx_led 05 y2 W, t+ J; c1 [. @6 b/ @
  19.         set_led c3 0 0! Z1 a' l8 p9 A  I4 |) `" |
  20.     elif [ $rtx -lt 1073741824 ]; then& o1 _1 r9 U+ C4 w: j4 ~, c
  21.         rtx_led=$(expr $rtx / 4194304)
    - a: G8 G' T# ?% I3 {8 p
  22.         set_led c1 0 0! E% g5 m. B8 b3 c" a. m
  23.         set_led c2 0 09 L* l7 V/ ~3 M# o# \
  24.         set_led c3 $rtx_led 0
    " C: m+ @2 b! X1 H$ [
  25.     fi
    0 Y8 ?  B+ E- z6 D/ E- K
  26.     echo $new_rtx >/root/rtx.log5 z, `" c# u- k+ s2 ^) r$ Z+ H( Y
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。& Z& X& `& i6 Y' |# a
下面是完整脚本,看附件吧。
8 J$ z/ r8 s; y6 Z$ i一共有五个文件8 O4 a  F: q8 r" s! ~3 s* _# g
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换7 B  H4 M% j/ Z7 m5 w: X
  2. netspeed.py                 #放在root下 - F$ H, E9 h+ U! a. z
  3. new.rt                         #放在root下0 s" V  ?/ U2 F5 ]8 p
  4. mew.rtx                       #放在root下
    : f; g1 Q2 G$ l
  5. rtx                              #放在root下
复制代码
6 e0 Y" ?  H. I3 X9 V6 |* @. W1 s

* u- k5 b6 X2 @0 v- a- _ led_control.zip (1015 Bytes, 下载次数: 114)
  Q0 b- H9 \* K5 W5 t' b- B' z* b3 J解压密码(刮刮乐):chwhsen* @: M0 e' ~  b- z; ~
' V+ g. G2 A, v, f. J0 Z

' Q, S6 ?  L5 v! N

0 K9 X) W# G# t- g  {/ i

评分

参与人数 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

回帖

2803

积分

中级渣柚V3

积分
2803
发表于 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

回帖

2051

积分

中级渣柚V3

积分
2051
发表于 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-11 08:27 , Processed in 0.412532 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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