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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制! Y5 b% @! l, Z" }# P% w
聊一聊x3p的LED控制机制6 E, e; Y5 A( O. r, e
和用led来显示硬盘温度
- ], R+ V& M0 \: w. Q让你的RGB灯来指示系统温度
! M: J2 t: j6 m" f9 U现在我们可以进一步让led来显示系统网速,且往下看
  C4 Q4 j9 {! J* u1 F/ ?- @需要用到一个python脚本来获取系统的联网状态以及各个io状态) ~6 R: X$ E! ?# C" K" q4 s
  1. import psutil
    1 w& P6 T1 p, [
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
) k6 y. N, `6 k
  1. {
    / J" m" l' m, n1 P% ?8 y
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
      f/ K, y5 P+ C6 A
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    1 m6 Q  @, ]0 w; N) o
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),; f1 @; k: f8 q% t+ h: x5 Q
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    . r0 L2 P" m5 r& V9 L+ t/ e8 Z$ S4 F4 T
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),/ }4 B- t& b: V, P3 u" R% y; `
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)% G' w, o" @* a( |: ]' t
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
+ @- [" C; C* \ 批注 2019-10-06 120535.png
3 X3 U6 z7 U) z2 |/ P/ J因为网速差别实在太大,所以我用了分级显示的方案:
: v& t) s* ]" D  W网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
$ ~9 S. f- t! V8 T2 |# }& m% d网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
7 r. z8 ^$ m* v3 u- \* k网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。8 ~5 W8 P8 w: h- Y
  1. net_led_dn() {
    ) e3 e* w0 y+ B6 u) g
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
      m. g- n" H" }6 L- ~) I
  3.     new_rtx=$(cat /root/new.rtx)6 R4 v( t* y+ @
  4.     old_rtx=$(cat /root/rtx.log)$ s9 J# V1 s' f$ n, T( `% a9 ]3 F
  5.     rtx=$(expr $new_rtx - $old_rtx). r) U* R, b& B) |- s
  6.     echo $rtx
    " ]" F! A: D% f7 c9 W2 u$ w
  7.     if [ $rtx -lt 1024 ]; then$ T% J) @- G# c+ @
  8.                                                                                                                                                                                               0 q( [! q1 c) Q; Q7 Z
  9.         rtx_led=$(expr $rtx / 4), ]6 G4 U- x0 F& q$ c
  10.                                                                                                                                                                                               ( ^% ~0 [% K9 g! J# y. `
  11.         set_led c1 $rtx_led 0
    ; ?1 ~7 J6 M5 N' O7 i( x
  12.         set_led c2 0 0
    8 h( E2 i4 \6 @: q
  13.         set_led c3 0 08 N: h9 n+ @' s( w, W
  14.                                                                                                                                                                                               6 `: }3 c5 `0 l
  15.     elif [ $rtx -lt 1048576 ]; then3 x! R# K  q4 D( b- Y+ H+ d
  16.         rtx_led=$(expr $rtx / 4096)6 e1 j# S' X* C0 r6 t- C2 _) `0 r8 N
  17.         set_led c1 0 0
    6 w$ ?7 j. u9 D) _+ X7 f( L& B9 ]
  18.         set_led c2 $rtx_led 03 m1 [, d# ?# q: G, }+ Q
  19.         set_led c3 0 0
    " C4 [  V! a4 j7 D4 Y0 R6 u
  20.     elif [ $rtx -lt 1073741824 ]; then
    0 S% c. ?$ n6 h
  21.         rtx_led=$(expr $rtx / 4194304)6 a; T5 Z- H4 ]: u1 D0 e! |
  22.         set_led c1 0 0
    + B% \6 V' s4 [- e
  23.         set_led c2 0 0( E8 B* c) [) w8 S; }8 U# G; w* g: Z
  24.         set_led c3 $rtx_led 0
    4 _0 c7 A, U6 G6 o
  25.     fi3 W$ X# U3 f: p$ e
  26.     echo $new_rtx >/root/rtx.log
    . V' C. \$ F% E& ?" z% G- B. H
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
2 u6 R( G' E  n  r' D, W1 m下面是完整脚本,看附件吧。3 ~9 \, X3 n3 E
一共有五个文件
- @9 ]+ C% i  h$ d( {
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    ( d8 k  h6 u7 f
  2. netspeed.py                 #放在root下
    / l+ a& t0 v. m9 R# l8 E
  3. new.rt                         #放在root下
    & G+ t2 P3 P  `5 {$ S. c- k/ a7 c( t9 Q: J
  4. mew.rtx                       #放在root下
    , j0 J3 ^: U- s
  5. rtx                              #放在root下
复制代码

+ X/ X  F6 y0 b; ]9 w0 i( p; }- c! x1 V" ~6 ?
led_control.zip (1015 Bytes, 下载次数: 114)
4 i0 ]* k/ }+ s& ^7 i解压密码(刮刮乐):chwhsen7 g4 L' P6 K( o9 L8 D- `7 W

# {( A, t7 P) U2 W6 [" m4 w+ c, j3 e: \; ]- \1 Z3 B. a

  \2 d. e* h4 {! M* R" F

评分

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

回帖

2829

积分

中级渣柚V3

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

回帖

2052

积分

中级渣柚V3

积分
2052
发表于 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-8-5 02:09 , Processed in 0.072896 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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