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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制
6 E! m2 }, B3 H( o. J 聊一聊x3p的LED控制机制
8 [: i# ^* L" d. g和用led来显示硬盘温度
- u9 c1 H" [+ q" z8 v让你的RGB灯来指示系统温度# }! H+ M7 }( C5 H
现在我们可以进一步让led来显示系统网速,且往下看/ V5 F( ]4 c5 l% z9 A7 f6 u5 ~
需要用到一个python脚本来获取系统的联网状态以及各个io状态
3 T8 \) D- ?, l2 f
  1. import psutil
    ( P7 a! J: g/ f) \' I! p+ m
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
0 t& {; a; n" p* D1 D
  1. {+ r+ e! c9 e' Y3 W
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    " k! q$ n8 q+ N" T/ m4 ^
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    % n9 G5 o" |& x$ D
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),3 ]# h. c5 k% o( u
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    2 Z& q7 k6 h% D& g" s* |/ s% Q. h
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),' k0 I6 K5 S. t0 F  m
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)' w2 i! |1 F( P0 P7 d# k% R
  8. }
复制代码
有了数据就能够处理数据转化为网速了。  Q. m! B' m! \( g
批注 2019-10-06 120535.png
* a9 Y% {  S7 g% j1 g因为网速差别实在太大,所以我用了分级显示的方案:# V' y! O  K# g" C
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯! S0 v: Z4 T6 S3 \; q3 T* y
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
2 [- ]- U. `' _网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。# D0 I. F2 D" M& V( F" ]
  1. net_led_dn() {
    / ?! m& D3 v. n; c- S4 v. c5 f
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    ) r+ C1 K; o. D) [. ~0 F. E& u! t
  3.     new_rtx=$(cat /root/new.rtx)1 b, Q. h5 `$ l1 n) z: u
  4.     old_rtx=$(cat /root/rtx.log)
    8 o1 A4 J9 F! p
  5.     rtx=$(expr $new_rtx - $old_rtx)
    + S$ r& m0 `0 g- z4 {# x
  6.     echo $rtx/ K$ @; o; s7 M
  7.     if [ $rtx -lt 1024 ]; then1 f3 R- [3 K! w$ g' G
  8.                                                                                                                                                                                               # d; m1 Y+ H5 _3 J
  9.         rtx_led=$(expr $rtx / 4)
    7 ?; N4 ~! ^$ l0 k3 G% e
  10.                                                                                                                                                                                              
    2 g5 [! @$ X) B# m: z
  11.         set_led c1 $rtx_led 0
    ; y" s+ _1 Z% c( _/ t
  12.         set_led c2 0 0
    - d: x7 ?0 y% b5 p& u
  13.         set_led c3 0 0
    % Z0 y+ b6 O4 M( N8 P& h
  14.                                                                                                                                                                                               ' Q9 b  n+ Y5 H. x/ g
  15.     elif [ $rtx -lt 1048576 ]; then
    " ^# Z% e9 }: F
  16.         rtx_led=$(expr $rtx / 4096)  d: w3 r/ y0 r' x% _# p
  17.         set_led c1 0 0
    " Y5 m2 ?1 P# p3 b) d! ^+ w4 c
  18.         set_led c2 $rtx_led 0
    2 m7 b3 w) G5 L$ T% v3 I
  19.         set_led c3 0 0. W* d" E% J1 Z+ M0 `
  20.     elif [ $rtx -lt 1073741824 ]; then' `& T8 f$ \2 N* f8 F
  21.         rtx_led=$(expr $rtx / 4194304)! d: N: j0 v* C! L
  22.         set_led c1 0 0
    . ~' I7 l% g$ M. H9 _1 y6 k, Z
  23.         set_led c2 0 08 u: f! c6 ~- ]# [4 f, t
  24.         set_led c3 $rtx_led 0  Z( w5 P1 m0 F# e- }
  25.     fi
    7 n6 }, L* L0 a# Z( S/ I" W  ~0 U+ ], M
  26.     echo $new_rtx >/root/rtx.log/ Q- o6 @# g- p; S) v
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。1 O# @# u+ G' x) I* Q7 y
下面是完整脚本,看附件吧。2 v0 _* o3 r4 P. `1 V+ t0 K
一共有五个文件
) F" D. x% {0 k
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    , q, o, e. u% [, a: T
  2. netspeed.py                 #放在root下
    3 G3 |5 G' U- N5 s
  3. new.rt                         #放在root下
    4 X% E7 |7 \/ l
  4. mew.rtx                       #放在root下& h+ n1 E4 M5 h* L  S; A/ _" @. e
  5. rtx                              #放在root下
复制代码

; X( h* T1 z4 @: O4 A, N, S0 b6 C1 H0 k) Z4 O0 u$ g* r2 L
led_control.zip (1015 Bytes, 下载次数: 114)
/ i, m$ K9 _$ E1 {8 z8 o* Z( q解压密码(刮刮乐):chwhsen
9 b( m# t* @0 R6 Y' N. ]& w. q* K
# w# n* T: ~4 }# O  `6 m0 F2 z' ?/ Q/ x9 Q
: P: P+ Z1 ?% ~

评分

参与人数 3渣金 +35 经验值 +65 收起 理由
jakc + 10 + 15 很给力!
yzfdy + 10 + 10 很给力!
xxx + 15 + 40 很给力!

查看全部评分

8

主题

50

回帖

320

积分

中级渣柚V1

积分
320
发表于 2019-10-6 12:51:07 | 显示全部楼层
谢谢分享

4

主题

765

回帖

2891

积分

中级渣柚V3

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

主题

395

回帖

2085

积分

中级渣柚V3

积分
2085
发表于 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-10-28 18:13 , Processed in 0.084576 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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