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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制4 b7 j6 G6 k1 j( |1 _: c+ c
聊一聊x3p的LED控制机制$ Q, B2 b6 u" Z3 @
和用led来显示硬盘温度
! C5 P3 S- J9 E/ ?让你的RGB灯来指示系统温度8 n4 m% G& S* T$ m) |$ g0 `
现在我们可以进一步让led来显示系统网速,且往下看$ {  k2 t+ g. W, h
需要用到一个python脚本来获取系统的联网状态以及各个io状态
# k. `: w! F% {6 m: ~* r
  1. import psutil% @' R8 {, Z$ V( }# T" {
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
8 B2 P8 E' Q  h( ]& ^. y
  1. {4 J: o5 l2 n& c# Y
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),% z" q9 X$ F4 ]5 G- y
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ( P. H4 m) M& _2 c8 b' v. \# H
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),5 c1 s0 U: v- b7 I$ ]! ]! x) W1 [, t
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    # q, D  F* h& @, [  b
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),+ B! B3 S" s, d% R; d+ F; O- u
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)1 k$ o. x1 T' V5 X) ~
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
: d2 Q5 {2 Y$ i; H# Z 批注 2019-10-06 120535.png
& ~! b4 T1 z3 G因为网速差别实在太大,所以我用了分级显示的方案:! K4 B; L7 `( r/ K# a' }
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯  x8 ^* a  C; _0 s( u$ [4 N& ^8 I6 c
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯5 ~% K  Y+ `3 j, z+ P
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。# `7 t% h( B. q; T2 L0 v9 k
  1. net_led_dn() {4 d8 ^5 M; Y9 B# m$ [: T
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    ) v* e( a: Y) |7 p5 @4 E9 ~
  3.     new_rtx=$(cat /root/new.rtx)1 ?+ t1 ~& Z. [9 q/ ^
  4.     old_rtx=$(cat /root/rtx.log)
    ! f2 r" |  j( ?% P" R2 }! P
  5.     rtx=$(expr $new_rtx - $old_rtx), l8 p+ J1 M' r  Y) g5 J7 f. J
  6.     echo $rtx
      ]" ]: i9 O9 k  X2 |
  7.     if [ $rtx -lt 1024 ]; then1 E- `* O$ c, N" M
  8.                                                                                                                                                                                              
    ) T# G; N  H+ L6 m' f
  9.         rtx_led=$(expr $rtx / 4)/ m4 P, D0 P9 h) O( M9 R# P& |
  10.                                                                                                                                                                                               , `9 ]+ G0 @/ B2 H2 w5 s
  11.         set_led c1 $rtx_led 08 @( g! E4 [& _. ^! \5 V
  12.         set_led c2 0 0
    % H  J! N' j% G7 y- s, g
  13.         set_led c3 0 06 S7 j) T& O! K
  14.                                                                                                                                                                                              
    3 C3 ^- y$ h. j/ V
  15.     elif [ $rtx -lt 1048576 ]; then+ z& Y, ]9 `5 k9 ?+ N& L* W
  16.         rtx_led=$(expr $rtx / 4096)
    8 B1 o% a4 L2 h4 C" `! ]" K7 ^" F
  17.         set_led c1 0 0  B9 E3 w1 u7 _# v- O; _; a% \
  18.         set_led c2 $rtx_led 0+ a0 a: @6 Z( Y% t: E
  19.         set_led c3 0 0  u6 T* O5 ~" _9 M5 `1 Z6 O2 ?
  20.     elif [ $rtx -lt 1073741824 ]; then" i5 Y' N  R0 D! c5 H
  21.         rtx_led=$(expr $rtx / 4194304)4 |7 L2 I3 O9 v+ W( ]
  22.         set_led c1 0 0
    ) f! w6 \1 J  j" M, j6 q
  23.         set_led c2 0 0; ]9 `9 V3 }+ U0 V  J- P" L
  24.         set_led c3 $rtx_led 0
    * |0 }- s: ^5 C
  25.     fi) s1 O5 x" g8 h4 R5 j2 h
  26.     echo $new_rtx >/root/rtx.log0 G% Q7 ]; h) _, g
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。: s- }! |" n) }0 _- e' {  y0 t. _
下面是完整脚本,看附件吧。
8 c7 u" ~: q$ Z7 ~- B一共有五个文件
1 A: t, c1 E" o, d
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换
    $ E( D" b% r# `% P& T1 F
  2. netspeed.py                 #放在root下 ! k. C6 J% Y9 K# @1 {0 U; M
  3. new.rt                         #放在root下! a9 c% e3 R$ N7 H8 U  w% B1 A
  4. mew.rtx                       #放在root下) |  g; {* p7 f$ S8 j$ w! b+ A
  5. rtx                              #放在root下
复制代码

+ j+ c6 v9 G. `# s3 ?  N7 s+ E8 w/ O
led_control.zip (1015 Bytes, 下载次数: 114)
& \. Y1 ^- U, ?( p解压密码(刮刮乐):chwhsen
% z: B. ~/ ?, b$ K- M' ?# @  B4 z& {
; O" C) Q3 I1 \. U$ x# D8 u- {( }. A1 a+ @5 F, k* }9 g( F$ z
) J5 _( J6 _8 x; F) k. p

评分

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

回帖

2422

积分

中级渣柚V3

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

回帖

1877

积分

中级渣柚V3

积分
1877
发表于 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-29 13:07 , Processed in 0.077808 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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