Добавить 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