Проверьте, включен ли компьютер

Я написал простую страницу php, которая отправляет пакеты wake-on-lan на пару моих компьютеров, на которых установлена ​​Windows 7.

Как я могу проверить, включены ли компьютеры (при условии, что на месте работает интернет)?

Можно ли как-нибудь пинговать компьютер при загрузке страницы, чтобы проверить ответ?

Дополнительная информация: Все компьютеры находятся в разных местах, где у них есть динамическая настройка DNS для IP-адреса, и все они находятся за маршрутизатором с другими компьютерами.

2 ответа

Решение

Я могу удаленный рабочий стол всех компьютеров через Windows RDC, я открыл порт 3389 для них, а также отдельный порт WOL, чтобы у них было два открытых порта

Тогда попробуйте открыть сеанс удаленного рабочего стола?

<?php
$timeout = 10;
$socket = @fsockopen( 'ip-of-the-client', 3389, $errno, $errstr, $timeout );
$online = ( $socket !== false );

var_dump( $online );

@ в коде, потому что fsockopen выдаст предупреждение PHP, когда соединение не может быть установлено.

РЕДАКТИРОВАТЬ: ради ясности; 3389 - это порт по умолчанию, используемый для создания подключения к удаленному рабочему столу.

В соответствии с этим:

Я могу удаленно подключить все компьютеры через Windows RDC, я открыл для них порт 3389, а также отдельный порт WOL, чтобы у них было два открытых порта.

Лучше всего (кроме пинга ICMP, который может быть заблокирован), поскольку RDP открыт, вероятно, было бы открыть TCP-сокет для порта 3389, который подтвердил бы, что компьютер подключен к сети и полностью загружен (т.е. работает служба RDP).,

Просто сделайте это с помощью fsockopen, вот так:

function ServiceOnline($ip, $port = 3389) {
    $rdp_sock = @fsockopen($ip, $port, null, null, 5); // 5 sec timeout so that it doesn't hang for a whole minute if not available
    if (!$rdp_sock) {
        return false;
    } else {
        fclose($rdp_sock);
        return true;
    }
}

Вы также можете использовать этот код, если другой сервис доступен как запасной вариант, например, путем передачи $port аргумент.

Другие вопросы по тегам