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

19.04.2009

SysInfo: набор скриптов для сбора информации о системе

Обещал написать вчера, но что то не сложилось :)
Итак несколько дней назад, на официальном форуме, появился набор скриптов SysInfo: для сбора статистики о системе, авторства danger@, мне показалась интересной идея и незамедлительно скачав последнюю на тот момент версию sysinfo-150409.tar.gz, распаковал ее и испробовал.
В принципе идея интересная, видел когда то подобный скрипт во время разбора взломанной машины, там его вывод отправлялся на почту, надо кстати найти что ль его в архивах . Ну ладно отвлекся, немного о впечатлениях от работы с SysInfo.
Ну разобраться несложно так как после распаковки, и запуска без параметров выводится довольно таки информативная подсказка:
SysInfo v0.6 by Daniel Gerzo for FreeBSD Operating System
Usage: sysinfo [-a] [-c] [-h] [-v [level]] module
The following options are available
-a Display complete system information
-c Disable colorful output
-h Print this help
-v [level] Verbose level (0-1), default is 0 (no verbose output)
module Display system information related to specified subsystem type.
The following values are supported:
cpu CPU details
mem Memory details
os Operating system details
storage Details about storage system
network Network-related details
services Information about system services
packages Information about installed packages
misc Miscellaneous information
./sysinfo: ERROR: Not enough arguments provided.
Тоесть видно какие ключи поддерживаются и как их указывать, в принципе для сбора полной статистики достаточно указать один ключ -a, остальные можно указать по вкусу.
Однако применение той же расцветки по умолчанию, не самый наверное логичный вариант, да к тому же как указывает "Анонимус", в комментариях к прошлой записи, реализован он не совсем прямо.
Из замеченных недостатков, пожалуй то что нельзя указывать ключи подряд, если кто знает как реализовать этот способ на sh, то пожалуй стоит подкинуть ссылку в основное обсуждение, ибо danger@ сослался на то что он не знает как реализовать. Ну и похоже на системах с установленным CURRENT скрипт не совсем корректно работает в секции Services status
# sh -x ./sysinfo -a -v 1
...
Cannot 'status' kpasswdd. Set kpasswdd_server_enable to YES in /etc/rc.conf or use 'onestatus' instead of 'status'.
ps: illegal argument: to
...
Cannot 'status' yppasswdd. Set nis_yppasswdd_enable to YES in /etc/rc.conf or use 'onestatus' instead of 'status'.
ps: illegal argument: to
...

при указании ключа для вывода подробной статистики, как видно иногда неправильно обрабатывается ps, причем ошибка появляется устойчиво, но похоже на системах отличных от CURRENT не возникает.
Еше пожалуй следует отметить, что пока о пакетах выводится лишь общая информация, то есть сколько установлено, и какие утилиты смотреть подробнее. Но если учесть модульность то можно без труда добавить и подробную выборку.
Да скрипт работает в принципе не торопливо, но так ли это важно при задаче узнать максимум сведений, о вероятно не известной системе :)
Так что всем кому интересен вопрос наверное стоит присоединится к обсуждению, на форуме, автор там бывает, и в принципе вроде готов править то да се. А вообще наверное не плохо было бы иметь такую утилиту в системе на только на основе sh но и в какой то более серьезной реализации, может тогда и скорость работы повысится, и некоторые косяки пропадут.

UPD: а тем временем вышла версия SysInfo 0.8.1, которая стала работать корректно на CURRENT, ну по крайней мере у меня ошибок, больше пока не нашлось, так что тестим, новую версию, и отписуемся, о пожеланиях и замечаниях, в форум :)

UPD2: теперь утилита доступна в портах sysutils/sysinfo

10 комментариев:

  1. "не плохо было бы иметь такую утилиту в системе на только на основе sh но и в какой то более серьезной реализации" - если только нужны функции/операторы, не входящие в минимальный стандарт. В остальных случаях - вряд ли.

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

    ОтветитьУдалить
  3. "мне почему-то тоже кажется, что суть подобных тулз какрас и должна сводиться к скрипту, вызывающему сторонние проги/парсящему файлы по мере необходимости..." - причем к скрипту, работающему в большинстве unix-систем и не оказывающему заметного влияния на производительность.

    ОтветитьУдалить
  4. 2 Olga
    "причем к скрипту, работающему в большинстве unix-систем"

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

    Насчет написания подобного проекта на языке отличном от sh, ну мне кажется что на том же перле можно многое организовать удобнее, тот же парсинг аргументов командной строки, а уж перл, да уж зачастую и питон стоит на большинстве систем. Хотя опять же скрипт то предназначен для сбора инфы, и конечно в таком разрезе, лучше без зависимостей, от интерпретатора :)

    ОтветитьУдалить
  5. "ну мне кажется что на том же перле можно многое организовать удобнее, тот же парсинг аргументов командной строки" - можно, но в таком случае будет еще зависимость от версии самого Perl и возможна несовместимость.

    ОтветитьУдалить
  6. > нельзя указывать ключи подряд

    всегда использовал для этого встроенную в sh(1) команду getoptsтолько она не поддерживает --long ключи

    ps, помогать danger@'у не интересно, ENOMOTIVATION. Я этим скриптом вряд ли буду пользоваться.

    ОтветитьУдалить
  7. 2 Анонимный
    Надо посмотреть, я просто sh использую пока крайне убого, только основной функционал, иногда, ну или чужое под свои нужды подгоняю.

    Насчет ps, ну да бывает частенько, я в принципе тоже врядли буду его прям так юзать, но идея довольно любопытная, надо думаю посмотреть как собирается статистика в sysutils/bsdstats, там они вроде тоже немало инфы собирают.

    ОтветитьУдалить
  8. getopts - это часть основного функционала sh(1)

    пример использования есть в man'е netbsd

    ОтветитьУдалить
  9. Да я нашел пример, написал на форуме, может поправит, он в последней версии вроде сделал довольно много правок.

    ОтветитьУдалить

Здесь можно записать свои мысли о посте :)
Если ваш ответ не появился сразу, не паникуйте, тут работает спамоловка, и вероятно вы угодили в неё, так как были анонимом или в вашем посте ссылка, ну или вас не любит google.
Я проснусь и одобрю комент ;)