В данной статье будет приведен код для bat скрипта выводящего данные с температурных датчиков датчиков с ПО aida64 business и поиск определенных значений, при успешном нахождении строки со значением происходит вывод оповещения в чат телеграмм.
Необходимо установить aida64 business - кликабельно.
Создадим текстовый файл 1.bat в каталоге C:\Sensors\ со следующим содержимым
https://github.com/Aleksandr7xXx/TGBotSensorsTemp/blob/main/1.bat
Содержимое доступно по ссылке выше
Также создадим файл aida64.rpf в каталоге C:\Sensors\ со следующим содержимым
ReportProfile="Custom"
ProfileFile=""
ReportFormat="txt"
RemoteReportFolder="Reports"
RemoteReportFileName="$HOSTNAME"
InfoPage="Computer;Sensor"
Далее для использования мониторинга необходимо лишь добавить свои значения
SET TOKEN=Token_вашего_бота
SET CHAT_ID=-ID_вашего_чата
После запустить файл 1.bat и скрипт соберет и при необходимости оповестит вас.
Как получить данные Token_вашего_бота и ID_вашего_чата можно прочитать в статье.
Для реализации запуска бота командой из чата телеграмм необходимо применить знания из статьи.
Чтобы бот автоматически ограничивал максимальную температуру железок необходимо применить знания из статьи.
Автозапуск скрипта с помощью scheduler windows.
Для выполнения скрипта в определенный период времени необходимо добавить его, например в scheduler windows(планировщик заданий) следующим образом:
Разбор кода скрипта:
"C:\Program Files (x86)\AIDA64\aida64.exe" /R C:\Sensors\1.txt /SILENT /IDLE /TEXT /CUSTOM C:\Sensors\aida64.rpf
Указывается путь до aida и файла шаблона для вывода данных, также параметры описанные в документации
setlocal enabledelayedexpansion
Включаем расширенную обработку команд
set nd=32& set kd=53& set nd2=1& set kd2=20
for /l %%a in (%nd%,1,%kd%) do set "ns=!ns! /c:"^\[%%a\]""
for /l %%a in (%nd2%,1,%kd2%) do set "ns=!ns! /c:"^\[%%a\]""
<"C:\Sensors\1.txt">"C:\Sensors\2.txt" (for /f "tokens=2 delims=[]" %%a in ('find /n /v ""^|findstr/rv%ns%') do echo %%a)
Обрезаем с 1 по 20 и с 32 по 53 строки файла содержащие лишнюю информацию после чего записываем полученный результат в файл 2.txt
FINDSTR "[8-9][0-9]" C:\Sensors\2.txt > C:\Sensors\4.txt
::@<"C:\Sensors\2.txt">"C:\Sensors\4.txt" (for %%i in ("75" "76" "77" "78" "79" "80" "81" "82" "83" "84" "85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" "100" "101" "102") do @find %%i)
::@<"C:\Sensors\2.txt">"C:\Sensors\4.txt" (for %%i in ("85" "86" "87" "88" "89" "90" "91" "92" "93" "94" "95" "96" "97" "98" "99" "100" "101" "102") do @find %%i)
Первый параметр FINDSTR "[8-9][0-9]" производит поиск в файле со значениями 80-99 и выводит их в файл 4.txt
Также для более детального поиска значений например 75-102 или 85-102 приведены 2 закомментированные "::" строки ниже , можно раскомментировать одну из них убрав "::".
For /F "delims=" %%a in (C:\Sensors\4.txt) do (
set /A count+=1
if !count!==1 curl -s -X POST %URL% -d chat_id=%CHAT_ID% -d text="%%a"
Если скрипт нашел данные (температуры) заданные в предыдущем шаге, то скрипт запишет их в файл 4.txt и данная часть команд отправит заданные строки if !count!==1 if !count!==2 и т.д. в телеграмм канал с помощью curl.
Максимум можно отправить 20 строк, после чего происходит 30 секундный таймаут на отправку сообщений. В скрипте реализован таймаут строками
::TIMEOUT 30
::SetLocal EnableExtensions EnableDelayedExpansion
::set count=0
::For /F "delims=" %%a in (C:\Sensors\1.txt) do (
:: set /A count+=1
:: if !count!==21 curl -s -X POST %URL% -d chat_id=%CHAT_ID% -d text="%%a"
::)
При необходимости отправки более 20 строк из файла раскомментировать и задать отправку необходимых строк добавив строку
if !count!==21 curl -s -X POST %URL% -d chat_id=%CHAT_ID% -d text="%%a"
и изменив значение 21 на номер отправляемой строки.