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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制
4 _1 \4 p! f) ]5 j/ m* d7 } 聊一聊x3p的LED控制机制
# W% J% O, N0 r& W和用led来显示硬盘温度6 \4 U4 ?+ ]5 B' Y) x
让你的RGB灯来指示系统温度6 J2 Q: s: Y; T. k/ n
现在我们可以进一步让led来显示系统网速,且往下看
9 c5 R4 k" z5 o) s3 K" y6 v& \需要用到一个python脚本来获取系统的联网状态以及各个io状态- e: K6 \" c- H
  1. import psutil
    . Y# M, |" r7 W
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
* Y8 i6 E1 i  R% g9 G
  1. {
    ' `" L+ h5 n) t. s5 s: U3 y
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    0 p0 |% b: I/ t$ F. t" `' j
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    + H" B$ S4 I# O' k
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
      @& N) W8 y$ t
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    / @1 a, A; k8 K* D
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),; ^( K" Z/ O( i) C
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)' i5 r9 R6 C% E( d
  8. }
复制代码
有了数据就能够处理数据转化为网速了。( i6 L2 Q2 ]$ q. q# I
批注 2019-10-06 120535.png 8 Q& U& w- B+ c- l+ z3 h
因为网速差别实在太大,所以我用了分级显示的方案:
2 ]% F% m; d" }  S网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
; x' ~; b" m+ x  H8 I网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯7 H/ u, h  k) T- t! `4 Q
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
3 M1 H% c. U$ H$ W
  1. net_led_dn() {
    & p- E, z& M5 g/ B
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    & T# i- D0 S: R- a
  3.     new_rtx=$(cat /root/new.rtx)
    ( }) W! M* I( P. q0 s6 g
  4.     old_rtx=$(cat /root/rtx.log)8 t9 H8 m' B* \. w
  5.     rtx=$(expr $new_rtx - $old_rtx)
    7 c8 G) x/ s9 [  x1 t
  6.     echo $rtx: O& E0 y; c2 \# }& P5 S# m* }& O
  7.     if [ $rtx -lt 1024 ]; then6 D: I+ H: f" y0 x
  8.                                                                                                                                                                                               ) J$ Q1 F% n( E- L9 l& _0 T0 m
  9.         rtx_led=$(expr $rtx / 4)
    5 L7 T" G3 q6 z6 X4 {, b
  10.                                                                                                                                                                                               ' U; b7 G7 ^& Q( X# M% W% L+ W
  11.         set_led c1 $rtx_led 0$ E% ]( n' l) n# S5 \
  12.         set_led c2 0 09 T3 Z& ]: e3 l0 Y9 v* e
  13.         set_led c3 0 0
    9 X+ [; v1 r8 y, u, I
  14.                                                                                                                                                                                               , m( O6 P! m0 u" n
  15.     elif [ $rtx -lt 1048576 ]; then2 O  {) B9 {7 l0 y! @4 z7 U
  16.         rtx_led=$(expr $rtx / 4096)
    - j0 z8 w* y' v+ h+ q# B
  17.         set_led c1 0 0
    ' x  o7 P4 E7 g3 q+ k& r/ V# G. L
  18.         set_led c2 $rtx_led 0
    1 q9 E" U) j0 o3 w0 {: s4 S7 n6 M5 q
  19.         set_led c3 0 0% d$ h. O* u; w& \
  20.     elif [ $rtx -lt 1073741824 ]; then
    6 \8 j+ B, f# j% v
  21.         rtx_led=$(expr $rtx / 4194304)
    ) z% X; a% |- ^6 o- M, l5 |
  22.         set_led c1 0 0% Y- _( m4 t; ?% S' o
  23.         set_led c2 0 06 {# a0 L6 S. X) i5 v
  24.         set_led c3 $rtx_led 0
    - M% `8 Z4 k; V1 m. n* K' P1 D
  25.     fi
    / {/ o4 K' m5 h) e( T! [& M
  26.     echo $new_rtx >/root/rtx.log: d6 c; o$ Q% R' g8 n# Q" j6 b
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
2 |# D1 ~6 h( b+ g下面是完整脚本,看附件吧。/ M4 u4 f" o8 \2 s* |
一共有五个文件
( w" M3 V6 ~3 a- }1 H" J- Y3 F
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    - c5 K3 T! B" U1 r" @' g& p' B$ H
  2. netspeed.py                 #放在root下
    * `5 S# d4 O4 k- ^: m% P
  3. new.rt                         #放在root下9 ?/ ?# \" Y. C$ k
  4. mew.rtx                       #放在root下9 J* d  X5 i- Y$ ]2 b  N
  5. rtx                              #放在root下
复制代码
( ?( J( s; }  ~+ D5 m' t
3 K# M  _0 J. L9 z1 k
led_control.zip (1015 Bytes, 下载次数: 114)
' _  W6 Z3 r4 ~解压密码(刮刮乐):chwhsen
  m9 V7 ~  n3 p( `$ [; b9 R7 v; p6 ~5 f% \. K
7 _$ N" [% H. o
; u8 v! }( N2 N. B  W- m7 P/ z9 b

评分

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

回帖

2706

积分

中级渣柚V3

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

回帖

2000

积分

中级渣柚V3

积分
2000
发表于 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-4-4 12:32 , Processed in 0.303402 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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