之前在网上搜到了这篇文章:这里
觉得里面写的检测实时网速的方法可以用到HA里面,于是就搬来用了。我是直接改写了他的脚本,放到了自己的服务器的/usr/bin/中:
/usr/bin/interface_tx_speedtest:
#!/bin/bash
ethn=$1
TX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
sleep 10
TX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $10}')
TX=$(((${TX_next}-${TX_pre})/10))
TX=$(echo $TX | awk '{print $1/1024 }')
echo -e "$TX"
/usr/bin/interface_rx_speedtest:
#!/bin/bash
ethn=$1
RX_pre=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
sleep 10
RX_next=$(cat /proc/net/dev | grep $ethn | sed 's/:/ /g' | awk '{print $2}')
RX=$(((${RX_next}-${RX_pre})/10))
RX=$(echo $RX | awk '{print $1/1024 }')
echo -e "$RX"
这样就可以分别通过下面这两条命令来检测实时的网速了:
上传:
/usr/bin/interface_tx_speedtest enp4s0
下载:
/usr/bin/interface_rx_speedtest enp4s0
这里,我的网卡界面是enp4s0,个人的网卡界面不一样的,相应修改即可
那么,HA里面可以加入这样的传感器:
sensor:
# 网速
# 上传
- platform: command_line
name: Network Upload Speed
command: "/usr/bin/interface_tx_speedtest enp4s0"
unit_of_measurement: "kB/s"
scan_interval: 30
- platform: template
sensors:
network_upload_speed_mb:
friendly_name: "Network Upload Speed (MB)"
unit_of_measurement: 'MB/s'
value_template: >
{{ (states('sensor.network_upload_speed') | int()/1024) }}
# 下载
- platform: command_line
name: Network Download Speed
command: "/usr/bin/interface_rx_speedtest enp4s0"
unit_of_measurement: "kB/s"
scan_interval: 30
- platform: template
sensors:
network_download_speed_mb:
friendly_name: "Network Download Speed (MB)"
unit_of_measurement: 'MB/s'
value_template: >
{{ (states('sensor.network_download_speed') | int()/1024) }}
就可以用来监测实时网速了。我的机子运行着HA,也当下载机,所以有时在电脑上玩游戏卡顿时,可以看看服务器是不是在大量下载占用带宽。
|