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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制
) o% I0 [4 u1 t2 e6 y4 z, C, g 聊一聊x3p的LED控制机制
. M) H$ o$ ?" `* ]8 I, ^和用led来显示硬盘温度6 F) u2 y4 I9 H+ K7 ~
让你的RGB灯来指示系统温度
' r. k6 `! [. y4 }! S0 S现在我们可以进一步让led来显示系统网速,且往下看+ G8 g9 L( G0 Z0 O; u
需要用到一个python脚本来获取系统的联网状态以及各个io状态( m; Q, d5 }2 J$ J4 l
  1. import psutil
    0 A, X, H+ m3 U0 r
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
# q( T% q! S; l& l+ I# A* }
  1. {
    1 _! o2 o, S7 `( g8 M# S2 n: y
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),4 e' |" X2 p4 H. t( M" I4 B
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    3 d$ H# m3 ~1 h: Q) c0 B
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),# p3 @/ q% X# g( r
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    & l0 ?% G* Y7 k& b4 T7 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),7 h& \' n( K; R! m0 w4 w
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    1 I9 B8 C+ Q" I" z  N
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
( n( g+ s1 d: Q5 { 批注 2019-10-06 120535.png
, N0 r% n+ @$ l3 K. \因为网速差别实在太大,所以我用了分级显示的方案:
7 P# L6 ^. u1 r1 [9 A+ e8 T! k网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯0 `; o1 x  t* V; _
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
; s9 f/ a3 a" Y网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
2 I% f; @; Q# m/ Z$ |' M
  1. net_led_dn() {/ S' P% y: ~: u7 y5 b( m: l
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx% p" D5 }9 O9 ?! B
  3.     new_rtx=$(cat /root/new.rtx)
    1 j9 w; r/ ?( y! J4 K( y: E4 A3 X
  4.     old_rtx=$(cat /root/rtx.log)* |* h, L0 O- e! s! f$ i2 S. q7 b
  5.     rtx=$(expr $new_rtx - $old_rtx)
    2 V$ ^* s! }# g, G6 b9 L
  6.     echo $rtx* w( o& ~+ T4 r% `
  7.     if [ $rtx -lt 1024 ]; then
    ' F3 P/ C* L+ C" i4 G8 N
  8.                                                                                                                                                                                               ; d8 f& I" A' w+ e& f) F- a: s& O
  9.         rtx_led=$(expr $rtx / 4)
    $ a6 U! w. e4 n1 E7 ?( n4 t& C# M
  10.                                                                                                                                                                                               4 L( d/ `% T- g4 U  z  }
  11.         set_led c1 $rtx_led 0
    9 l. b$ c& |% V8 }. y+ X% V
  12.         set_led c2 0 0
    4 O+ s" B8 W; C9 D' _0 Z
  13.         set_led c3 0 0
    7 C  T* K- Z1 y) ]
  14.                                                                                                                                                                                               + B2 v% @3 t7 a/ x/ a: }% T' J
  15.     elif [ $rtx -lt 1048576 ]; then6 H3 t8 _! ?, ?! y" l8 U/ C
  16.         rtx_led=$(expr $rtx / 4096)* c% F9 h: x. U
  17.         set_led c1 0 0! L7 b% J, j5 l# M
  18.         set_led c2 $rtx_led 0
    $ B" ~% U$ y/ m$ B$ B3 ~3 P, H9 K
  19.         set_led c3 0 0
    ; e- s3 v9 {$ O$ `2 B( M
  20.     elif [ $rtx -lt 1073741824 ]; then
    2 U* @3 X2 @& u1 s/ f* g" f
  21.         rtx_led=$(expr $rtx / 4194304): Q. j1 h- H, q8 w+ p5 |: k
  22.         set_led c1 0 0
    . e( }- r2 @( H/ V5 o4 e0 \6 a
  23.         set_led c2 0 0
    : p* S# P1 f# `3 P/ Y
  24.         set_led c3 $rtx_led 0
      g1 q, U* y8 q' n8 d: F
  25.     fi
    8 x- h" V: a! ?3 |# l5 l: F
  26.     echo $new_rtx >/root/rtx.log
    7 P% [# ^# y' _& X% q
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
* _) j: z) ?# D5 ]3 e1 e下面是完整脚本,看附件吧。
4 R2 t2 ^! G4 }% [3 J! x$ A% ]一共有五个文件
; H4 f; s" x, Z- x7 U7 q
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换, r/ r5 a- @% h, s
  2. netspeed.py                 #放在root下
    ( O- x1 d6 x( z8 o
  3. new.rt                         #放在root下' @* n0 x( i! u
  4. mew.rtx                       #放在root下
    ) \. W4 L  I+ m+ c
  5. rtx                              #放在root下
复制代码

. l3 \# T. s: ~) T) P- Z) I3 h+ B" W: r
led_control.zip (1015 Bytes, 下载次数: 114) , ?5 H" @& T; [, b
解压密码(刮刮乐):chwhsen" _5 D/ O7 u) n* x* l0 j

+ L  g8 k) {) Z" [6 a' I
* `: X! C7 y* S
7 h- o; O( k" p0 ~, i1 R/ s$ C2 j2 N

评分

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

回帖

2795

积分

中级渣柚V3

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

回帖

2049

积分

中级渣柚V3

积分
2049
发表于 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-2 23:09 , Processed in 0.069434 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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