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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制5 n, W- n+ }9 A2 p9 ~- m  u
聊一聊x3p的LED控制机制
8 `( L" w" R9 O( _和用led来显示硬盘温度- V' u3 w' }! H  q( U
让你的RGB灯来指示系统温度
( [' P* o; D) V! A现在我们可以进一步让led来显示系统网速,且往下看
* y- c' Q- J: i& R' y! u' Q# K  Q8 C需要用到一个python脚本来获取系统的联网状态以及各个io状态, z  c; t( L3 S$ Z! X! i
  1. import psutil
    3 V4 }% i0 D5 q. P
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的# K1 m  b& w9 }! x
  1. {( m, \( A. v$ }$ n! v& e3 S
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    3 r' }* V3 t) T# z+ `1 q6 O
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),2 [7 s$ P' s# k
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    & ~5 H3 q- ^0 A1 l: z
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    : m1 _+ T% r) B" j3 f( \6 g7 p
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0)," h  f, M5 k4 ]
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    $ C4 Y( o6 F" k' m) W$ y; e
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
" @8 o+ X! u$ V- \ 批注 2019-10-06 120535.png : C) h6 x& v* w  _; T( c' W1 W
因为网速差别实在太大,所以我用了分级显示的方案:
* R6 Y- b, p+ ]1 c, n- U( j' j网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
' z4 S" ?3 d& I. i% ~/ a1 u网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
' z" b1 O/ t( j8 t2 l网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
: ^9 F( N: I7 Y; \
  1. net_led_dn() {
    ! V+ j4 O8 H( i) u) U
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx- c2 p4 h- |7 H6 i
  3.     new_rtx=$(cat /root/new.rtx)
    ; f/ y, h& B. z9 @' a# ~9 G- z1 f
  4.     old_rtx=$(cat /root/rtx.log)% `) `5 l1 i$ L* U. b
  5.     rtx=$(expr $new_rtx - $old_rtx)
    " V) L* {9 C- ?3 F# F7 k
  6.     echo $rtx
    5 i4 l* Q2 u' E5 B/ r" N% h
  7.     if [ $rtx -lt 1024 ]; then) v( u: Y2 Z* a; \- }) P
  8.                                                                                                                                                                                              
    1 o* ]/ H+ F" V7 d% [3 q$ n
  9.         rtx_led=$(expr $rtx / 4)9 N+ b: z1 |4 P- C$ @- u
  10.                                                                                                                                                                                               7 W, ?3 \% P% R
  11.         set_led c1 $rtx_led 04 Q7 k$ |8 v5 [: D- m" F" p8 ]
  12.         set_led c2 0 0
    8 N/ x1 ~; [5 ^/ K
  13.         set_led c3 0 0" r( r$ L( n. ~) J* r+ t
  14.                                                                                                                                                                                               8 U8 ]& L5 k( ?, d
  15.     elif [ $rtx -lt 1048576 ]; then
    , \/ `  i2 }: J$ E1 ^/ t( P$ ~1 ~! k
  16.         rtx_led=$(expr $rtx / 4096)
    * [6 u: N8 d) m- U' {* s
  17.         set_led c1 0 02 L4 c7 |3 H. _" A3 c) l
  18.         set_led c2 $rtx_led 0* D& w% V/ n7 F9 H( V  I% _
  19.         set_led c3 0 0+ x7 d! }8 I+ q+ _1 a% s
  20.     elif [ $rtx -lt 1073741824 ]; then
    4 C) h# L0 c+ h4 t& y
  21.         rtx_led=$(expr $rtx / 4194304)5 Y7 I! B6 V$ f  Z/ t
  22.         set_led c1 0 01 v$ {3 f( Y2 C7 R; c
  23.         set_led c2 0 0
    6 Q1 Z. V: ~5 {0 i
  24.         set_led c3 $rtx_led 0
    8 x7 ?- @5 m9 g* s
  25.     fi
    8 L9 l: r5 R, _+ H8 l; F" u4 k
  26.     echo $new_rtx >/root/rtx.log
    , z8 q) k8 s" `6 U% k7 V* q
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
  D* G; ~3 U2 {9 {: u) h下面是完整脚本,看附件吧。1 @& P. w' d) O" N) _4 q
一共有五个文件  h9 j! q) U* F! z  Y
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换# c. i( I7 v; V9 p+ o$ x# O6 R$ h1 W
  2. netspeed.py                 #放在root下
      P3 r, W  M# J- d
  3. new.rt                         #放在root下
    ; @+ @# t6 q2 h! o
  4. mew.rtx                       #放在root下
    3 Z/ x- ?! ]  M4 X( M
  5. rtx                              #放在root下
复制代码
. K+ D" g' B' |- X
! V+ ~. N' o8 G; Q4 f0 H* f
led_control.zip (1015 Bytes, 下载次数: 114) + r& X* a" w( Y
解压密码(刮刮乐):chwhsen! Q7 v/ L0 I) a. l
: F2 X6 t8 a8 |6 C+ j7 _
" N& O( f  E' }6 |+ n
  l+ N( {. R( f  p5 ]1 q: c" H

评分

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

回帖

2739

积分

中级渣柚V3

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

回帖

2017

积分

中级渣柚V3

积分
2017
发表于 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-5-7 13:39 , Processed in 0.068977 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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