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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制+ C! y& M5 u; e1 s
聊一聊x3p的LED控制机制
; ~, ]- j% n) U和用led来显示硬盘温度. p! B. p$ N# q( s* b' Z5 I
让你的RGB灯来指示系统温度
4 t# K6 i# [1 K) h现在我们可以进一步让led来显示系统网速,且往下看
, q# c9 F0 c% I1 G- ?1 w0 q7 N$ \需要用到一个python脚本来获取系统的联网状态以及各个io状态# i8 J! O/ H) p% J
  1. import psutil
    4 N, \# w& `' O" E' h
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
3 d8 d+ x3 |. L1 S
  1. {
    - z5 @8 e8 v. n& m( Z
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),: f3 d0 T* c) g
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),! }8 C: ^% u9 M- b  E6 [
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),  u4 i0 G+ M: C& k5 a* p
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),. T" u- h5 W: d$ H8 E5 o( e
  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! }3 T* @6 n) {4 W4 ?1 J1 e
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    , a2 A; i, k3 L: X# q
  8. }
复制代码
有了数据就能够处理数据转化为网速了。* [* N5 V9 L' W: f
批注 2019-10-06 120535.png
8 t2 L# Q* f, v0 s5 z) z因为网速差别实在太大,所以我用了分级显示的方案:& J8 e" U: k, o! p. m
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
8 {* z; P' P8 G+ a0 B  U网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
0 y) {, Q" J7 D! b9 G: C网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
  Z; q& y8 D) j
  1. net_led_dn() {( a& x1 D9 i, W: @$ @0 T: ]; C  u
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx5 \! `" B$ b6 c
  3.     new_rtx=$(cat /root/new.rtx): ^- `2 l$ P6 F7 ~& A
  4.     old_rtx=$(cat /root/rtx.log)4 ^' y2 U. M# D+ k
  5.     rtx=$(expr $new_rtx - $old_rtx)0 |9 U/ Z' |0 O8 e6 |8 f
  6.     echo $rtx
    ) }, I. W# z- m. R' ^3 F
  7.     if [ $rtx -lt 1024 ]; then4 t: S8 D1 X- ^. f) b( C3 N8 A6 J8 K
  8.                                                                                                                                                                                               ' Z, {$ B" _$ i: C  b
  9.         rtx_led=$(expr $rtx / 4)$ d8 I' o: j' a
  10.                                                                                                                                                                                              
    2 |* g" F- M% a- l* U& R4 [
  11.         set_led c1 $rtx_led 0
    ) {  d9 a0 r& V3 Y, I* e
  12.         set_led c2 0 02 R: R. F/ Y! I' [' ~  A, w3 E
  13.         set_led c3 0 0
    3 e1 e5 h0 K9 k/ G5 j& c1 m3 {; b
  14.                                                                                                                                                                                              
    ! g( y0 ^  N" f( J) p) C
  15.     elif [ $rtx -lt 1048576 ]; then5 x4 E8 w9 K# s8 e! _
  16.         rtx_led=$(expr $rtx / 4096)
    & l2 [: s. n4 I" b
  17.         set_led c1 0 0
    7 d' \) _- h" c/ r2 ], i1 M+ l5 X' |$ N  P
  18.         set_led c2 $rtx_led 0/ g$ [) k3 y+ E! J( F- |# s# _
  19.         set_led c3 0 06 X: [$ A. O+ k' p9 a7 T
  20.     elif [ $rtx -lt 1073741824 ]; then1 N1 t# U. {- O( v9 a! r5 ^$ Y
  21.         rtx_led=$(expr $rtx / 4194304)
    / i) _! j( U/ W$ P
  22.         set_led c1 0 0( l8 ]2 x! P) V! P% V
  23.         set_led c2 0 0
    7 C  n, g' y3 L. X
  24.         set_led c3 $rtx_led 0) P1 g6 ]3 N* Y3 Q
  25.     fi7 T9 |( q( e. i! ^- L5 u. e
  26.     echo $new_rtx >/root/rtx.log
    7 r5 B  o/ C! T* \2 x
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
+ k) H& Z$ i! s+ {* s, E下面是完整脚本,看附件吧。3 w6 Y" V! Y8 Z, ^( {
一共有五个文件
' c) X0 h: E4 X" ^1 ~
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    % X* N9 _1 ^. }
  2. netspeed.py                 #放在root下
    5 J! x6 x: F5 F6 C, u* Y& c' h% N
  3. new.rt                         #放在root下
    ; J+ ~, I  W) ~( g7 j
  4. mew.rtx                       #放在root下+ ~/ q0 q  b/ i. F, j
  5. rtx                              #放在root下
复制代码
1 n* _% Z0 b4 t: ]; C1 Q& H) P
3 C& K* I' j& a, O* U
led_control.zip (1015 Bytes, 下载次数: 114)
4 O( G1 A: n; J3 g# p& q' @解压密码(刮刮乐):chwhsen6 y: t% F. {) e  ]
' u: w8 _) ~7 D, ^" i7 N

- g" y3 J4 D- L" |% J# }/ R2 [
7 v/ W$ C, N- F$ G# z  y! R2 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

主题

765

回帖

2956

积分

中级渣柚V3

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

回帖

2125

积分

中级渣柚V3

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

4

主题

40

回帖

243

积分

中级渣柚V1

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

本版积分规则

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

GMT+8, 2026-1-14 04:59 , Processed in 0.209789 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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