Russian Qt Forum
Ноябрь 23, 2024, 03:11
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Программирование
>
Общий
>
Удаленное получение данных по компьютеру (ОС, MAC, CPU, RAM, диски)
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Удаленное получение данных по компьютеру (ОС, MAC, CPU, RAM, диски) (Прочитано 2827 раз)
eXeLe
Гость
Удаленное получение данных по компьютеру (ОС, MAC, CPU, RAM, диски)
«
:
Июль 22, 2013, 12:28 »
Писал не так давно под себя небольшую утилиту - каталогизатор подконтрольных мне серверов на работе.
Сейчас выдалось свободное время, задумал обновить. Возник вопрос, как можно упростить добавление новых данных/отслеживать обновления конфигурации серверов.
Первое, что нужно - глобальное определение ОС.
Тут большой проблемы не возникло - у Linux серверов TTL при пинге меньше 64, у Windows - меньше 128.
Дальше стоит конечно вопрос с уточнением версии ОС.
В винде это можно сделать считав из реестра ключ "HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProductName".
Единственное - не опробовал еще, как будут обстоять дела с доступом и как вообще считать реестр удаленного компа, но, надеюсь, разберусь тут.
В Линуксе, теоретически, с этим может помочь файл /etc/issue, но в нем может быть записана и всякая левая инфа вроде этого:
"Welcome to SUSE Linux Enterprise Server 11 SP1 for VMware (x86_64) - Kernel \r (\l)."
И опять же, для чтения файлов, скорее всего потребуется доступ, а если он не стандартизирован, это вызовет проблемы.
Возможно есть альтернативные способы получения информации о версии ОС?
Кроссплатформенность не нужна, достаточно работы и из-под винды.
Идем далее с вытягиванием инфы.
При указании хостнейма при добавлении сервера, IP получаем пингом; при добавлении по IP, хостнейм вытягиваем через nslookup. Это мелочи.
Кроме того, интересует, какую еще инфу мы можем вытянуть из удаленного компа и как?
По сути, интересует:
1. Получение MAC-адреса. В линуксе - читаем /sys/class/net/eth0/address или другие интерфейсы, для винды еще проще - выполняем локально getmac /s IP и парсим то, что вернется.
2. Получить данные по CPU (кол-во процессоров, кол-во ядер). В Linux'e считываем файл /proc/cpuinfo и парсим его. В Винде опять же через реестр - HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\NUMBER_OF_PROCESSORS
3. Получить данные по объему RAM. В Линуксе опять же считываем /proc/meminfo и парсим. Как в винде - без понятия. В реестре не нашел удобочитаемых данных.
4. Получить данные по дискам. В линуксе можно попробовать обработать через /proc/partitions, но еще не придумал, как правильно обработать инфу оттуда. В винде вообще без понятия.
Может кто сможет что-то подсказать по всему написанному выше - ответить на вопросы, которые я еще не смог разрешить или предложить более удобные способы.
С линуксовыми серверами рассматриваю вариант о получении всей нужной инфы через ssh, но хотелось бы обойтись без него.
Записан
kambala
Джедай : наставник для всех
Offline
Сообщений: 4747
Re: Удаленное получение данных по компьютеру (ОС, MAC, CPU, RAM, диски)
«
Ответ #1 :
Июль 22, 2013, 12:50 »
версия винды без чтения реестра:
http://www.prog.org.ru/index.php?topic=25056.msg179130#msg179130
, а под линуксом можно uname выполнить
Записан
Изучением C++ вымощена дорога в Qt.
UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
eXeLe
Гость
Re: Удаленное получение данных по компьютер
«
Ответ #2 :
Июль 22, 2013, 13:34 »
Спасибо, сохранил ссылочку на исходник на MSDN'e. Не уверен правда, что это то, что нужно, в темке рассматривалась отправка информация от некого демона на сервер, сам код еще не изучал.
Правда, скорее всего все равно придется использовать реестр для виндовых серверов и, наверное, буду инфу брать оттуда, если получится.
uname под линуксом конечно вариант, так же и всю остальную инфу можно достать, но если только подключаться к нему по ssh, что в итоге скорее всего и придется делать.
Проблема в том, что рутовые/админские учетки под линуксовые сервера не стандартизированы, сохранить где-либо в коде их не выйдет и придется дополнительно вбивать логин-пароль для подключения к серверу. Впрочем, не факт, что и файл получится проще считать.
«
Последнее редактирование: Июль 22, 2013, 13:37 от eXeLe
»
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...