Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Flatly)
  • No Skin
Collapse
Brand Logo

NetXMS Forum

I

IFriendly

@IFriendly
Unfollow Follow
About
Posts
7
Topics
4
Shares
0
Groups
0
Followers
0
Following
0

Posts

Recent Best Controversial

  • Ложное срабатывание на SYS_PACKAGE_UPDATE
    I IFriendly
    Support (Russian)

    Добрый день!

    Обнаружил ложное срабатывание при опросе конфигурации через агента (2.2.2, Linux Centos 7)
    Решил проблему NXSL-фильтром на обработчике событий.

    Но ситуация в принципе не корректная.

    Причина в следующем.

    Опрос ПО и установленных пакетов идет через агента по System.InstalledProducts событию и в хендлере H_InstalledProducts()
    ...
            command = "/bin/rpm -qa --queryformat '@@@ #%{NAME}:%{ARCH}|%{VERSION}|%{VENDOR}|%{INSTALLTIME}|%{URL}|%{SUMMARY}\\n'";
    ...

    Интересующая часть результата опроса:
    ....
    @@@ #gpg-pubkey:(none)|f4a80eb5|(none)|1512394964|(none)|gpg(CentOS-7 Key (CentOS 7 Official Signing Key) [email protected])
    @@@ #gpg-pubkey:(none)|352c64e5|(none)|1512410575|(none)|gpg(Fedora EPEL (7) [email protected])
    @@@ #gpg-pubkey:(none)|442df0f8|(none)|1512403038|(none)|gpg(PostgreSQL RPM Building Project [email protected])
    .....

    Обработка полученного результата идет на сервере в Node::updateSoftwarePackages()
    ...
    SoftwarePackage *pkg = SoftwarePackage::createFromTableRow(table, i);
    packages->add(pkg);
    ...
    packages->sort(PackageNameComparator);

    Компаратор производит сравнение по имени пакета, но имена из примера выше одинаковые.

    static int PackageNameComparator(const SoftwarePackage *p1, const SoftwarePackage *p2)
    {
      return _tcscmp((*p1)->getName(), (*p2)->getName());
    }

    В таких случаях хорошо бы сравнивать еще и по описанию, но метода для доступа к приватному полю в классе SoftwarePackage нет:

    class SoftwarePackage{
    ...
    public:
        ~SoftwarePackage();

        void fillMessage(NXCPMessage *msg, UINT32 baseId) const;
        const TCHAR *getName() const { return m_name; }
        const TCHAR *getVersion() const { return m_version; }

        static SoftwarePackage createFromTableRow(const Table table, int row);
    };

    Ложное срабатывание происходит при поиске:
            SoftwarePackage *p = m_softwarePackages->get(i);
            SoftwarePackage np = (SoftwarePackage )packages->find(p, PackageNameComparator);

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

    Решение:

    1. Добавить методы в класс SoftwarePackage для доступа к описанию пакета.
    2. В случае одинаковых имен пакетов в компараторе провести сравнение по описанию.

    Также можно расширить запрос rpm на один столбец: %{Packager} и сравнивать не по описанию, а по %{Packager}-у, при этом необходимо будет расширить таблицу с сохраненными параметрами пакетов (аналогично и для deb-пакетов).


  • Отправка сообщений nxevent в cp1251
    I IFriendly
    Support (Russian)

    Сработало, спасибо.
    Изменения nxevent.cpp через command_line

    static TCHAR m_szCP[MAX_DB_STRING] = _T("");
    //...
    while((ch = getopt(argc, argv, "deho:P:T:u:c:vw:")) != -1)
    //...
    "  -c <codepage> : Specify codepage (default UTF8).\n"
    //...
            case 'c':
    #ifdef UNICODE
                    MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, optarg, -1, m_szCP, MAX_DB_STRING);
                    m_szCP[MAX_DB_STRING - 1] = 0;
    #else
                nx_strncpy(m_szCP, optarg, MAX_DB_STRING);
    #endif
                SetDefaultCodepage(m_szCP);
                break;
    //...

    Вызов:
    nxevent -u user -P pass -c CP1251 1.1.1.1 SYS_TEST_OK "Это тест"

    для нормального отображения символов в CL
    LANG=ru_RU.cp1251
    export LANG


  • Feature Request #130
    I IFriendly
    Support (Russian)

    Добрый день!

    Вопрос о реализации функционала

    https://www.radensolutions.com/chiliproject/issues/130

    Можно ли расчитывать на имплементацию в ближайшие релизы или может быть посоветуете способ, как реализовать на существующем функционале (например, установкой отдельных экземпляров серверов NetXMS для различных категорий пользователей, т.е. произвести настройку пересылки фильтрованных Event с центрального сервера NetXMS на "подчиненные" в зависимости от типа события: security_event, network_event, server_event, appl_event,...)? ИМХО не самый лучший и оптимальный способ...

    Спасибо.

    PS
    Предыдущий пост по этой теме:
    https://www.netxms.org/forum/oe-oo/o-ota-omota-ot/


  • Отправка сообщений nxevent в cp1251
    I IFriendly
    Support (Russian)

    Виктор,

    Спасибо за информацию, добавлю.
    Отпишусь о результатах.


  • Отправка сообщений nxevent в cp1251
    I IFriendly
    Support (Russian)

    Добрый день!

    Помогите пожалуйста разобраться в причине почему не отсылается русский текст (кодировка 1251) через nxevent на Linux сборке.

    Конфигурация

    1. Сервер. Linux SL 6.5. x86/Postgres. 1.2.16. netxms.conf->CodePage = CP1251
    2. Клиент. Linux SL 6.5. x86. 1.2.16. --with-client  --with-all-static
      Сборку клиента делал в 2х вариантах: UNICODE и не UNICODE.

    msg="Это текст"
    /usr/local/bin/nxevent -d -u user -P pass 1.1.1.1 SYS_TEST_OK "$msg"

    *debug* SendMsg("CMD_GET_SERVER_INFO", id:0)
    *debug* RecvMsg("CMD_REQUEST_COMPLETED", id:0)
    *debug* SendMsg("CMD_LOGIN", id:1)
    *debug* RecvMsg("CMD_LOGIN_RESP", id:1)
    *debug* SendMsg("CMD_TRAP", id:2)
    *debug* RecvMsg("CMD_REQUEST_COMPLETED", id:2)
    *debug* Network receiver thread stopped

    На сервер сообщение приходит без текста сообщения.

      ** 00130000000000800000000200000006
      ** 00000018000000000000000000000000
      ** 000000A9010000000000001600530059
      ** 0053005F0054004500530054005F004F
      ** 004B000019BE01000000000300BF0100
      ** 00000000281291090000012A01000000
      ** 0000000010F290090000005803000001
      ** 00008000010000000000000001000000
      ** code=0x0013 (CMD_TRAP) flags=0x0000 id=2 size=128 numFields=6
      ** [    24] INT32  0
      ** [  169] STRING "SYS_TEST_OK"
      ** [    3] INT32  0
      ** [  298] STRING ""
      ** [    88] INT16  1
      ** [ 32768] STRING ""

    Использовал разные варианты LANG и iconv (-f utf8 -t cp1251, -f cp1251 -t utf8) на клиенте - не помогает.

    Сделал в nxevent.cpp дополнительную отладку для вывода строки сообщения перед вызовом NXCSendEvent - мой  $msg присутствует в той кодировке, которая ушла из скрипта. Добавил оладку (dump)  перед отправкой сообщения в session.cpp Похоже теряется уже где-то внутри:

    ...
    *debug* RecvMsg("CMD_LOGIN_RESP", id:1)
    Message to be send: Это текст
    *debug* SendMsg("CMD_TRAP", id:2)
    *debug* Raw data:
      ** 00130000000000800000000200000006
      ** 00000018000000000000000000000000
      ** 000000A9010000000000001600530059
      ** 0053005F0054004500530054005F004F
      ** 004B6D7341BE01000000000300BF0100
      ** 0000000000A262080000012A01000000
      ** 00000000E88162080000005803000001
      ** 00008000010000000000000001000000
      ** code=0x0013 (CMD_TRAP) flags=0x0000 id=2 size=128 numFields=6
      ** [    24] INT32  0
      ** [  169] STRING "SYS_TEST_OK"
      ** [    3] INT32  0
      ** [  298] STRING ""
      ** [    88] INT16  1
      ** [ 32768] STRING ""
    *debug* RecvMsg("CMD_REQUEST_COMPLETED", id:2)
    ...
    При этом из Windows клиентов все работает (установка из готовой сборки 1.2.16).

    Заранее спасибо


  • Уровни доступа для просмотра событий
    I IFriendly
    Support (Russian)

    было бы здорово! думаю, многими была бы востребована фича.

    Могу предыдущий пост скопировать в "идеи и предложения..."


  • Уровни доступа для просмотра событий
    I IFriendly
    Support (Russian)

    Добрый день!

    Небольшой вопросик.

    Есть ли возможно разграничить уровень доступа пользователей/групп для просмотра только определенных событий (задать разрешенные EventCode для определенных пользователей/групп). Нужно для разделения функций мониторинга по юзерам (Network Group, Security Group, IT Group etc)?

    Спасибо

  • Login

  • Don't have an account? Register

  • Login or register to search.
Powered by NodeBB Contributors
  • First post
    Last post
0
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups