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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
chwhsen 发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式 IP:–河南–鹤壁 联通
之前我们你已经说过了led管控机制
3 p# Q) y8 p( A0 o4 P; Q 聊一聊x3p的LED控制机制( N+ ~/ L( A& T# _! O7 t% U3 i
和用led来显示硬盘温度6 n2 C8 j& U0 d; G% m- `
让你的RGB灯来指示系统温度8 [# C8 {2 V7 J6 I
现在我们可以进一步让led来显示系统网速,且往下看
% k* f( N$ U- t, ]4 k' `. N需要用到一个python脚本来获取系统的联网状态以及各个io状态
, x" F. V$ w! N8 f1 f+ H3 G6 x
  1. import psutil
    - @' v0 Z! u* B, C+ m0 G* p! o
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的$ H5 ^, z. x6 _$ W  k/ Q
  1. {8 u( l/ t! ^' [5 e* r3 A, `" b
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),2 o( g$ ]: A1 C
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),# S3 [# I3 A4 i; G
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    % x, T# C; M1 g5 l; F9 y( f
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),+ M4 i) m7 f: J+ G9 c
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),; O9 \4 x: m' B: V/ b3 }# a
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    - |) ^! }& v: Z! S9 P1 P  h0 ^
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
0 G. o6 p; K/ z9 j) Z 批注 2019-10-06 120535.png
: X& m3 _* o) T2 a2 D因为网速差别实在太大,所以我用了分级显示的方案:* W  ?+ ?" x; g/ w
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯' ]8 _' t$ W8 I( ^  U1 y
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
  D. `2 N+ |" K* p网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
7 S+ o% `+ P- C6 [0 e$ c, U& A
  1. net_led_dn() {
    * `. G( e) z8 V& A3 H9 p4 Q
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    ) i' o7 f" l/ s; L1 q
  3.     new_rtx=$(cat /root/new.rtx)
    5 f3 y/ C+ M+ F% d, B1 x
  4.     old_rtx=$(cat /root/rtx.log). h" \- D7 W. R! P, s" i
  5.     rtx=$(expr $new_rtx - $old_rtx): ~, g" n$ r* `1 [; c6 K
  6.     echo $rtx
    $ i8 `2 V: C& v* T/ b+ ?
  7.     if [ $rtx -lt 1024 ]; then
    ; J6 P" `. K$ c% L
  8.                                                                                                                                                                                               ; ^9 Z0 ]3 C4 Q2 l* e1 {( M
  9.         rtx_led=$(expr $rtx / 4); \. }- T: o7 {5 B
  10.                                                                                                                                                                                               0 ~/ P9 P1 M. Z2 D- \: C( c% Q
  11.         set_led c1 $rtx_led 0" L  [) P, h9 S9 Y9 B& n: |
  12.         set_led c2 0 0# t/ M0 Z" D, o6 G% E* L
  13.         set_led c3 0 0
    & |- G- a6 j+ d' d
  14.                                                                                                                                                                                              
    9 s: `6 L7 o' v2 \$ m7 {
  15.     elif [ $rtx -lt 1048576 ]; then
    4 M: u, c! m! w! ?6 N) |* j% D
  16.         rtx_led=$(expr $rtx / 4096). E% B7 a2 e: w; ?
  17.         set_led c1 0 06 V: F# s1 x6 b% p% S8 r% t
  18.         set_led c2 $rtx_led 0+ T7 Z+ o* {+ s7 J' e
  19.         set_led c3 0 0. w6 h; w- k! h9 K& \
  20.     elif [ $rtx -lt 1073741824 ]; then, [# Z( j; g! q* \+ |/ o
  21.         rtx_led=$(expr $rtx / 4194304)
    # M2 S2 h6 ^: ]! O5 b
  22.         set_led c1 0 0
    6 @3 \" I/ p6 N) x4 O1 r
  23.         set_led c2 0 00 f! s, K$ Q: {0 g1 t
  24.         set_led c3 $rtx_led 0
    6 H7 Y& x) d+ c* q
  25.     fi
    $ J: e8 G& e# ~
  26.     echo $new_rtx >/root/rtx.log# G+ }; O3 P, ~7 c1 }
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。: v$ N; S9 n0 _
下面是完整脚本,看附件吧。
6 \  e, X+ f2 q8 O. U/ k, u# u一共有五个文件
( P5 d7 @* e5 t; E
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    3 B7 p7 x: l" z/ _. ?
  2. netspeed.py                 #放在root下
    + C8 X( p7 q2 r* w, ^, e/ x1 p
  3. new.rt                         #放在root下
    ' w& A; N# d2 ]
  4. mew.rtx                       #放在root下
    " w# H1 Q2 @- c
  5. rtx                              #放在root下
复制代码

$ j* d% Y# p! ^4 v  Q: l& {. G, D& O
& K6 H0 O) I$ v led_control.zip (1015 Bytes, 下载次数: 114) 3 T2 B% X7 s4 S) Q7 I1 Q% F
解压密码(刮刮乐):chwhsen
. h  c' C5 ^4 @1 P6 u
1 M& y  k7 I1 |  o' c) p% V
! a6 J, w% w" Z/ ~

  U& v. i( g4 y0 i) \6 Q: \. |3 [

评分

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

查看全部评分

8

主题

50

回帖

320

积分

中级渣柚V1

积分
320
zsyg 发表于 2019-10-6 12:51:07 | 显示全部楼层 IP:–广西 移动/数据上网公共出口
谢谢分享

4

主题

768

回帖

5023

积分

资深垃圾佬

积分
5023
kpxx 发表于 2019-10-6 13:27:51 | 显示全部楼层 IP:–广东–江门 电信
好教程,谢谢分享,

27

主题

133

回帖

408

积分

中级渣柚V1

积分
408
47823439 发表于 2019-10-6 13:42:40 | 显示全部楼层 IP:–河南–郑州 联通
厉害了!!!!1

1

主题

5

回帖

45

积分

初级渣柚V1

积分
45
逆水三千 发表于 2019-10-7 22:12:17 | 显示全部楼层 IP:–天津–天津 联通
佩服超级厉害了

12

主题

157

回帖

470

积分

中级渣柚V1

积分
470
起司 发表于 2019-10-7 22:57:46 来自手机 | 显示全部楼层 IP:–山东–东营 联通
感谢分享

3

主题

72

回帖

663

积分

中级渣柚V2

积分
663
Tate 发表于 2019-10-7 23:15:48 | 显示全部楼层 IP:–广东–珠海 电信
感谢分享。先收藏了

42

主题

396

回帖

2231

积分

中级渣柚V3

积分
2231
tiandap 发表于 2019-10-8 07:39:56 | 显示全部楼层 IP:–天津–天津 联通
厉害了!

4

主题

40

回帖

243

积分

中级渣柚V1

积分
243
ziyouchidu 发表于 2019-10-8 08:23:32 来自手机 | 显示全部楼层 IP:–山东 电信数据上网公共出口
牛掰牛掰,厉害厉害
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-9-27 10:57 , Processed in 0.074920 second(s), 27 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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