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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
chwhsen 发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式 IP:–河南–鹤壁 联通
之前我们你已经说过了led管控机制
: \! R+ H1 s: y$ p0 _6 a6 ` 聊一聊x3p的LED控制机制% H$ |, d) a6 u7 N! t6 q
和用led来显示硬盘温度$ P4 l/ ~3 w1 A+ I8 B: w
让你的RGB灯来指示系统温度
$ |/ W7 m* o! l7 l" |4 E. c现在我们可以进一步让led来显示系统网速,且往下看
8 C* Q* @9 `) ?4 ^% H7 B8 K需要用到一个python脚本来获取系统的联网状态以及各个io状态
0 u+ R0 _: W1 S
  1. import psutil
    % v' `: k' M( z# D/ n
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的8 k) Z" W! h$ w- h, m
  1. {! p. i& _5 ~/ I7 H! u
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    - G3 W2 B7 x1 r
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),
    5 d9 V0 d; \) h8 u5 J
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    ) M+ L; R6 K+ J' j; Z* t, r
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),: e: Q  _' A4 N3 T1 }
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),+ E9 h4 R3 K& x; s$ j7 Z6 ?. {
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)% S4 h7 m! d! H8 c
  8. }
复制代码
有了数据就能够处理数据转化为网速了。9 T3 R( B9 p5 k' Q0 J  J7 D
批注 2019-10-06 120535.png
" G, h0 f8 g' w  {因为网速差别实在太大,所以我用了分级显示的方案:1 d) |7 j! o+ l) {6 S' L+ V
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
& _, q  G7 P1 d: j网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
  Q/ A0 l( W& k1 L4 R网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。5 g+ ?" C& b* o  G7 g0 d$ {9 o
  1. net_led_dn() {
    : d7 t* ~( ^. w& G; J  t# h+ ~2 Q
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx
    " P2 H1 U+ L! f1 z& \( S0 E
  3.     new_rtx=$(cat /root/new.rtx)1 Q  s" v7 A+ j7 W$ n# e8 x
  4.     old_rtx=$(cat /root/rtx.log)
    / D4 o) x* h0 x6 o% `  @4 c% O
  5.     rtx=$(expr $new_rtx - $old_rtx)
    ; U. N( d* N, C4 i$ t0 K% f! [
  6.     echo $rtx$ S/ R" {$ M! ?% D' Y) x
  7.     if [ $rtx -lt 1024 ]; then
    ' R: L6 ^4 V- _9 ?0 L
  8.                                                                                                                                                                                              
    " D8 R) r+ U2 f' W4 G4 n# @
  9.         rtx_led=$(expr $rtx / 4)1 z( N! X5 s4 U$ I
  10.                                                                                                                                                                                              
    : V2 }' k  E1 t7 \: X; L5 {
  11.         set_led c1 $rtx_led 0, m9 K" ?1 t$ g8 G- l/ j8 c
  12.         set_led c2 0 0$ m! S7 r& {& ~
  13.         set_led c3 0 0
    1 f; q8 x# n4 s+ H
  14.                                                                                                                                                                                              
    : d. t9 u  ~; ?( ^7 A% ^3 A6 r
  15.     elif [ $rtx -lt 1048576 ]; then
    ! O; x0 {, S* [; @. [$ O" Z
  16.         rtx_led=$(expr $rtx / 4096)8 F$ b' B4 t. O) b/ u
  17.         set_led c1 0 0$ U0 O: r4 B. I/ `% o! D
  18.         set_led c2 $rtx_led 0
    ) ]) J+ |  ~# w" {, [$ j- b- X
  19.         set_led c3 0 0
    0 B6 Y+ O  A/ c; P
  20.     elif [ $rtx -lt 1073741824 ]; then
    + w- }4 c, i) v6 j
  21.         rtx_led=$(expr $rtx / 4194304)
    - }9 F# N( c6 h+ R
  22.         set_led c1 0 0
    % {. P$ c# C( x) r4 z
  23.         set_led c2 0 0
    ! Y' `5 O- k$ Z
  24.         set_led c3 $rtx_led 0$ k1 ~, i1 {0 D3 Y
  25.     fi
    6 S7 a  M) k  s0 @; V" ]
  26.     echo $new_rtx >/root/rtx.log
    , z$ G; Q5 e$ b+ u
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
/ E2 W8 f# r0 L' }# f下面是完整脚本,看附件吧。
2 G' @8 h* z4 r; c2 E8 q一共有五个文件$ I/ N$ J. Y8 [2 ?7 I: C
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换" S! u5 x3 i  f3 ^4 Z# y
  2. netspeed.py                 #放在root下
    ) ^5 v8 u& }9 N& k/ G
  3. new.rt                         #放在root下3 U" ?- g' _% N
  4. mew.rtx                       #放在root下
    ' h& o& G% R6 U
  5. rtx                              #放在root下
复制代码
+ L: }* N: L; K7 j, d

3 [* B6 w3 C! V/ H led_control.zip (1015 Bytes, 下载次数: 114)
( Y. Z+ u- Q: {: V( I3 W8 o6 l, X6 J解压密码(刮刮乐):chwhsen% i0 O9 B) `% A- L- i6 r

7 F0 x: B- n) U
" Z, z5 |0 b3 `6 g1 H9 H
0 k) W# d3 ^, a% l1 z- F

评分

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

主题

767

回帖

3722

积分

实力垃圾佬

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

回帖

2189

积分

中级渣柚V3

积分
2189
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-5-30 04:15 , Processed in 0.079980 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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