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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制/ T; P2 r8 U( l. B8 G' J- W
聊一聊x3p的LED控制机制% R7 C! E. ~" C" i$ [  U
和用led来显示硬盘温度
" {5 I+ j) l% S2 J+ O2 t让你的RGB灯来指示系统温度
: M0 [/ _3 _) s! {$ }5 S1 i3 t现在我们可以进一步让led来显示系统网速,且往下看
% |7 _9 ]& Y5 i& [需要用到一个python脚本来获取系统的联网状态以及各个io状态1 }7 S( ], r5 z/ l% o" f6 g& y
  1. import psutil, w& L' D$ @) z  Y  d7 v
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
& `; d+ z7 Z* q3 {% r
  1. {) |* ~4 w5 B9 C1 v' X0 H5 W; }
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    6 o! x) q$ S9 G6 B  W6 h  A" V3 r
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    $ E0 y  i) l$ Z
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),; b; G  Y& x+ A# \7 w6 ?
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    2 @, x( @/ s6 l. M' ^+ [% n
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    & A7 Z6 V9 W4 g! n3 V* j
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    ! A. E8 Q  z; f% y
  8. }
复制代码
有了数据就能够处理数据转化为网速了。5 e, b1 K, b, r1 {$ k& h7 T. E- V
批注 2019-10-06 120535.png : _8 ~* f) a: z* ]) j" A9 z
因为网速差别实在太大,所以我用了分级显示的方案:
2 B& d# J" g) v8 k网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯  j, n* o7 p# \! V) t
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
4 C3 p! g$ Q+ X9 Y6 `0 w, q网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
' c, c2 v* C/ _
  1. net_led_dn() {' t) N5 c$ I; u
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    : A7 a% v% n9 {. R/ S7 I4 d5 V2 `4 v& x
  3.     new_rtx=$(cat /root/new.rtx)
    : R( ^- ?7 s7 M& h4 H. E3 U
  4.     old_rtx=$(cat /root/rtx.log)7 d  E) @! f/ H4 c
  5.     rtx=$(expr $new_rtx - $old_rtx)
    7 v% u- s3 `& P2 H
  6.     echo $rtx
    % z4 C- I- n3 L
  7.     if [ $rtx -lt 1024 ]; then
    + K5 F. {- |, M: _4 [  `4 ~) o
  8.                                                                                                                                                                                               ' {! n1 c$ B+ l  ^0 S" F
  9.         rtx_led=$(expr $rtx / 4)
    . X9 W/ O" l: ?  w; k
  10.                                                                                                                                                                                               , B; Q2 }2 c$ }' ?/ }7 P+ K" b) I
  11.         set_led c1 $rtx_led 0* L& ?5 H, l) V4 H6 X; I
  12.         set_led c2 0 0
    : J. B; a: D# F$ A) w, [
  13.         set_led c3 0 0
    + s. d0 S: f4 ~6 a3 b; }0 L2 [
  14.                                                                                                                                                                                               9 ~4 t6 t0 v9 k6 R
  15.     elif [ $rtx -lt 1048576 ]; then! E- i& ?" r3 n* r4 n, T1 H
  16.         rtx_led=$(expr $rtx / 4096)8 _; @% }  @$ q
  17.         set_led c1 0 06 J9 d$ ^* F: G; g
  18.         set_led c2 $rtx_led 0
    ) v; W- z- i: b5 `) e
  19.         set_led c3 0 03 t$ U- g6 P3 B/ L4 S" U
  20.     elif [ $rtx -lt 1073741824 ]; then8 d5 v4 j6 J+ U% I( E0 q4 x
  21.         rtx_led=$(expr $rtx / 4194304)' A4 D" v+ Q( B8 Y
  22.         set_led c1 0 0
    . P  L  r! A) `& k! T2 b1 r
  23.         set_led c2 0 0! E! [& J" [( y6 H0 B( L
  24.         set_led c3 $rtx_led 02 l$ t% {: m8 F0 F
  25.     fi+ A" [# s6 p' D" Q
  26.     echo $new_rtx >/root/rtx.log, ]8 d" G2 O1 ?' `- i8 r, H( A
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
  [1 W3 B4 j( J  [) V下面是完整脚本,看附件吧。+ j) j. o, D; D2 S
一共有五个文件
+ C: W, r) Z* y2 B6 E+ _, f+ y
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换# x2 z; p, b+ \4 {4 J, B% L( P1 g
  2. netspeed.py                 #放在root下   C2 e7 I1 F' q9 C0 o6 R
  3. new.rt                         #放在root下: ~8 @% @9 I2 f) V2 Y$ R6 Z
  4. mew.rtx                       #放在root下! s7 e5 \$ X, Y0 A0 Y
  5. rtx                              #放在root下
复制代码
$ U( W; d1 e3 w

" o- `( L6 {5 B/ s  `9 W' K led_control.zip (1015 Bytes, 下载次数: 114)
) E: Y6 m& j6 ~& [解压密码(刮刮乐):chwhsen& M: y! y; }! O- {0 j- m
& Z( d# A/ L3 E/ I

6 I4 e  A; O3 f0 e( M. l1 _
/ m& ^1 @2 o( [

评分

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

回帖

2419

积分

中级渣柚V3

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

回帖

1875

积分

中级渣柚V3

积分
1875
发表于 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-26 00:18 , Processed in 0.054968 second(s), 5 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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