74 lines
2.7 KiB
Bash
74 lines
2.7 KiB
Bash
|
#!/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
|