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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制# c3 b% }% p4 w
聊一聊x3p的LED控制机制7 O! j( H0 T* z3 m4 Q8 v/ [
和用led来显示硬盘温度
$ {8 `; N' h  q: u- |让你的RGB灯来指示系统温度  p2 ]$ Z8 c$ H: l  W. b/ V
现在我们可以进一步让led来显示系统网速,且往下看
" ~8 k6 m  T! H需要用到一个python脚本来获取系统的联网状态以及各个io状态4 F" X, j$ P6 O9 d5 j1 O9 K
  1. import psutil7 _" G! R6 D- O0 A2 l* l
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
6 B2 b  y- R; V
  1. {  e1 e( s% \* {) p7 V& w! a
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),8 p7 \+ N, W( d8 B8 N6 i
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    , o1 b4 L7 }; ~& M
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ) ^7 X2 f) U+ ~
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),7 H8 e: M# W2 }" c
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),7 m0 ~' P3 C' o, O) b9 M/ e
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    - X% h' A- Z( A2 X. z
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
3 P1 Z  D( H3 w6 J) g$ Y9 _9 `! H 批注 2019-10-06 120535.png / K) J/ P8 @5 z+ m) h
因为网速差别实在太大,所以我用了分级显示的方案:% i/ J7 j2 t. a, M$ x, I+ w( ^
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯7 }' E* x9 Q1 H% Q) M, e* X$ y: c
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯+ Q' ?3 V+ B$ {6 ^, Q
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
; F5 D& _8 I) r* @
  1. net_led_dn() {
    : J! j/ g; t3 c3 s
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    9 p+ L7 N" `; c# a0 Y0 v
  3.     new_rtx=$(cat /root/new.rtx)
    ( u! v! ]7 t) g$ x
  4.     old_rtx=$(cat /root/rtx.log)* }/ w% {$ _9 `" q  u% R
  5.     rtx=$(expr $new_rtx - $old_rtx)
    ) E" K0 s0 s) [
  6.     echo $rtx  {3 ?7 a+ w3 S. o) j
  7.     if [ $rtx -lt 1024 ]; then/ ~2 q0 n- N0 R4 l2 p6 ^( H8 w, L
  8.                                                                                                                                                                                               3 Z; x$ w5 n' x, ~% @  g8 \
  9.         rtx_led=$(expr $rtx / 4)- C3 ?, R- r& s1 z
  10.                                                                                                                                                                                              
    . B# ]  N! z, u  N) Q" a6 ]
  11.         set_led c1 $rtx_led 0
    2 J7 p* N0 N) N# {: f) v" D
  12.         set_led c2 0 0
    ! N, C# \  f: U. s
  13.         set_led c3 0 0
    & [+ `/ g; o0 b6 N* _
  14.                                                                                                                                                                                               9 M5 r7 {1 |3 f6 t: U, V% c- l$ w
  15.     elif [ $rtx -lt 1048576 ]; then7 U9 A- G4 `1 r$ `. }' t
  16.         rtx_led=$(expr $rtx / 4096)% |; [/ o8 @. o& h
  17.         set_led c1 0 0
    ( r; y& {; d! ]- j. B- V' d9 ]* L
  18.         set_led c2 $rtx_led 0) n) J- v% m1 n" t, u
  19.         set_led c3 0 0
    . L( i, E- M3 q# r$ _  u8 d
  20.     elif [ $rtx -lt 1073741824 ]; then+ I: J+ E/ X  ]
  21.         rtx_led=$(expr $rtx / 4194304); r5 D( C  X# G% [; U5 ]& K$ e- w- y% Q
  22.         set_led c1 0 04 h3 ~* L( ]% }0 f! W: O
  23.         set_led c2 0 0
    * v: M5 d8 I! U4 @8 r
  24.         set_led c3 $rtx_led 00 Y6 C3 P1 p5 `1 u# H
  25.     fi' _2 @9 E/ W1 S7 R9 N
  26.     echo $new_rtx >/root/rtx.log9 C& l& ]7 w: y8 w+ G9 k
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。$ v- h# G9 _. E1 F* e
下面是完整脚本,看附件吧。
, K8 l2 K4 a5 H1 e一共有五个文件
% P3 J- R, W4 o% o& @6 q' S, [
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换/ k1 Z& q  P4 Y0 k9 Y) l' |: S( A
  2. netspeed.py                 #放在root下
    # \3 p7 K8 T5 \" I/ n: X
  3. new.rt                         #放在root下
    ( D0 x6 J; m$ p6 i& P
  4. mew.rtx                       #放在root下# T) Q8 n% }8 z9 t4 s
  5. rtx                              #放在root下
复制代码
8 s/ \. ~3 P' b

6 s$ V: L- M- V; H led_control.zip (1015 Bytes, 下载次数: 114)
9 K, _0 {; \2 t  o/ ^解压密码(刮刮乐):chwhsen7 t* u( m. O8 O' N, @1 i
7 ], L$ j# t: v( _$ a/ p0 Y3 k* Q& ^

* d. ]9 s) B: s3 j/ b: f, h
& i% g/ g$ \  m% O  c; V

评分

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

回帖

2412

积分

中级渣柚V3

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

主题

393

回帖

1871

积分

中级渣柚V3

积分
1871
发表于 2019-10-8 07:39:56 | 显示全部楼层
厉害了!

4

主题

40

回帖

243

积分

中级渣柚V1

积分
243
发表于 2019-10-8 08:23:32 来自手机 | 显示全部楼层
牛掰牛掰,厉害厉害
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-19 09:49 , Processed in 0.059087 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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