Здравствуйте!
Вот чтобы точнее описать, что я хочу узнать давайте представим такую картину:
У нас есть две ОС: Windows и Linux, и стоит задача собрать информацию о ОС, способ сбора неважен.
Если говорить про Windows, то для того чтобы информацию собрать программа полезет в реестр и возьмет ее оттуда.
А вот откуда возьмет информацию программа, когда будет собирать информацию о Linux?
У меня только одна догадка на этот счет - какие-то системные файлы, к которым программа каким-то образом знает путь, но если моя догадка не верна то что же все таки выступает хранилищем данной информации в Linux?
И еще вот что я хотел бы узнать - вот, если для Windows хранилище некоторой информации это реестр, а для Linux это что-то другое, есть ли какой-то универсальный способ получения информации, который сработает и в Windows, и в Linux, и если такой способ есть то какие программы этот способ используют?
Заранее спасибо.
pfg21, если нужна конкретная задача, то вот она:
Мне надо написать программу, которая будет собирать всю информацию об ОС, железо какое, какая ОС стоит, какие порты там свободны к примеру, и вот программа будет тестироваться на разных ОС, а учитывая что источники информации у Windows и Linux различаются то хотелось бы знать есть ли какой-то универсальный метод получения всего необходимого.
Андрей Фомин, Начни с того что эта программа будет работать сразу и на винде и на линуксе или она под каждую среду собирается отдельно будет, соответсвенно она сама при установке должна понимать на какой системе она установлена.
Если это просто скрипт то надо через try except писать запросы под разные системы или менять логику на ходу отталкиваясь от того на какой системе запущено и допустим запускать команды из разных библиотек
Zerg89, Вообще навыков моего программирования хватит на то, чтобы сделать такую программу под Windows, но в идеале я хотел бы чтобы она работала и на Windows, и на Linux, но если отталкиваться от предложенной вами идеи реализовывать это все через скрипт то здесь надо выбирать, либо использовать универсальный метод получения всего необходимого, либо думать через try except, как вы и сказали.
Андрей Фомин, один бинарь и под линукс и под виндовс сделать не получится.
я так понимаю получится два отдельно скомпилированных бинаря/срипта выхлоп которых будет идентичен по формату ??
по железу линукса смотреть исходники к пример lshw или сделать скрипт форматирующий его вывод в необходимый формат.
по параметрам ос линукс изучить man по файлам в /proc /etc
pfg21, Ну может быть тогда здесь несколько вариантов развития: либо я делаю программу под одну конкретную систему, либо как вы сказали 2 отдельно скомпилированных бинаря.
Спасибо за помощь
Фактически когда мы говорим Linux - мы подразумеваем не саму ОС а ядро. Ядро физически лежит в каталоге
/boot
и это единая точка в системе где можно говорить именно о весии ядра. На все остальное - версия ядра не распространяется. Версии утилит и пакетов и приложений - могут быть любые. И может быть миллионы
их сочетаний вместе с ядром. Это кстати иногда отвечает на вопрос почему у некоторых пользователей
баг воспроизводится а у некоторых - нет.
/etc
/var
/home/ваш_логин
/home/ваш_логин/.config
ещё есть dconf-editor,
я не вникал откуда он парсит данные,
но уверен что из выше указанных директорий
первоначальные данные, которые пишутся в конфиги нового пользователя, записаны в /etc/skel
ну а железяки определяются на уровне ядра
может я в чём то и не прав=поправьте