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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制
3 `2 L$ [4 }8 I2 W9 ]9 i- J 聊一聊x3p的LED控制机制' a+ B  ]) K5 M, q! R! q/ N
和用led来显示硬盘温度0 S! d" S* D0 h* Q5 K& b
让你的RGB灯来指示系统温度  E4 z  F+ @+ {- b" q* F5 U% K
现在我们可以进一步让led来显示系统网速,且往下看
( l  G& W& f+ G5 b' D% k+ J- B1 I需要用到一个python脚本来获取系统的联网状态以及各个io状态$ {  ?9 Q! B' b5 V
  1. import psutil# ]$ b1 I) S% q1 I
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
( |# _8 S& E5 s: M
  1. {1 ^, n* s; B" K" _! ^
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),3 h0 Z+ m% }. h/ d* e9 I; ~
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    : F7 a( n+ a8 j3 p' k+ ?
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),2 ~6 P" q% h  P2 B# k
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),% J! y. J8 q* L
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),. B2 g* I3 h$ M1 ]& ^, o
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)' [8 P5 Q% [- G& D# K+ e. `( n
  8. }
复制代码
有了数据就能够处理数据转化为网速了。. B( K3 [! {/ P! c# m
批注 2019-10-06 120535.png . E  T$ Z- \. E( @
因为网速差别实在太大,所以我用了分级显示的方案:1 p* H* U: N5 e0 O! B3 t+ T- x
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
: z3 \% B% q4 r. z/ h网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
9 H' R  w7 j7 [- {" n7 W网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
0 Z- g. e! K# E( v
  1. net_led_dn() {
    + x8 ?  A! p+ T2 O
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx1 L) T8 j4 j& Q( a/ R
  3.     new_rtx=$(cat /root/new.rtx)# F, e( k+ G- E$ [# I
  4.     old_rtx=$(cat /root/rtx.log)" ]$ J. d, L; B$ b! e
  5.     rtx=$(expr $new_rtx - $old_rtx)
    8 Q* S. k: h# b: Y) @# r/ n2 {" `" J; g
  6.     echo $rtx
    , c  c; u  P+ @8 j! U+ E
  7.     if [ $rtx -lt 1024 ]; then
    6 _  Y" \* ^8 {
  8.                                                                                                                                                                                              
    , V7 k% l, j: X# B/ A
  9.         rtx_led=$(expr $rtx / 4)' V2 y' @: c1 V0 d' u3 N4 W
  10.                                                                                                                                                                                              
    " S# }' B: ?0 [4 q+ N8 m" @/ m3 i0 M
  11.         set_led c1 $rtx_led 0
    . f4 m$ j2 t( k/ w2 [2 n
  12.         set_led c2 0 01 u9 ^8 I  @: M- g1 v$ e. ]3 l
  13.         set_led c3 0 0+ y6 J# @' m0 c" \
  14.                                                                                                                                                                                              
    $ R6 |) W- ^3 F' _/ E: \! ]
  15.     elif [ $rtx -lt 1048576 ]; then# B0 \6 J. Y4 T6 P1 ?3 {* G
  16.         rtx_led=$(expr $rtx / 4096)% m7 u5 n; d% g6 {
  17.         set_led c1 0 0& D8 Y# y3 |7 k9 r
  18.         set_led c2 $rtx_led 0
    1 d5 K  q2 E* u$ Z3 k5 n& i
  19.         set_led c3 0 0  V1 R1 a2 [/ Z- U) |( a0 F# |2 J
  20.     elif [ $rtx -lt 1073741824 ]; then
    5 F0 ^1 M* m( O! u
  21.         rtx_led=$(expr $rtx / 4194304)
    ; B- P, C6 h+ s! O
  22.         set_led c1 0 08 N8 J4 _" G4 \8 U
  23.         set_led c2 0 0- W: y6 \! S5 U& {* s
  24.         set_led c3 $rtx_led 0; Q% F- B) Q- a2 G9 y- e1 y3 t
  25.     fi
    1 @" {" F! s+ f
  26.     echo $new_rtx >/root/rtx.log( n% j0 ?$ ?2 x+ j7 b
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。" w$ S! A! o# F; |; y* T
下面是完整脚本,看附件吧。$ B7 G5 @8 M2 N+ o
一共有五个文件
5 n4 _; T# T2 t) F  n
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换* M( e! G, ]& U1 b9 l4 v
  2. netspeed.py                 #放在root下
    $ e# F0 r7 Y0 Y+ t
  3. new.rt                         #放在root下
    6 x" J& w- w" s5 L+ f7 h
  4. mew.rtx                       #放在root下* e9 s7 m  k, J7 L$ R1 B) d2 s* d
  5. rtx                              #放在root下
复制代码
9 ]6 f0 b# C' A, r$ b& Q0 ]% W- u

9 c* p  g% a) K/ M- P2 O0 N led_control.zip (1015 Bytes, 下载次数: 114) : B  V; A% M7 D
解压密码(刮刮乐):chwhsen! \8 `$ U) B7 T

+ K7 i0 |1 Y# t" v# u+ I" D. u. \( V& |* S4 g6 S

# X2 W* k8 t4 @) E5 D

评分

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

回帖

2705

积分

中级渣柚V3

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

主题

394

回帖

1999

积分

中级渣柚V3

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

4

主题

40

回帖

243

积分

中级渣柚V1

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

本版积分规则

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

GMT+8, 2025-4-3 17:08 , Processed in 0.070617 second(s), 7 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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