Код для автоматического определения машин

Мне нужно написать программу, которая автоматически обнаруживает Windows и Unix-машины в C# в сети, затем скопировать папку из общего каталога Windows на удаленную машину и собрать, сколько процессоров на машине. Я не знаю каких-либо функций C#, которые бы помогли обнаружить машины и их ips. У меня нет доступа к активной директории или центральный сервер для всех машин. Я могу создать Perl-программу для запуска на клиентских машинах. (также я не уверен, как получить доступ к общим ресурсам Windows на Unix-машинах). Общее руководство и примеры кода будут благодарны.

2 ответа

Решение

Вы можете использовать Nmap для обнаружения сетевых машин, он не требует клиентов и с параметром -O сообщит, работает ли на компьютере ОС Windows или Linux. Затем вы можете использовать SNMP или WMI для получения количества процессоров, даже если для этого требуется, чтобы на компьютерах был установлен SNMP или WMI. Однако с клиентом, работающим на удаленной машине, все будет намного проще, особенно если вам нужно копировать файлы.

У вас два совершенно разных вопроса.


1. Определите, является ли машина Windows или Unix.

$^Oдаст вам это в Perl.

$ perl -E'say $^O'
linux

>perl -E"say $^O"
MSWin32

2. Получите доступ к удаленной общей папке Windows с компьютера Unix.

Ну, это общий доступ к файлам SMB, для начала.

Так что все, что вам действительно нужно, это клиент SMB. Я быстро нашел Filesys:: SmbClient, модуль Perl, который, кажется, отвечает всем требованиям.

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