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

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

 火.. [复制链接]

21

主题

86

回帖

902

积分

中级渣柚V2

积分
902
发表于 2019-10-6 12:23:16 | 显示全部楼层 |阅读模式
之前我们你已经说过了led管控机制
- T& X7 r+ u9 f8 O6 `$ C; @7 F 聊一聊x3p的LED控制机制% l9 r" W, f: a' @5 u6 \, E9 k  [2 o
和用led来显示硬盘温度5 Q  G8 S% B$ j( S& r) r
让你的RGB灯来指示系统温度
3 b; _% G% Z* o0 n, J  G( O/ d- o现在我们可以进一步让led来显示系统网速,且往下看5 ~3 C: n  s$ a% T9 k  t& U
需要用到一个python脚本来获取系统的联网状态以及各个io状态
/ D3 Q  p' k7 S
  1. import psutil: M: a; A1 A( M% }0 d9 R% v
  2. print(psutil.net_io_counters(pernic=True))
复制代码
输出结果是下面的
+ x& {( m- B7 H, `
  1. {' v) Z( `4 W5 Q; U
  2.         'bond0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    3 E# m- U3 E2 s1 Y' C
  3.         'lo': snetio(bytes_sent = 371531983, bytes_recv = 371531983, packets_sent = 649842, packets_recv = 649842, errin = 0, errout = 0, dropin = 0, dropout = 0),5 `: Z& N, P2 P: S9 W
  4.         'tun0': snetio(bytes_sent = 300576, bytes_recv = 0, packets_sent = 9393, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),
    6 \, w5 _" h: ?6 }9 W8 z
  5.         'sit0': snetio(bytes_sent = 0, bytes_recv = 0, packets_sent = 0, packets_recv = 0, errin = 0, errout = 0, dropin = 0, dropout = 0),& T+ x6 N# G) 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),
    2 v$ Y- D2 ~+ d; x9 f
  7.         'eth0': snetio(bytes_sent = 10911429402, bytes_recv = 387312110, packets_sent = 722569, packets_recv = 1194110, errin = 0, errout = 0, dropin = 5, dropout = 0)
    6 q1 J) Z& l: G* N- Q
  8. }
复制代码
有了数据就能够处理数据转化为网速了。9 L% u0 a+ ^2 p  f/ s* H
批注 2019-10-06 120535.png
. D' R4 o4 h3 }$ C因为网速差别实在太大,所以我用了分级显示的方案:
+ B( g" t6 s+ y0 H& Q网速为B级别时显示红灯,网速越大,红灯越亮,不过放心,几乎看不到红灯" o+ o$ y9 F4 A7 M2 \0 H/ a' T* @
网速为K级别时显示绿灯,网速越快,绿灯越绿。这个比较常见,几乎上硬盘待机时就一直是绿灯; b0 R2 \2 b. I* q; g6 g, R
网速为M级别时显示蓝灯,网速越高,蓝灯越艳丽,当你下载东西或者往硬盘传文件时就是蓝灯了。
) a: Q# c$ L- c0 y# ?* e: G
  1. net_led_dn() {: ~! e* |& a: c7 B$ ]
  2.     python /root/netspeed.py | sed -e "s/'/\n/g" -e 's/, /=/g' | grep } | awk -F '=' '{print $4}' >/root/new.rtx! Y. T3 v/ Y* N/ r8 [
  3.     new_rtx=$(cat /root/new.rtx). J- C5 W4 g: Z% L3 l
  4.     old_rtx=$(cat /root/rtx.log); a) C: ^2 y) |+ M0 I5 D/ u1 m- h
  5.     rtx=$(expr $new_rtx - $old_rtx), W! [9 _8 z& X; g2 `2 V5 _
  6.     echo $rtx1 d  m  C( B% R; Q
  7.     if [ $rtx -lt 1024 ]; then% R. W; Y  G$ ?0 ~  u. Z1 ]
  8.                                                                                                                                                                                               + ]3 o& f# B2 I& ]/ m# a( |5 d
  9.         rtx_led=$(expr $rtx / 4)
    1 N( o5 W+ i$ v3 B4 J' ?5 ?; G; g# h
  10.                                                                                                                                                                                              
    ; u2 }+ `) i# a2 o2 ~* U
  11.         set_led c1 $rtx_led 02 y3 F3 @: _% H* a. g/ r
  12.         set_led c2 0 0
    4 w5 l* T  l6 Z% J
  13.         set_led c3 0 0
    3 I7 ?  {  _5 r5 H& \. d( w4 W$ t
  14.                                                                                                                                                                                              
    . z( n" R6 _* {
  15.     elif [ $rtx -lt 1048576 ]; then9 Z- [) z  c, n6 _" |
  16.         rtx_led=$(expr $rtx / 4096)9 n& Y7 C2 z9 O+ o' i1 k
  17.         set_led c1 0 0
    3 W$ [: J% m9 Z
  18.         set_led c2 $rtx_led 06 w( G  x" s) N' c  o
  19.         set_led c3 0 0
    7 B2 ^% L$ K' Z
  20.     elif [ $rtx -lt 1073741824 ]; then
    % F7 b  @# w) D. I% _
  21.         rtx_led=$(expr $rtx / 4194304): J6 k+ L8 e$ `: C; k
  22.         set_led c1 0 0
    " c( b! t: q& U
  23.         set_led c2 0 0
    3 f# o) I: y) W' V: _, J
  24.         set_led c3 $rtx_led 09 Q: _+ Y& e. t' r# O) P3 F" S5 e
  25.     fi
    6 {' C6 t2 U1 m$ U- ]6 _
  26.     echo $new_rtx >/root/rtx.log+ H5 z$ U& `% L1 S
  27. }
复制代码
这个只是显示下载网速的,如果想要显示上传网速也很简单,把第二行的$4改为$2就行了。
3 J/ Y! O( h# [- _% e' n& v" t下面是完整脚本,看附件吧。
& E# }+ `0 e8 R/ H一共有五个文件
) H+ e6 u! u9 ]$ l6 J! T
  1. ledstatus.sh                  #放在/opt/bin文件夹下替换( N8 R" @$ d' [0 e* C3 k9 k
  2. netspeed.py                 #放在root下
    ' G$ A  L4 c$ ~: r
  3. new.rt                         #放在root下7 h' L+ t" f8 f( _$ z1 }1 Z$ ]
  4. mew.rtx                       #放在root下0 S! j) K$ g. _2 ]* K
  5. rtx                              #放在root下
复制代码
# Q; _/ G1 B6 l4 Z- Y
$ o3 X3 T( O0 g# B, d; t
led_control.zip (1015 Bytes, 下载次数: 114)
1 c" a9 M1 k3 f) ?8 G解压密码(刮刮乐):chwhsen9 V9 H6 F/ c$ H

$ l  \; {$ T$ V: e9 ?, {/ p3 Z/ k( W/ g2 S" T6 @
+ r+ ~/ o; B( r* Q' K0 i+ w

评分

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

回帖

2766

积分

中级渣柚V3

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

回帖

2032

积分

中级渣柚V3

积分
2032
发表于 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-6-3 10:07 , Processed in 0.412616 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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