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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
chwhsen 发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式 IP:–河南–鹤壁 联通
之前我们你已经说过了led管控机制
1 t( a: x- R2 f8 X 聊一聊x3p的LED控制机制
7 ~9 v+ A7 P# O4 J9 S+ Z( \和用led来显示硬盘温度9 X$ l4 R4 o: K3 ?( q$ @" m
让你的RGB灯来指示系统温度
( }6 [2 P. I; V现在我们可以进一步让led来显示系统网速,且往下看
1 c, W3 p; q) W2 s" s需要用到一个python脚本来获取系统的联网状态以及各个io状态
4 C) C' i* t# r+ V
  1. import psutil) @; e, O: h4 o* K# B7 F  e/ O. H) t
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的. ~7 I$ V, Q, ^/ z: r
  1. {
    % ~5 V- m. v/ b' Z
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),1 `, [- q: d5 j9 k; v: P
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),7 A1 D' i- l) u, O# W( D
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),. N% ?* m. X) p
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),5 `: b8 ^' [/ ]8 ^$ b! u  O
  6.         'ip_vti0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),. [: K3 i' I$ N# e; l* F1 e/ e
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    $ w" y0 o: @' H( C* ^9 q& z/ O
  8. }
复制代码
有了数据就能够处理数据转化为网速了。
9 E  M. A- l+ W' n+ D3 ]/ b 批注 2019-10-06 120535.png
1 r0 w/ ?* U# v7 o: M4 S+ `5 m因为网速差别实在太大,所以我用了分级显示的方案:* K/ e3 ]* Y; o$ |7 a6 R( {- {7 U$ G
网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯
+ ^' M/ {$ |3 b; @4 O网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯
! Z: p1 B5 X( t: x3 S6 u网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。# O5 r, V) h/ L# Q, t3 r
  1. net_led_dn() {( h& Y/ Q2 X; u- e. h/ A
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx7 D6 x/ Y" E, r  H. K
  3.     new_rtx=$(cat /root/new.rtx)+ e. {1 _& Q* @) n0 t3 o
  4.     old_rtx=$(cat /root/rtx.log)4 ?  z$ Z: f/ ?" w# ^5 c# w, M6 m
  5.     rtx=$(expr $new_rtx - $old_rtx)! m' x0 v; ?8 a! \$ N2 ~
  6.     echo $rtx; z' y7 s+ G; H) X' O
  7.     if [ $rtx -lt 1024 ]; then2 W: M. C7 E7 U8 w/ s
  8.                                                                                                                                                                                               / [: B6 L5 S$ c- O% l- N
  9.         rtx_led=$(expr $rtx / 4)% }" _$ @# J/ r, _# v' n  R+ t
  10.                                                                                                                                                                                              
    ! v! u! [2 ]4 |2 L! a! S. B) H
  11.         set_led c1 $rtx_led 0
    " i6 \/ x- t$ U* _7 G% f
  12.         set_led c2 0 07 @# x4 p5 ~6 i
  13.         set_led c3 0 03 ^* J1 r! @/ V9 Q8 t& P
  14.                                                                                                                                                                                              
    4 _3 U; q' i3 e! U0 S& `) N
  15.     elif [ $rtx -lt 1048576 ]; then) N9 u6 _* [2 Y+ c
  16.         rtx_led=$(expr $rtx / 4096)
    8 l) x3 H& c' s  |& q0 U
  17.         set_led c1 0 0/ k/ C0 \7 I" }  X8 x9 [+ {
  18.         set_led c2 $rtx_led 01 ]1 Z3 j0 x. R1 ~9 F: {
  19.         set_led c3 0 0
    0 P2 E4 }4 T5 o8 U1 U& S
  20.     elif [ $rtx -lt 1073741824 ]; then( U) B8 C' S2 |" l; R& {# ?
  21.         rtx_led=$(expr $rtx / 4194304)
    9 R' q/ d" [( h6 y
  22.         set_led c1 0 0
    : c7 R- B* {. l$ e
  23.         set_led c2 0 0" ~$ s! R/ @& `
  24.         set_led c3 $rtx_led 07 B6 X+ h  x( l( Y* f, W% H& v
  25.     fi
    5 `! [4 s$ O' ~) B- g6 E
  26.     echo $new_rtx >/root/rtx.log
    ' o2 b: }1 ~$ i
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。1 G& {* q& J- X. |6 N1 x; z
下面是完整脚本,看附件吧。
7 O  w, {7 @- T0 U" g% J2 i一共有五个文件  s4 i2 A& L2 k: l: |: [: ?. j* _. @
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换. V! D& {7 z/ Q* E: M5 d
  2. netspeed.py                 #放在root下 8 ?% @0 _+ ~9 T9 o, G
  3. new.rt                         #放在root下1 J5 W6 O0 @# o$ ]/ s
  4. mew.rtx                       #放在root下& t& \5 R6 D4 f8 @
  5. rtx                              #放在root下
复制代码

9 V9 t# z" D. I" z5 N
5 _3 K% Y- }  H7 g6 R9 ~; ^; p led_control.zip (1015 Bytes, 下载次数: 114) 6 S4 C7 S. y/ D6 ?
解压密码(刮刮乐):chwhsen
3 U) ~( D: d* p; Q& n4 ?, m+ ^- k8 W6 g* B
8 x5 ]! v/ @8 @. X- B! q7 X
/ ^7 n! K9 K8 \( s) p- m

评分

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

回帖

4460

积分

实力垃圾佬

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

回帖

2210

积分

中级渣柚V3

积分
2210
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-7-29 03:37 , Processed in 0.098923 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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