Информация о компьютерах в сети



информация о компьютерах в сети

Современные информационные технологии / 3. Программное обеспечение

Буйлук И.А.

Белорусский Национальный Технический Университет

Способы получения информации о компьютерах в локальной сети   с использованием . NET Framework

При программировании сетевых приложений часто возникают вопросы получения полного списка доступных удаленных компьютеров с информацией об их программных и аппаратных компонентах. Данную задачу видится целесообразным разбить на этап получения списка удаленных компьютеров и этап получения информации об конкретной рабочей станции. Каждый из этих этапов может быть решен несколькими способами, которые рассмотрены ниже.

Наиболее простым способом получить список удаленных компьютеров, доступных в локальной вычислительной сети, является использование сканирования по заданному диапазону IP -адресов. IP-адреса представляют собой основной тип адресов, на основании которых сетевой уровень протокола IP передаёт пакеты между сетями [1]. Для проверки достижимости узла в сети в .NET Framework существует специальный инструмент – класс Ping. Класс Ping используется приложениями, чтобы определить, доступен ли удаленный компьютер и предоставляет функциональность, аналогичную программе командной строки Ping.exe. Топология сети может влиять на возможность связи объекта Ping с удаленным узлом [2] и успешный результат означает только то, что удаленный узел доступен по сети.

Другой способ получения списка компьютеров заключается в использовании сетевых API (от англ. Ap p lication Program Interface – «программный интерфейс приложения»). Операционные системы семейства Windows поддерживают сетевые API, которые позволяют управлять пользовательскими учетными записями и ресурсами сети. Эта функциональность реализована в библиотеке NetApi32.dll, которая   предоставляет полезные функции, с помощью которых можно получить список DNS-имен удаленных компьютеров в сети и более подробную информацию об удаленном компьютере. Для доступа к ним через. NET Framework можно воспользоваться механизмом P / Invoke. который позволяет обратиться из управляемого кода к специфичным функциям операционной системы,   не требуя от программиста выполнять необходимую в этом случае операцию преобразования типов переменных и скрывая другие тонкости взаимодействия различных компонентов между собой. Прототип   функции, экспортируемой из NetApi32 для использования средой. NET Framework.   указан на рисунке ниже:

Другой способ получения рабочих станций есть в сетях, где используется Active Directory. Active Directory является версией службы каталога, разработанной в компании Microsoft, и обеспечивает мощный сервис для управления и уникальной идентификации пользователей, групп и компьютеров, а также предлагает безопасный доступ к сетевым ресурсам. Ее архитектура разработана по спецификации облегченного протокола службы каталогов (LDAP) и семейства протоколов TCP/IP   [3].

В. NET Framework классы, отвечающие за работу с Active Directory. расположены в пространстве имен System. DirectoryServices. П ример получения с помощью. NET -классов списка компьютеров, которые сохраняются в переменной compList типа List string представлен на рисунке ниже:

Для получения информации об определенном удаленном компьютере можно воспользоваться функцией NetServerGetInfo, прототип которой описан в документации разработчика [2]. В качестве одного из параметров передается структура pSERVER_INFO_XXX, где XXX определяет тип структуры. После вызова функции поля структуры будут заполнены соответствующими значениями.

Другой способ получения данной информацию заключается в использовании технологии Windows Management Instrumentation ( WMI ), которая представляет собой универсальное средство управления компьютерной системой. Существуют как плюсы, так и минусы в использовании данной технологии, которые перечислены в нижеследующей таблице:

Какой прогой собрать информацию о компьютерах в сети

ScrAll Просветленный (25227) 8 лет назад

SiSoft Sandra умеет.

Личный Кабинет Удалён Ученик (217) 8 лет назад

В надежде что оцените!

LanScope v. 2.9.1

Программа за несколько секунд исследует Вашу локальную сеть и покажет все доступные ресурсы и права доступа к ним.

LANScope предназначен для сканирования расшаренных ресурсов в вашей локальной сети, вы можете искать ве ресурсы, а также ресурсы удовлетворяющие условиям поиска (Video, music). А также определяет наличие установленных сервисов (ftp, http) на удаленном хосте.

Сканер LANScope работает в Windows2K/XP. LANScope станет для вас незаменимым инструментом при работе в локальной сети.

Advanced IP Scanner - это быстрый, надежный и простой в использовании сканер локальных сетей (LAN) для Windows. Данная утилита позволяет пользователю собирать различную информацию о компьютерах в сети за считанные секунды. Возможен доступ ко многим полезным функциям в один клик мыши - удаленное включение и выключение компьютера, интеграция с Radmin и многое другое. Технология многопоточного сканирования позволяет осуществлять сканирование сотен компьютеров в сетях класса `B` и `C` за считанные секунды даже с медленным модемным соединением.

Андрей Профи (861) 8 лет назад

Срочная инвентаризация. Или хочу всё знать

Захотелось поделится с хабросообществом парой способов провести инвентаризацию техники быстро и без особых усилий. Сподвигла меня вот эта статья. но как сторонник UNIX-way я расскажу способы сделать всё то же самое и даже больше без необходимости окружать себя гомогенной сетью из одинаковых рабочих станций или привязки к одной технологии.

Что мы хотим?

Мы хотим сделать перепись имеющегося оборудования в зависимости от требований руководства или наших собственных порывов обладать исчерпывающей информацией о своих владениях.

Я не буду претендовать на исчерпывающее руководство, но пару быстрых способов я подскажу.

Способ первый, без затрат.

Хотим мы получить инфу о начинке системных блоков организации, например для составления плана модернизации. Вы слышали про встроенную в Windows команду SYSTEMINFO? А она очень полезная. Даст вам информацию о всей системе в удобоваримом виде:

Просто и понятно.

Но не бегать же по всей фирме запуская консоль и копируя вывод команды в текстовик на какой-нибудь шаре. У нас в компании такое в принципе невозможно, политиками запрещено пользователям запускать CMD, а при использовании «Запуск от имени» все переменные окружения летят в тартарары. Что делать? ВАШЕМУ ВНИМАНИЮ PS-TOOLS !

А конкретнее входящяя в её состав утилита psexec.exe. Но не PSEXEC-ом единым жив человек, вывода на экран нам мало, нам бы это ещё и сохранить всё это безобразие, да желательно с комфортом.

Всё предельно просто:

  • Создаём шару с правами на запись всем подряд, а то мало ли какие урезанные права у рабочих станций (sic! Именно станций, потому как права пользователей этих станций нам не интересны, всё будем делать от своего имени). Ну например \\share\audit\
  • Рисуем файлик в нашими айпишниками. Дело в том, что psexec по неясным причинам не понимает диапазоны адресов типа 192.168.0.1-192.168.0.254 или 192.168.0.0/24. Его, конечно, можно обмануть и подсунуть подобное, но это не стабильно и вредно, ниже объясню почему. Я пользуюсь OO Calc для создания списка IP-адресов. В итоге получаем текстовик (.txt) с примерно таким содержимым:

192.168.16.255 — широковещательный и не нужно его использовать. Так же из списка можно исключить адреса оборудования и серверов к которым Вы подключаться не хотите. Можно использовать и список с именами компов, но я так не делаю.

Далее, открываем cmd и пишем:

ip-list.txt — это текстовик с ip-адресами.

-d — значит, что psexec не будет ждать пока команда исполнится, а просто запустит systeminfo как демон и отключится от клиента.

-n 12 — это период ожидания ответа клиента (вообще-то правельнее СЕРВЕРА, но так и запутаться недолго), у меня 12 секунд. Если за это время не удастся подключится, то psexec его пропустит. Для пустых IP это не нужно, а вот ко всяким сетевым принтерам и т.п. psexec может пытаться подключится долго и нудно.

Когда скрипт отработает, в \\share\audit\ мы получим кучу текстовиков названых по именам компьютеров в сети. Что с ними дальше делать я попозже расскажу.

Всем хорош этот способ и быстр и прост, но есть у него и недостатки.

  • Тут информация только по содержимому коробки системного блока и чуть-чуть по Windows.
  • Хотя установленные программы хранятся внутри системного блока про них тоже ничего не выводится
  • Даже по внутренностям мало информации, например нет ничего про тип оперативной памяти, только объём. Да и процессор освещён весьма скудно.
Хочу ВСЁ знать

И когда уже недостаточно только отчёта встроенной утилиты на помощ приходит AIDA64 от FinalWire. это тот же EVEREST только уже купленный другой компанией и которому было возвращено историческое название.

В принципе можно обойтись покупкой Business Edition и установкой на все станции. потом разрешить им обмениваться информацией и подключатся друг к другу на коком-нибудь порту, после чего клепать отчёты из приятного интерфейса. Но, во-первых это не тру, а во-вторых с автоматизацией процесса могут возникнуть заминки.

Я обхожусь Extreme Edition, всё то же самое но без сетевых отчётов.

Что бы начать вкушать плоды автоматизации нужно несколько несложных операций.

  1. Повторяем этапы подготовки для Systeminfo
  2. Ставим AIDA64
  3. Копируем папку с установленной AIDA64 из Program Files куда-нибудь на общедоступную шару. Например \\share\audit\aida
  4. В AIDA идём в мастер отчётов

Пункт «По выбору пользователя»
  • И здесь выбираем нужную нам информацию.

    Главное не переусердствуйте. Слишком большое количество выбранных пунктов существенно нагрузит клиентские машины, к тому же получится огромный, чрезмерно избыточный отчёт, около 1Mb текстовой информации.
  • Жмём далее и выбираем нужный тип отчёта. Я рекомендую TEXT или XML, их проще разбирать.

    Затем нажимаем Готово и получаем отчёт по нашей машине. В папке программы появится файлик aida64.rpf. Его мы копируем туда же в шару, где у нас лежит исполняемый файл: \\share\audit\aida .

    Мой файл выглядит так:

    Теперь используя всё тот же psexec.exe пришем простенький скрипт который будет запускать AIDA на рабочих станциях с нужными нам параметрами:

    Параметр /R путь — означает что аида не будет выводить отчёт на экран, а будет складывать его по указанному пути. %computername% — это переменная окружения cmd и на каждом компьютере где мы будем запускать Aida она будет соответствовать имени компьютера. Можно использовать любую другую переменную, но так удобнее всего.

    Параметр /TEXT — предопределит тип создаваемого отчёта и автоматически подставит нужное расширение файла, поэтому после %computername% не нужно ставить .txt (%computername%.txt) иначе получим %computername%.txt.txt

    Параметр /CUSTOM — даёт понять AIDA откуда брать список нужных компонентов отчёта.

    Вот и всё. Запускаем эту строку в CMD и смотрим как в шару складываются очень подробные отчёты включающие в себя полную информацию по всей периферии.

    В домене

    Я добавил исполнение этого скрипта (без части с psexec) в Startup Scripts в политиках домена.

    Это было бы не правильно без некоторой доработки, в итоге скрипт в политиках выглядит так:

    Благодаря этому, при загрузке, каждый компьютер в сети проверяет, посылал ли он отчёт и если нет, то делает его, а если да, то не делает ничего.

    А для того что бы обнавить данные по одной или нескольким машинам, я просто удаляю или переношу соответствующие очёты и через некоторое время у меня свежая инфа.

    Внимание: на некоторых экзотических аппаратных платформах (которые AIDA не распознаёт) отработка программы вызывает сбои и даже падения, редкость, но имеет место. По этому на критически важных рабочих станциях и серверах отчёты лучше делать вручную. Полноценно запуская AIDA64 в графическом режиме, тогда компьютер не выдаёт ошибок, а AIDA просто не запускается.

    Разбор полученных логов

    Я сохраняю отчёты в простом текстовом виде так как пользуюсь для их разбора и анализа bash скрипты, а шара для хранения отчётов хранится на linux машине. По этому если я хочу узнать обо всех машинах: их имя,ip и mac, количество установленной памяти, то делается примерно следующее:

    Это простейшая обработка, но когда освою парсинг XML на каком-нибудь языке, конечно перейду на отчёты в этом формате.

    Можно обсудить ещё и возможность удалённого включения рабочих станция, да и управление компьютерами по сети не последний вопрос. Но ничего универсальнее Wake On Lan ещё не изобрели, а многообразие средств удалённого управление столь велико, что не уместится в рамки этой статьи. Тем более это дело вкуса.

    UDP: Neuronix подсказал про OCS NG + GLPI. Красивый и удобный сервер под *nix c поддержкой графиков и отчётов + клиентские части под все возможные ОС. У меня, правда, возникли проблемы с клиентами под Windows 7, но возможно от неестественной кривизны рук. Решение стационарное, нужен какой-нибудь сервер.

    UDP2: Да AIDA64 платная, но нам вполне хватит триала, по части консольного использования ничем не ограниченного.

    UDP3: Решение с AIDA64 полностью portable. Скинуть всё необходимое на флешку, использовать относительные пути в скриптах и по приходу в любую фирму понадобится только компьютер и права админа.

    Источники: http://www.rusnauka.com/10_NPE_2009/Informatica/44394.doc.htm, http://otvet.mail.ru/question/2890929, http://habrahabr.ru/post/138400/






    Комментариев пока нет!

    Поделитесь своим мнением