Добавить divoom_mon.sh
This commit is contained in:
parent
78fc69cdf1
commit
60d43a2000
74
divoom_mon.sh
Normal file
74
divoom_mon.sh
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Проверка установленных программ
|
||||||
|
check_dependencies() {
|
||||||
|
dependencies=("jq" "sensors" "mpstat")
|
||||||
|
|
||||||
|
for dep in "${dependencies[@]}"; do
|
||||||
|
if ! command -v "$dep" &>/dev/null; then
|
||||||
|
echo "Ошибка: Требуемая программа '$dep' не установлена."
|
||||||
|
echo "Установите её и повторите запуск скрипта."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
# Получение IP устройства и его ID
|
||||||
|
get_device_info() {
|
||||||
|
response=$(curl -s https://app.divoom-gz.com/Device/ReturnSameLANDevice)
|
||||||
|
DevicePrivateIP=$(echo "$response" | jq -r '.DeviceList[0].DevicePrivateIP')
|
||||||
|
DeviceId=$(echo "$response" | jq -r '.DeviceList[0].DeviceId')
|
||||||
|
}
|
||||||
|
|
||||||
|
get_cpu_usage() {
|
||||||
|
# Получаем информацию о загрузке CPU через mpstat (1 секунда, 1 отчет)
|
||||||
|
CpuUse=$(mpstat 1 1 | grep "Average" | awk '{printf "%.0f", 100 - $12}')
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для получения параметров системы
|
||||||
|
get_system_info() {
|
||||||
|
# Вычисляем использование CPU
|
||||||
|
get_cpu_usage
|
||||||
|
|
||||||
|
# GPU использование
|
||||||
|
GpuUse=$(nvidia-smi --query-gpu=utilization.gpu --format=csv,noheader,nounits) || GpuUse="0"
|
||||||
|
|
||||||
|
# Температура CPU
|
||||||
|
CpuTemp=$(sensors | grep -m 1 "Tctl:" | awk '{printf "%.0f", $2}' | tr -d '+°C')
|
||||||
|
|
||||||
|
# Температура GPU
|
||||||
|
GpuTemp=$(nvidia-smi --query-gpu=temperature.gpu --format=csv,noheader,nounits) || GpuTemp="0"
|
||||||
|
|
||||||
|
# Использование RAM
|
||||||
|
RamUse=$(free | grep Mem | awk '{printf "%.0f", $3/$2 * 100.0}')
|
||||||
|
|
||||||
|
# Использование HDD
|
||||||
|
HardDiskUse=$(df / | tail -1 | awk '{print $5}' | tr -d '%')
|
||||||
|
}
|
||||||
|
|
||||||
|
# Функция для отправки данных
|
||||||
|
send_data() {
|
||||||
|
curl -s -X POST "http://$DevicePrivateIP:80/post" \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"Command":"Device/UpdatePCParaInfo","ScreenList":[{"LcdId":'"$DeviceId"',"DispData":["'"$CpuUse"'","'"$GpuUse"'","'"$CpuTemp"'","'"$GpuTemp"'","'"$RamUse"'","'"$HardDiskUse"'"]}]}' \
|
||||||
|
> /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Проверяем установленные программы
|
||||||
|
check_dependencies
|
||||||
|
|
||||||
|
# Получаем DevicePrivateIP и DeviceId
|
||||||
|
get_device_info
|
||||||
|
|
||||||
|
# Проверяем успешность получения данных
|
||||||
|
if [[ -z "$DevicePrivateIP" || -z "$DeviceId" ]]; then
|
||||||
|
echo "Ошибка: Не удалось получить данные устройства."
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Запуск основного цикла
|
||||||
|
while true; do
|
||||||
|
get_system_info
|
||||||
|
send_data
|
||||||
|
sleep 1 # время задержки между вызовами
|
||||||
|
done
|
Loading…
Reference in New Issue
Block a user