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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制; I1 }- j8 O0 i' k4 B- C
聊一聊x3p的LED控制机制
8 j5 I( s$ n7 O2 M2 E和用led来显示硬盘温度
# A. m6 A2 ]. H/ q2 Y+ F让你的RGB灯来指示系统温度
6 \5 C0 X3 u' v' R& j现在我们可以进一步让led来显示系统网速,且往下看
; Z( Z* C1 E1 h. m需要用到一个python脚本来获取系统的联网状态以及各个io状态
* F* ^% W6 n) a$ \
  1. import psutil% w. `9 E1 @% Z7 Z1 _
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
' g1 n8 p  c8 ^& \
  1. {9 g. x9 o4 ~* j- O
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    % h% k0 y& H$ T' b& p- }+ P
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    , V. w% V( j% Z4 l' m! b( f
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),+ Z; T  v" a3 w
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),5 J% _4 \+ M8 V) D  O- n
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),+ k1 g5 a: Y. |$ ~3 M; B6 h, E
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    # s$ b, n: }7 s# _  v3 q
  8. }
复制代码
有了数据就能够处理数据转化为网速了。6 o; G! }% e/ a5 {4 j
批注 2019-10-06 120535.png
9 L8 W3 a. x" P# @3 |因为网速差别实在太大,所以我用了分级显示的方案:
+ ?' T* M3 M6 [/ ^网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯- v4 _' N5 p% r6 }
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯7 T4 T  R, k* Y! q3 }
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
0 p5 p7 x+ w0 K% W. ~4 R
  1. net_led_dn() {$ m% p. q; k( j
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    - `0 a3 j. N% `. P( s
  3.     new_rtx=$(cat /root/new.rtx)
    * I, d+ q/ t1 U, A8 u
  4.     old_rtx=$(cat /root/rtx.log): G6 M  t9 o. N0 Z7 f% X
  5.     rtx=$(expr $new_rtx - $old_rtx)& \! g/ ~! R# l& o  J) _6 n3 y: K
  6.     echo $rtx# ~  l, v+ a' \# y) k2 X( @
  7.     if [ $rtx -lt 1024 ]; then
    & l1 b" }: P: l
  8.                                                                                                                                                                                              
    8 r8 h, N" Z# ?; w- `# b8 c
  9.         rtx_led=$(expr $rtx / 4)8 m( m5 E$ L+ t1 W6 U, N' S) ^5 K
  10.                                                                                                                                                                                              
    $ ~9 s6 J7 s( h: T, @
  11.         set_led c1 $rtx_led 0
      h' H4 L8 ~+ l) m( d* j
  12.         set_led c2 0 08 Y+ w' m  h! K* h
  13.         set_led c3 0 0% _* \: Z, B! J: o0 B4 [; m: a% Z6 {
  14.                                                                                                                                                                                               ( [+ }3 n& P' m( e' n1 y
  15.     elif [ $rtx -lt 1048576 ]; then. Z) E0 d) y: B* W* W
  16.         rtx_led=$(expr $rtx / 4096)3 L( k* ~8 v( V' h- ^
  17.         set_led c1 0 03 M7 x1 Y8 n, J4 t2 _
  18.         set_led c2 $rtx_led 02 m' o$ R% |4 b$ g' t( Q
  19.         set_led c3 0 08 y- v  w+ S+ p# ~5 h
  20.     elif [ $rtx -lt 1073741824 ]; then
    " c  m. p: \, C; C8 |
  21.         rtx_led=$(expr $rtx / 4194304). p+ j- M: B$ d9 i  R: U. r
  22.         set_led c1 0 0
    ' f* u+ }3 b# G- r
  23.         set_led c2 0 0, W. ^5 ^; F, B  Q- y! Y
  24.         set_led c3 $rtx_led 0
    % n5 A" J2 [, r
  25.     fi, j+ z1 R6 {' X5 w& O2 R
  26.     echo $new_rtx >/root/rtx.log
    - M- t# R/ [/ L5 o8 n2 J
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
) A( V' V6 S7 f" m# o下面是完整脚本,看附件吧。, W" U% i1 W: e$ c! O
一共有五个文件
0 Q4 g1 p: U6 M
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换: x$ }5 q* {" p  n( t& |
  2. netspeed.py                 #放在root下
    " D- b- Z7 H+ |# s
  3. new.rt                         #放在root下
    / I3 O2 F. B8 N3 W" a
  4. mew.rtx                       #放在root下
    2 @, A- {/ ?5 w
  5. rtx                              #放在root下
复制代码

$ V: {2 K  G. t) Z5 g0 C2 _/ {8 @4 c* O" ], Q% N
led_control.zip (1015 Bytes, 下载次数: 114) 5 ?3 {# X! P% O; D* H
解压密码(刮刮乐):chwhsen
; ~6 h( ~/ y! M7 P# i/ H# X1 C% ~# F1 v; H: d! K
7 C: J! P6 |& {, n: R( P( N# \; c

+ I2 }1 \4 Y2 W1 j+ w% d7 C

评分

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

回帖

2667

积分

中级渣柚V3

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

回帖

1974

积分

中级渣柚V3

积分
1974
发表于 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-2-24 14:31 , Processed in 0.079963 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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