Проверьте, работает ли машина UP / ALIVE - PullRequest
0 голосов
/ 16 февраля 2010

Я хочу проверить, запущен ли удаленный компьютер (после перезагрузки / перезаписи) с помощью C #.

Прямо сейчас, все, о чем я могу думать, это запустить команду PING и проверить, ответит ли машина. Есть ли элегантные способы?

Спасибо!

EDIT

Одна из моих проблем заключается в том, что PING обычно отвечает ОДИН РАЗ, когда машина запустила Windows. Некоторые службы могут быть не запущены к тому времени. См. Ответ Андерса Линдала.

Ответы [ 5 ]

7 голосов
/ 16 февраля 2010

Учитывая, что PING по сути предназначен для того, чтобы делать именно то, что вы пытаетесь сделать (посмотрите, доступна ли машина и отвечает), я бы сказал, что это уже довольно элегантно. Зачем все усложнять?

1 голос
/ 25 апреля 2011

С помощью команды NMAP nmap -sS -P0 -sV -O

Где может быть отдельным IP, именем хоста или подсетью

-SS TCP SYN сканирование (также называется полуоткрытым или скрытным сканированием) Опция

-P0 позволяет отключать эхо-запросы ICMP.

Опция

-sV включает определение версии

-O флаг попытки идентифицировать удаленную операционную систему

Другая опция:

-А опция включает как дактилоскопирование ОС, так и определение версии

-v дважды использовать -v для большей детализации.

nmap -sS -P0 -A -v

1 голос
/ 16 февраля 2010

Ping обычно достаточно для проверки правильности перезагрузки компьютера, но если для запуска вы используете какой-либо сервис на компьютере, вы можете проверить это явно. Взгляните на использование WMI для запроса:

0 голосов
/ 16 февраля 2010

Я не знаю об элегантном, но в зависимости от (a) некоторых машин можно настроить так, чтобы они не реагировали на эхо-запросы как потенциальную DoS-атаку и (b) какой у вас доступ к машине, возможно, сценарий PowerShell может быть полезным. PowerShell можно использовать в интрасети, чтобы определить, включен ли компьютер, определить состояние различных служб компьютера, получить доступ к базам данных SQL на этом компьютере, вызвать / отключить службы приложений и т. Д. Опять же, в зависимости от того, что вам нужно сделать, C # может не подходить для работы.

0 голосов
/ 16 февраля 2010

Почему вы думаете, что ping - плохая идея? Я не думаю, что вам придётся отправлять хосту что-то и проверять, отвечает ли он, и на самом деле нет такой маленькой программы, как ping, которая делает это. А с помощью ping вам не нужно реализовывать что-то самостоятельно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...