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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制  w3 i& w7 i7 T% u
聊一聊x3p的LED控制机制4 b5 d$ j6 L% ^8 U4 m. g& U! l
和用led来显示硬盘温度! T; z7 I7 k  Z" x
让你的RGB灯来指示系统温度
3 C3 |; C- D, V( Q2 M+ q6 U4 ?现在我们可以进一步让led来显示系统网速,且往下看
- t, w, a$ d: ]7 V需要用到一个python脚本来获取系统的联网状态以及各个io状态
& L* z+ y/ S; E; ]; U
  1. import psutil
    7 z) [  T' r0 P! G3 U( L
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
8 J: Q1 @. L8 G- s% ^
  1. {8 n6 h! G1 y, G- z8 P; {- k' z5 _
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),! J: U9 h, w, d+ n  }
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),4 A9 ^# n$ x1 Z( G
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),/ Z0 }3 q& c, B3 V7 c, X1 E
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),8 K4 `2 l0 M+ L4 x0 `0 }
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),6 B- V! S7 s4 |; B* c) _; f
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    5 T' m8 X, L/ k. G! j" T* ?. Y
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
+ Q4 J+ L- ?7 O! K: v 批注 2019-10-06 120535.png
4 Z8 P: A  T( R9 _0 K; d* i4 v" F因为网速差别实在太大,所以我用了分级显示的方案:
8 q5 I3 N- I  C7 X+ ?1 q, c  N网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯5 z+ ?: Y4 h8 l) ^0 ^6 D, u5 ]
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯% `- @! M$ n9 z5 ]  K
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。/ e1 d1 q# O9 q, D
  1. net_led_dn() {1 u1 N0 B/ ~$ M/ r/ ^, J' n
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx- r- f5 ]; P! z$ Z) N' Y
  3.     new_rtx=$(cat /root/new.rtx)
    $ F! o3 n! H, Q. c+ T9 r* X6 ^
  4.     old_rtx=$(cat /root/rtx.log)5 P0 [! a# o3 r) L8 [
  5.     rtx=$(expr $new_rtx - $old_rtx)
    & E8 z/ [6 n/ U" i7 Z) F
  6.     echo $rtx& F+ J! B8 x( ^  h, ^
  7.     if [ $rtx -lt 1024 ]; then9 f4 N# q6 X/ V" h9 r8 L" J
  8.                                                                                                                                                                                               # w" l- ~; N8 r( F: u
  9.         rtx_led=$(expr $rtx / 4)
    4 m0 D4 A- K0 y3 n$ o% t) |
  10.                                                                                                                                                                                              
    : t6 h& c  V! h1 |# s2 J
  11.         set_led c1 $rtx_led 0
    " K$ X  T$ J& ?# Q$ i7 E, a4 R
  12.         set_led c2 0 0
    1 w- E- w  f# m* t6 Q1 }
  13.         set_led c3 0 01 a. P5 y8 m' X1 t7 W+ P
  14.                                                                                                                                                                                              
    6 y$ K, [. g# Q. @  t' y
  15.     elif [ $rtx -lt 1048576 ]; then6 E7 Y9 A3 n: ]% \
  16.         rtx_led=$(expr $rtx / 4096)) E; ^! v/ o4 T' C
  17.         set_led c1 0 0- z$ C1 u( p$ j* x
  18.         set_led c2 $rtx_led 0
    4 |( k' u. h9 H9 J& ]
  19.         set_led c3 0 08 |' @3 w$ ^, D* a8 q
  20.     elif [ $rtx -lt 1073741824 ]; then/ l+ {# r! f) t3 \8 f
  21.         rtx_led=$(expr $rtx / 4194304)9 y' S: ]4 g1 Q  ^2 o' W
  22.         set_led c1 0 09 {: ?! l- i4 d6 \' B! O
  23.         set_led c2 0 0
    " y8 x" ?" d- d- W% I
  24.         set_led c3 $rtx_led 0
    ; Q" a- \2 s+ X8 y. Z
  25.     fi
    1 C6 T7 i% s* ]# X7 ~3 j9 Q
  26.     echo $new_rtx >/root/rtx.log& V- L+ h5 f* O+ o' ^
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。; \0 f- ~6 p" ]
下面是完整脚本,看附件吧。
5 Z6 u! c" Q% M" J- m7 h一共有五个文件% b/ B# h; h8 U5 A
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换, U; u6 K- r( a+ q+ h4 }, V
  2. netspeed.py                 #放在root下 / X5 @2 g% B0 u2 x8 w
  3. new.rt                         #放在root下! G* ]7 e% v  f' @2 J
  4. mew.rtx                       #放在root下5 M, }: R$ }6 J5 `
  5. rtx                              #放在root下
复制代码
$ B$ w6 z9 w. R( Q! }5 _

1 @1 c" o; m+ b3 Z% ]9 m4 } led_control.zip (1015 Bytes, 下载次数: 114) $ F! `: D& y) o. w6 x4 T
解压密码(刮刮乐):chwhsen
% ^, A! V+ U" ^: v# a. |, r
! X" f3 y: u8 m& Q) h4 y% n
2 ]1 A/ g( ]' J* s$ y% T- t& ?

5 i  ~% B! C. V# |

评分

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

查看全部评分

8

主题

50

回帖

320

积分

中级渣柚V1

积分
320
发表于 2019-10-6 12:51:07 | 显示全部楼层
谢谢分享

4

主题

765

回帖

2943

积分

中级渣柚V3

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

主题

395

回帖

2118

积分

中级渣柚V3

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

4

主题

40

回帖

243

积分

中级渣柚V1

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

本版积分规则

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

GMT+8, 2026-1-1 03:19 , Processed in 0.083252 second(s), 6 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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