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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
chwhsen 发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式 IP:–河南–鹤壁 联通
之前我们你已经说过了led管控机制0 M3 B0 I6 M) a5 e6 G! o5 S
聊一聊x3p的LED控制机制! ^/ u; F, _& ^. [0 u$ `# h
和用led来显示硬盘温度' ]3 Z$ F+ Y1 M) s* N
让你的RGB灯来指示系统温度
7 a5 c; P) x, x; C现在我们可以进一步让led来显示系统网速,且往下看2 V/ e! I' @8 p9 m: \% d; c
需要用到一个python脚本来获取系统的联网状态以及各个io状态+ f# n# [, b2 \1 d) ?. A' F
  1. import psutil3 @, `* ~, C4 }# I
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的; e. `: F8 c- w& {7 ?
  1. {! o& N. S* I% W9 s* [
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),6 Z( k: r, X2 ]/ Q
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ! G( ]( b; m% N- i( M) S, M
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ) G6 d8 [' L3 s% C9 y9 v6 v
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0)," ^+ z/ Y/ d+ W  t' P4 t
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),& P1 r' \1 l6 z: t
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    7 X0 V2 g8 D1 I
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
4 K6 u4 D6 {4 h' Z- d 批注 2019-10-06 120535.png ! Q4 S* X- k- a$ r! [/ l  c, e
因为网速差别实在太大,所以我用了分级显示的方案:# j; F" _  F% q) l, s" ?6 T' `
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
: [) l- n* \) m, i7 E8 O网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯. x2 \8 ?& r# N4 D
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。( w# f& H( p8 ^2 t) Z
  1. net_led_dn() {; i3 u- u2 c% J0 _- E0 h
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx# v# @4 m7 s; Y( x  z
  3.     new_rtx=$(cat /root/new.rtx)' Q/ v! d6 G: `5 }. o& s' L
  4.     old_rtx=$(cat /root/rtx.log)
      a1 s& e) X) P! }5 R
  5.     rtx=$(expr $new_rtx - $old_rtx)8 F& b. d$ F( ]: H
  6.     echo $rtx
    1 ~( |; D: l5 k. T8 f! b& l% N
  7.     if [ $rtx -lt 1024 ]; then  d, x0 l0 ?, C/ Q5 [& {/ Y
  8.                                                                                                                                                                                              
    " ]' u6 M, C% f% j4 p# J2 F$ X; o+ h
  9.         rtx_led=$(expr $rtx / 4)
    " R  H2 s/ x0 T0 F+ a2 w8 F  E! e
  10.                                                                                                                                                                                              
    & v. @* d6 u: t. J. K
  11.         set_led c1 $rtx_led 0
    4 q8 Q. d4 O# ]: v7 u  k8 _
  12.         set_led c2 0 0  T% v% m  Q9 [/ n& [. a
  13.         set_led c3 0 07 ^2 u% Z) A8 w- B
  14.                                                                                                                                                                                              
    ! J: f5 U% k' \  l& J& W5 d
  15.     elif [ $rtx -lt 1048576 ]; then6 a, b8 \& O0 n% F: b$ G5 `) _6 B
  16.         rtx_led=$(expr $rtx / 4096)6 b$ Y8 d: p: ]0 A* k' G, S
  17.         set_led c1 0 0. ~$ R1 p9 {. i( i4 V
  18.         set_led c2 $rtx_led 0
    * |* {  V# R# `8 ~1 M0 z
  19.         set_led c3 0 0
    " w1 u" @0 c- L4 Z! A4 y0 ]6 a
  20.     elif [ $rtx -lt 1073741824 ]; then
    3 n: Y5 O, H- n0 O2 H" k9 T
  21.         rtx_led=$(expr $rtx / 4194304)0 a+ Y# H' B0 }  Y
  22.         set_led c1 0 0
    5 S- a2 `% L, c+ o
  23.         set_led c2 0 0; L8 ~& \6 P/ x& g" M$ k) P
  24.         set_led c3 $rtx_led 0
    , N% R3 t3 \) `
  25.     fi$ B) j* r& F9 X" B  r
  26.     echo $new_rtx >/root/rtx.log* `  F# a9 g5 L* Q! P, f# E
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
. Q2 o! N; N  b1 B; l( }. u下面是完整脚本,看附件吧。
8 x, Y: i7 h7 B9 y一共有五个文件
4 P3 N/ L3 u2 [, W
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换0 {( G" n& Y0 ^3 J) E( R
  2. netspeed.py                 #放在root下
    / l* {8 W  g1 O. Y0 U# i6 Y
  3. new.rt                         #放在root下
    : L7 Q1 J% [, g* n
  4. mew.rtx                       #放在root下
    * h0 X  d, R) j( C5 J
  5. rtx                              #放在root下
复制代码

+ r# u) c9 N$ f3 {5 g
2 M! O7 w, g0 }; J led_control.zip (1015 Bytes, 下载次数: 114)
, G3 o6 t7 G  C4 i8 V2 ~解压密码(刮刮乐):chwhsen
1 d$ F( m/ d/ r, u; l" k  r3 S
; F; W% `# F% ?* \# p/ c1 Q0 e' ^) E1 X# B  C4 D9 `

6 @/ b% ?7 w, U- l6 }3 B+ l7 p5 e

评分

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

回帖

5047

积分

资深垃圾佬

积分
5047
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

回帖

2245

积分

中级渣柚V3

积分
2245
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-10-22 09:11 , Processed in 0.067543 second(s), 26 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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