Как централизованно отключать и управлять компьютерами на разных ОС в музейных экспозициях
В музеях и других учреждениях часто используется множество интерактивных экспонатов, каждый из которых работает на отдельном компьютере под управлением Windows или macOS. Когда таких устройств десятки, возникает задача удобного управления их включением и выключением, особенно с возможностью менять расписание работы без необходимости заходить на каждый компьютер вручную.
В чём проблема?
Если на каждый компьютер настраивать отдельное расписание выключения, оно становится трудно поддерживаемым: при изменении времени работы нужно править настройки на 30 устройствах. Нужно решение, позволяющее централизованно управлять этим процессом — инициировать выключение с главного компьютера (например, работающего на macOS), а также иметь возможность гибко менять расписание.
Вариант 1. Использование SSH для удалённого управления выключением
Как Windows, так и macOS поддерживают протокол SSH — удалённый терминальный доступ. Это значит, что можно посылать команды выключения с основного компьютера на остальные по сети.
- Для начала на всех компьютерах нужно включить SSH-сервер:
- На Windows 10 и выше — встроенный OpenSSH (инструкции от Microsoft: активация OpenSSH и конфигурация).
- На macOS SSH-сервер доступен по умолчанию — активировать его можно через «Системные настройки» → «Общий доступ» → «Удалённый вход» (официальная инструкция).
- Настройте на основном компьютере (macOS) SSH-ключи для безпарольного доступа:
- Сгенерируйте ключ с помощью
ssh-keygen
. - Скопируйте публичный ключ в файл
~/.ssh/authorized_keys
на каждом управляемом устройстве (требуется доступ к файловой системе или работа через GUI). - На Windows OpenSSH ожидает ключи в
C:\ProgramData\ssh\administrators_authorized_keys
для администраторского доступа.
- Сгенерируйте ключ с помощью
- После настройки можно использовать команды SSH для удалённого выключения:
- Для macOS и Linux:
ssh [email protected] "sudo shutdown -h now"
- Для Windows:
ssh [email protected] "shutdown /s /t 0"
- Для macOS и Linux:
- Напишите скрипт на Bash (или Zsh) на главном Mac, который перебирает список IP-адресов и отправляет каждой машине соответствующую команду. Например:
for ip in $(cat hosts.txt); do if [[ "$ip" == *win* ]]; then ssh [email protected]$ip "shutdown /s /t 0" else ssh [email protected]$ip "sudo shutdown -h now" fi done
Файл
hosts.txt
может содержать список адресов с пометками ОС.
Это универсальный и бесплатный метод, но требует базовых знаний сетевого администрирования и настройки SSH.
Вариант 2. PowerShell для массового выключения Windows-компьютеров
Если у вас много Windows-компьютеров, можно воспользоваться PowerShell и встроенной командой Stop-Computer
. Она позволяет удалённо выключать машины из скрипта, при необходимости с вводом учётных данных.
Пример использования:
Stop-Computer -ComputerName PC01, PC02, PC03 -Credential (Get-Credential)
PowerShell скрипты легко автоматизируются и могут выполняться как на Windows, так и на macOS (PowerShell Core кроссплатформенный). Подробнее о способах и примерах можно посмотреть здесь: Shutdown remote computers via PowerShell.
Вариант 3. Аппаратные умные розетки (Smart Plugs)
Если вы хотите избежать настройки программного обеспечения, можно использовать «умные розетки», которые включаются и выключаются по расписанию или с мобильного приложения. Они работают на уровне питания и не зависят от ОС устройств.
- Купить такие розетки можно на Amazon, AliExpress, Temu и других маркетплейсах.
- Автоматизация включения и выключения происходит через приложение или API производителя.
- Минус — риск потерять данные при жёстком отключении питания, но это обычно приемлемо для экспонатов, которые не работают с постоянно изменяющимися файлами.
Это простой и недорогой способ, если не обязательно делать «чистое» завершение работы ОС.
Вариант 4. Отслеживание доступности главного компьютера для локального выключения на клиенте
Вариант для упрощения управления без организации удалённого доступа на всех устройствах:
- Выделите один главный компьютер или сетевое устройство (например, роутер) с фиксированным IP.
- На каждом клиентском компьютере запустите скрипт, который регулярно проверяет доступность главного устройства через
ping
. - Если главный компьютер пропал из сети (закрылся или отключился), клиент понимает, что нужно завершить работу, и выполняет собственное выключение.
Это позволяет управлять выключением с минимальными требованиями к сети и настройке SSH.
Пример скрипта на macOS/Linux:
#!/bin/sh
TARGET="192.168.1.1"
Ждём, пока первый пинг будет успешен
until ping -c 1 $TARGET; do sleep 10; done
Ждём, пока пинг не перестанет проходить в течение 1 минуты
while ping -o -t 60 $TARGET; do sleep 10; done
shutdown -h now "Remote shutdown"
Для Windows (PowerShell) пример аналогичного скрипта:
$TARGET = "192.168.1.1"
Ждём успешный пинг
while (-not (Test-Connection -TargetName $TARGET -Count 1 -Quiet)) { Start-Sleep -Seconds 10 }
Ждём 1 минуту без успешного пинга, затем выключаемся
while ($true) { Start-Sleep -Seconds 10 $PingSucceeded = $false
foreach ($i in 0..60) { if (Test-Connection -TargetName $TARGET -Count 1 -TimeoutSeconds 1 -Quiet) { $PingSucceeded = $true break } } if (-not $PingSucceeded) { Stop-Computer -Force -Confirm:$false }
}
Дополнительно: включение компьютеров утром
Выключение — только половина задачи. Есть технология Wake-on-LAN (WoL), позволяющая включать компьютеры по сети, отправляя специальный пакет на сетевой адаптер. Однако работоспособность WoL зависит от оборудования и настроек BIOS/UEFI всех ПК.
Для WoL также можно написать простой скрипт, который пошлёт «магический пакет» на MAC-адреса всех машин.
Краткий обзор доступных решений
Метод | Преимущества | Недостатки |
---|---|---|
SSH + скрипты | Бесплатно, универсально, масштабируемо, гибко | Требует сетевой настройки, навыков работы с SSH, конфигурации ключей |
PowerShell для Windows | Простое решение для Windows, удобный скриптинг, работает из-под macOS | Требует Windows и админ-доступ, настройка учётных данных |
Умные розетки (Smart Plugs) | Просто и быстро, не зависит от ОС, дешевле аппаратного администрирования | Жёсткое отключение, возможны проблемы с данными, нет «чистого» выключения |
Скрипт пинга и выключение при потере связи с главным ПК | Простой метод, не требует сложной настройки сети и SSH | Требует запущенный скрипт на каждом клиенте, полагается на стабильность сети |
Рекомендации
- Если есть опыт работы с сетью и SSH, лучше выбрать способ с дистанционным выполнением команд через SSH и скрипты — он наиболее гибкий и надёжный.
- Для чисто Windows-среды PowerShell — простой и удобный инструмент.
- Если хочется быстро и с минимальными знаниями — «умные розетки» помогут решать задачу без вмешательства в ОС, но рискуйте с данными.
- Если настройка удалённого доступа кажется сложной, можно рассмотреть метод с пингом главного компьютера и скриптом на каждом компьютере — он минимально требователен к инфраструктуре.
- Не забудьте про технику включения устройств с утра — Wake-on-LAN эффективен, но зависит от конкретного железа.
Так можно построить централизованное управление выключением десятков компьютеров с возможностью менять расписание и контролировать процесс из одного места.