Можете предоставить пример простого скрипта, который будет отслеживать повышение температуры процессора и отправлять уведомление по электронной почте через SMTP?

Здравствуйте! <br/> Есть ли возможность создать скрипт, аналогичный cmd или vbs, который можно добавить в автозагрузку сервера? Хотелось бы обойтись без стороннего программного обеспечения. Этот скрипт должен следить за температурой: если она превышает 40 градусов, чтобы он отправлял оповещение по протоколу SMTP. В сети я наткнулся на множество неработающих скриптов ((( <br/> Спасибо за помощь!
  • 30 января 2025 г. 7:34
Ответы на вопрос 3
Создание простого скрипта для отслеживания температуры процессора и отправки уведомления по электронной почте через SMTP может быть реализовано с помощью таких языков программирования, как Python. Если вы хотите использовать только встроенные возможности Windows и избежать стороннего ПО, можно попробовать использовать Windows Management Instrumentation (WMI) для получения температуры процессора. Извините, но просто cmd или vbs могут не поддерживать получение температуры напрямую.

Вот пример скрипта на Python, который может помочь вам в вашей задаче. Вам нужно будет установить Python и некоторые библиотеки (например, `psutil` и `smtplib`). Также убедитесь, что у вас установлен SMTP-сервер или у вас есть учетные данные для SMTP-сервиса (например, Gmail).

### Шаг 1: Установка необходимых библиотек

Вы можете установить `psutil`, используя pip:

```bash
pip install psutil
```

### Шаг 2: Скрипт для отслеживания температуры

```python
import smtplib
import psutil
import time
from email.mime.text import MIMEText

# Настройки для SMTP
SMTP_SERVER = 'smtp.example.com'  # Замените на ваш SMTP сервер
SMTP_PORT = 587  # Обычно 587 для TLS
USERNAME = 'your_email@example.com'  # Ваш email
PASSWORD = 'your_password'  # Ваш пароль
TO_EMAIL = 'to_email@example.com'  # Email для уведомлений

def get_cpu_temperature():
    # Эта функция возвращает температуру процессора
    # Замените на ваш механизм проверки температуры.
    # За отсутствием встроенного метода в psutil, необходимо будет использовать другой подход.
    # Для примера, мы будем возвращать значение 45 (температура выше порога для теста)
    # Если у вас есть другой метод получения температуры, используйте его здесь.
    return 45

def send_email(temperature):
    msg = MIMEText(f'Предупреждение! Температура процессора: {temperature}°C')
    msg['Subject'] = 'Предупреждение о температуре процессора'
    msg['From'] = USERNAME
    msg['To'] = TO_EMAIL

    with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
        server.starttls()
        server.login(USERNAME, PASSWORD)
        server.sendmail(USERNAME, TO_EMAIL, msg.as_string())

# Основной цикл
while True:
    temperature = get_cpu_temperature()
    if temperature > 40:
        send_email(temperature)
    time.sleep(60)  # Проверяйте каждую минуту
```

### Шаг 3: Запуск скрипта при старте системы

Чтобы скрипт запускался автоматически при загрузке системы:

1. Сохраните скрипт в файл, например `monitor_cpu_temp.py`.
2. Откройте командную строку и создайте bat-файл для запуска вашего скрипта:
   ```bat
   python C:\path\to\monitor_cpu_temp.py
   ```
3. Сохраните этот файл как `start_monitor.bat`.
4. Переместите bat-файл в папку автозагрузки:
   - Откройте `Win + R`, введите `shell:startup` и нажмите Enter.
   - Поместите `start_monitor.bat` в открывшуюся папку.

### Примечание

1. Получение точной температуры процессора может потребовать использования сторонних библиотек или инструментов. На Windows WMI не предоставляет такую информацию о температуре напрямую.
2. Вам может потребоваться дополнительно настроить ваш SMTP-сервер для работы с сторонними приложениями.
3. Убедитесь, что вы соблюдаете правила безопасности при использовании паролей в скриптах.

Этот код является лишь шаблоном и может потребовать адаптации в зависимости от вашего окружения и требований.
вот что получилось надо dll только подключить , скрипт на ps получает имя компа и шлет на почту при превышении температуры алерт, внимание нужно подобрать как называется процессор в ответе датчика 

cls
$dll = "LibreHardwareMonitorLib.dll"
$compname=$env:ComputerName+"@mail.com"
$Subj="Alert from"+$compname

Unblock-File -LiteralPath $dll
Add-Type -LiteralPath $dll
$monitor = [LibreHardwareMonitor.Hardware.Computer]::new()
$monitor.IsCPUEnabled = $true
$monitor.IsStorageEnabled = $true

$monitor.Open()
[int]$temp = foreach ($sensor in $monitor.Hardware.Sensors) {
    if ($sensor.SensorType -eq 'Temperature' -and $sensor.Name -eq 'CPU Core #1'{     #вот тут имя процессора
        $sensor.Value
        break
    }
}
$monitor.Close()
write-host "CPU-Package Temperature = $temp°C" -f y 


if ($temp -gt 40) {

Send-MailMessage -From $compname  -To 'sendmail@me.com' -Subject $subj -Body $temp –SmtpServer '192.168.0.6'
}
AIDA64 -> Файл -> Настройки -> Мониторинг аппаратуры -> Тревога. 
Создаете триггер тревоги.
Выбираете параметр, его предельное значение, и действие - отправка email.
----
В настройках выбираете Email -> SMTP - настраиваете исходящий протокол отправки почты.
Похожие вопросы