Установка OCS Inventory UnixAgent на ALT Linux

Open Computers and Software Inventory
Открыть инвентарь компьютеров и программного обеспечения
- решение для управления активами
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Установка OCS Inventory UnixAgent на ALT Linux

Сообщение Артём Мамзиков »


Содержание Видео
Показать
00:00 - Вступление
00:24 - О Скрипте bash на expect подключение к подсетям или сети (OCSAgent-proxmox)
01:11 - Как работает скрипт OCSAgent-proxmox
07:00 - О подстановке логина пароля к определенному хосту
08:37 - Пример работы скрипта на несколько подсетей
09:52 - Просмотр хоста в панели OCS
10:00 -Указываем оставшиеся подсети и производим автоматическую установку далее
13:43 - Просмотр хостов в панели OCS
14:04 - О скрипте установки непосредственно самого ocs agent autoinstall-ocs-agent-Proxmox.sh
18:16 - Пример работы на отдельном хосте установки ocs agent
18:34 - Смотрим в Веб панели OCS данных хост
18:44 - В целом об установке ocs агенте и дополнительных компонентах
22:25 - Обручной установке ОЦС Агента
24:18 - Пример Ручной установки OCS Агента
28:05 - Веб панель OCS
29:07 - Еще примеры скриптов на основе expect плюсы и минусы
31:24 - Ваши предложения

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

Официальный сайт OCS

Загружаем OCS Agent новую версию.
ocs agent
ocs agent
Необходимые компоненты для работы OCS Agent
Показать
Perl 5.8 минимум

Необходимы следующие модули для сбора информации
- Digest::MD5
- XML::Simple
- Net::IP необязательно, это необходимо только для вычисления сетевой информации
- LWP
- Mac::SysProfile 0.0.5 этот модуль необходим на MacOSX для сбора информации об устройстве.

Для обеспечения работы SSL-связи (для развертывания пакетов или HTTPS-связи с сервером OCS) вам понадобятся следующие модули:
- Crypt::SSLeay если вы используете LWP до версии 6
- LWP::Protocol::https при использовании LWP версии 6 или боле

- Net::CUPS используется для обнаружения принтера
- Net::SNMP для сканирования сетевых устройств с помощью SNMP

Для улучшения функции SNMP с пользовательскими сетями сканирования, вам нужны эти модули:
- Net::Netmask Маска Сети информация о сети
- Net::Ping
или
- Nmap::Parser

- Data::UUID используется для создания уникального идентификатора для каждой машины
- Parse::EDID используется для инвентаризации монитора и заменит монитор-edid от Mandriva.

Необходимы следующие команды :
- dmidecode на Linux и *BSD (i386, amd64, ia64) => dmidecode требуется для чтения статистики BIOS.
- lspci на Linux и *BSD (пакет pciutils) = > lspci требуется для перечисления устройств PCI.
- sneep на Solaris/sparc, вы должны установить sneep и записать серийный номер с ним (скачать его с http://www.sun.com/download/products.xml?id=4304155a)

Чтобы получить серийный номер экрана вам понадобится один из этих инструментов:
- monitor-edid от Mandriva необходим для получения монитора. Пакет доступен в репозитории Fedora. информация http://wiki.mandriva.com/en/Tools/monitor-edid
или
- get-edid получить данные EDID от чтения

- ipmitool если вы хотите собирать информацию о IPMI
- Nmap (v3. 90 или выше) для сканирования сетевых устройств для обнаружения Ip

Следующие модули Perl являются необязательными:
- Proc::Daemon режим демона
- Proc::PID::File приносит поддержку файлов pid, если установлен Демон Proc
- nvidia::ml приносит вам некоторую информацию о графических картах Nvidia, таких как размер памяти, скорость процессора, версия bios и версия драйвера.
- Compress::Zlib сжатие

Следующий модуль необходим, если вы планируете подготовить тарбол или установить его непосредственно из ветки Bazaar devel. (См. источники ниже.):
- Module::Install
Удалить старого агента если есть
apt-get remove ocsinventory-agent -y

apt-get update - загрузка списков пакетов из репозиториев и "обновление" их
apt-get upgrade - обновляет пакеты, которые уже установлены в системе и доставляет новые пакеты-зависимости
Ставим пакеты apt-get и часть пакетов perl apt-get которые доступны для загрузки

apt-get install dmidecode ftp ncftp nmap smartmontools libpci libpci-devel pciutils read-edid ipmitool nmap eepm нет alt linux lspci sneep monitor-edid
apt-get install wget perl-base perl-CGI perl-CPAN perl-HTML-Mason perl-IO-All perl-Proc-Daemon perl-Proc-PID-File perl-XML-SAX perl-XML-Simple cpan2rpm perl-Digest-MD5 perl-Net-IP perl-LWP-Protocol-https perl-Net-CUPS perl-Net-SNMP perl-Net-Netmask perl-Net-Ping perl-Nmap-Parser perl-Data-UUID perl-Compress-Zlib perl-Module-Install perl-Crypt-SSLeay perl-LWP-UserAgent-Determined perl-DateTime perl-Mojolicious perl-AnyEvent perl-AnyEvent-HTTP perl-App-cpanminus libe2fs-devel asa perl-Parse-EDID

apt-get install net-snmp-utils net-snmp snmpb

Добавить в переменную для работы dmidecode от пользователя и от админа после чего должна работать команда dmidecode
Добавить в конфигурацию от имени пользователя nano ~/.bashrc следующую переменную и выполнить ее
export PATH="/usr/sbin:$PATH"

Запускаем cpan
Выбираем Would you like to configure as much as possible automatically? [yes] если не надо вводить какие либо настройки конфигурации вручную соглашаемся на yes

Если например надо указать прокси пишем no смотрим ниже под сполером
Указываем Proxy в Perl
Показать
Запускаем cpan
Выбираем Would you like to configure as much as possible automatically? [yes] пишем no
И выбираем все по умолчанию до указания прокси
Далее указываем прокси в нашем случае http://IP:Port и авторизацию Логин Пароль
Your ftp_proxy? [] http://IP:Port
Your http_proxy? [] http://IP:Port
Your proxy user id? [] Логин
Your proxy password? Пароль
Далее соглашаемся со всем по умолчанию

Если у вас уже было принято yes то тогда настраиваем в Perl вручную
Прописываем настройки вручную
cpan
o conf ftp_proxy http://ip:порт
o conf http_proxy http://ip:порт
o conf no_proxy
o conf proxy_user логин
o conf proxy_pass пароль
o conf commit -сохранить (/home/имя пользователя/.local/share/.cpan/CPAN/MyConfig.pm)
q - выйти

Проверка прокси
cpan
cpan[1]> o conf /proxy/
cpan[2]> o conf no_proxy 1
Далее ставим пакеты Perl
пакеты, описание пакетов,команды установки есть на сайте https://web-stage.metacpan.org/pod/
Установка в разделе >_Install Instructions

Вводим команду perl -MCPAN -e shell соглашаемся Y далее будет ожидаться ввод команды > поочередно вводим пакеты
install CPAN ( не обязательно обновить сам cpan)
install Crypt::SSLeay::X509 (если агент будет на https 443 подключение с сертификатом, для работы snmp обязательно)
install Test::use::ok (не обязательно пакет для тестов других пакетов перла)
install UUID
install Data::UUID::LibUUID (используется для создания уникального идентификатора для каждой машины)

install Mac::SysProfile (для сбора мак адресов)
install Parse::EDID (используется для инвентаризации монитора и заменит монитор-edid от Mandriva)
install Nvidia::ml (можно не ставить, если не устанавливается! нужна только если есть железо фирмы Nvidia для сбора данных о нем)
install DateTime (для работы даты в перле)

Данные пакеты поставлены выше ap-get , если нет ставим их тоже
install Crypt::SSLeay (если вы используете LWP до версии 6 ,если агент будет на https 443 подключение с сертификатом)
install Net::Netmask (Маска Сети информация о сети)
install Net::SNMP (для сканирования сетевых устройств с помощью SNMP)
install Proc::Daemon (режим демона)
install Proc::PID::File (приносит поддержку файлов pid, если установлен Демон Proc)
install Compress::Zlib (сжатие)
install LWP::UserAgent (для авторизации юзер агенты выхода в инет перла если задан юзер агент)

Так же можно делать установку командой
cpanm более меньше задает вопросы нужно установить perl-App-cpanminus мы его ставили apt-get ом =)
cpanm Crypt::SSLeay
cpanm Data::UUID::LibUUID
cpanm Mac::SysProfile
cpanm Parse::EDID
cpanm Nvidia::ml
cpanm DateTime
cpanm Net::Netmask
cpanm Net::SNMP
cpanm Proc::Daemon
cpanm Proc::PID::File
cpanm LWP::UserAgent


Если не нашлось пакета nvidia::ml perl-nvidia-ml-pl-4.304.2-alt4.1.x86_64.rpm скачиваем его и ставим вручную
rpm -i --force perl-nvidia-ml-pl-4.304.2-alt4.1.x86_64.rpm
(можно не ставить, если не устанавливается! нужна только если есть железо фирмы Nvidia для сбора данных о нем)

Скачиваем ocs agenta
wget https://github.com/OCSInventory-NG/Unix ... 8.0.tar.gz
wget https://github.com/OCSInventory-NG/Unix ... 8.0.tar.gz
Извлекаем
tar -zxvf Ocsinventory-Unix-Agent-2.8.0.tar.gz
Переходим в папку
cd Ocsinventory-Unix-Agent-2.8.0

Сборка / Установка
После распаковки архива используйте следующие команды:
perl Makefile.PL - проверка требований перед установкой
make
make install сделать установку

Далее будут примерно такие вопросы плюс минус больше меньше вопросов

Добавление информации об установке в /home / delp-spec1 / perl5 / lib/perl5/x86_64-linux-thread-multi / perllocal.стручок
[ ! -Ф выполнения послеустановочных ] || /УСР/бин/perl5.16.3 postinst.pl
Вы хотите настроить агент
Введите 'Y' или 'N'?> [y] y
Найден конфигурационный файл / etc/ocsinventory / ocsinventory-agent.cfg! Повторное использование.
Следует ли импортировать старые настройки unix_agent ?
Введите 'Y' или 'N'?> [y] n
[info] конфигурационный файл будет записан в /etc/ocsinventory / ocsinventory-agent.контекстно-свободная грамматика,
Каков адрес вашего сервера ocs?> [http://192.168.121.5:3455/ocsinventory] указать свой путь на сервер OCS
Вам нужны учетные данные для сервера? (Вы, вероятно, не знаете)
Введите 'Y' или 'N'?> [n] n
Вы хотите применить административный тег на этой машине
Введите 'Y' или 'N'?> [y] y
тег?>тут указываем инвентарный номер
Вы хотите установить задачу cron в /etc / cron.д
Введите 'Y' или 'N'?> [y] y
Где вы хотите, чтобы агент хранил свои файлы? (Вам, вероятно, не нужно его менять)?> [/var / lib / ocsinventory-агент]
Должен ли я удалить старый unix_agent
Введите 'Y' или 'N'?> [y] y
Вы хотите активировать параметр конфигурации отладки ?
Введите 'Y' или 'N'?> [y] y для первого запуска и выявления ошибок можно включить он будет в конфигурации равен debug=1 позже отключит оставив в конфиге debug=
Вы хотите отключить параметр конфигурации проверки SSL CA (не рекомендуется)?
Введите 'Y' или 'N'?> [y] n
Вы хотите установить путь к файлу сертификатов CA ?
Введите 'Y' или 'N'?> [у] n
Вы хотите использовать функцию развертывания программного обеспечения OCS-Inventory?
Введите 'Y' или 'N'?> [y] y
Вы хотите использовать функцию сканирования SNMP OCS-Inventory?
Введите 'Y' или 'N'?> [y] y
Вы хотите отправить опись этой машины?
Введите 'Y' или 'N'?> [y] y
Настройка адреса сервера OCS Inventory NG...
Ищу OCS Invetory ng Unix Unified agent installation...
ocsinventory agent представляет: / home / delp-spec1 / perl5 / bin / ocsinventory-agent
Настройка crontab...
Создание каталога/etc / ocsinventory...
Написание OCS Inventory NG Unix Unified agent configuration
Удаление старого агента OCS Inventory Unix...
/etc / ocsinventory-клиент
/etc / logrotate.d / ocsinventory-клиент
/usr/sbin/ocsinventory-client.pl
/ etc / cron.d / ocsinventory-клиент
/бин/ocsinv
сделано
Создание каталога/var/lib/ocsinventory-agent / http:__192.168.121.5:3455_ocsinventory...
Создание каталога /var/lib в/ocsinventory-агента/по HTTP:__192.168.121.5:каталог 3455_ocsinventory/СНМП...
Копирование XML-файлов SNMP MIBs...
Активация модулей при необходимости...
Запуск OCS Inventory NG Unix Unified agent...
Не удалось загрузить Ocsinventory::агент, ошибка синтаксиса в /Home/Делп-spec1/perl5/библиотека lib/perl5/Ocsinventory/агент/сети.линия часов 56, рядом с "};"
Ошибка компиляции в require at / home / delp-spec1 / perl5 / lib/perl5/Ocsinventory / Agent.pm строка 33.
BEGIN failed--компиляция прервана в /home / delp-spec1/perl5 / lib/perl5/Ocsinventory / Agent.pm строка 33.
Компиляция не удалась в require at (eval 1) строка 1.
BEGIN failed--компиляция прервана в строке 1 (eval 1).
вы можете запустить агент непосредственно для его исходного каталога с помощью --devlib
-> Не удалось!
Вы можете запустить агент с флагом --verbose или --debug.
Новые настройки написаны! Благодарим Вас за использование OCS Inventory

Могут быть ошибки по логину паролю
nano /usr/local/share/perl/5.16/Ocsinventory/Agent.pm line 33
nano /home/delp-spec1/perl5/lib/perl5/Ocsinventory/Agent.pm - ссылается на 33 строке на файл Network
Правим блок в файле путь может отличатся 2 примера пути
nano /home/delp-spec1/perl5/lib/perl5/Ocsinventory/Agent/Network.pm - пароль к серверу 56 строка
nano /usr/local/share/perl/5.16/Ocsinventory/Agent/Network.pm
Коментируем блок
# $self->{ua}->credentials(
# $uaserver, # server:port, port is needed
# $self->{config}->{realm},
# $self->{config}->{user},
# $self->{config}->{password};
# );



Поправить в cron (Планировщик запуска)
/etc/cron.d/ocsinventory-agent путь может отличатся!
так же можно добавить переменную :/usr/sbin
Указываем свой путь на ocsinventory-agent если он отличается

PATH=/usr/sbin:/usr/java/jdk1.8.0_171-amd64/bin:/home/edv-spec1/bin:/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin:/usr/games
5 9,15 * * * root /usr/local/bin/ocsinventory-agent --lazy --force > /dev/null 2>&1
@reboot root /usr/local/bin/ocsinventory-agent --lazy --force > /dev/null 2>&1


запуск в 9 часов 5 минут и в 15 часов 5 минут каждый день

Перезапускам service crond restart

На ALT Linux 7 CRONd по умолчанию не работает нужно добавить его в автозагрузку
chkconfig --add crond
chkconfig crond on


Проверяем служба должна быть активной
service crond status
active

Возможно в некоторых случаях понадобится дать права
chmod a-x /etc/rc.d/init.d/crond
chmod 754 /etc/rc.d/init.d/crond
Если при запуске кроном выдает ошибку на Agent.pm
Показать
значит не найдена папка Ocsinventory можно ее скопировать например
из /usr/local/lib/perl5/site_perl/5.30.0/Ocsinventory
В /usr/share/perl5/Ocsinventory
Либо прописать переменную /usr/local/lib/perl5/site_perl/5.30.0/

Или еще пример
Из /home/Ваш-Пользователь/perl5/lib/perl5/Ocsinventory
В /usr/local/share/perl/5.16/Ocsinventory
По Cron
Показать
* * * * * {пользователь} выполняемая_команда прописываем полный путь
- - - - -
| | | | |
| | | | ----- День недели (0 - 7) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12) (можно три буквы из названия месяца,
| | | регистр не имеет значения от jan до dec)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)

service crond status - проверка службы Крон

В Linux есть такой чудо демон - cron. Демон cron при загрузке, а так же - после загрузки каждую минуту "шерстит" файл /etc/crontab, каталог /etc/cron.d/ и каталог с пользовательскими таблицами заданий (/var/spool/cron/crontabs) и сверяет текущее время и строку в "просматриваемом" файле и запускает указанную команду, когда значения полей минута, час, месяц и хотя бы одно из полей число и день_недели, совпадают с текущим временем.

Так же есть чудо-средство anacron, которое сравнивает не текущее время со временем задания в crontab, а сколько прошло времени с последнего запуска задания, указанного в /etc/anacrontab и если прошел указанный промежуток времени, то задание запускается.
Настроить проверить конфиг /etc/ocsinventory/ocsinventory-agent.cfg
Прописать
basevardir=/var/lib/ocsinventory-agent
debug=
tag= указать инвентарный номер
server=http://192.168.121.5:3455/ocsinventory
logfile=/var/log/ocsinventory-agent/ocsinventory-agent.log


дать права бывает нужно от root (su)
chmod 775 /etc/ocsinventory/ocsinventory-agent.cfg
chmod 775 /var/log/ocsinventory-agent/ocsinventory-agent.log
chmod 775 -R /var/lib/ocsinventory-agent

команды для пробы запуска
ocsinventory-agent --force --debug
ocsinventory-agent --force


Данные должны передаться на сервер если нет смотрим ошибки если не отобразились в момент выполнения команды то смотрим в логе и устраняем их и снова запускаем
Последний раз редактировалось Артём Мамзиков Ср янв 22, 2020 18:45, всего редактировалось 3 раза. количество слов: 1180
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Установка OCS Inventory UnixAgent на ALT Linux

Сообщение Артём Мамзиков »

Вариант Тихой Установки OCS Inventory Agent

Скачать Linux OSC Agent 2.6
autoinstall-Linux-ocsagent.zip
autoinstall-linux-ocsagent
autoinstall-linux-ocsagent
Должны быть из-зарание установлены модули перла которые перечислены в посту выше а также нужен еще модуль Module::AutoInstall

Каждый правит скрипт под себя комментирует что ему не надо меняет данные на свои или что то добавляет

Что делает скрипт
Получает переменную IP прокси он же DNS для подстановки в ссылку и указан порт 3455
Удалить старого агента если есть
Установить Архиватор для zip
Создаем папки переходим качаем OCS Unix Agent разархивируем удаляем архив коментируем блок в файле Network.pm дальше с ним не работает
Запускаем тихую установку (команды)
Запрос у пользователя инвентарного номера
Добавим настройки в Крон
Добавим Автозапуск Крона если он отключен

Скрипт autoinstall-ocs-agent.sh
autoinstall-ocs-agent.sh
Показать
#!/bin/bash
# V1.0
# Оф сайт https://wiki.ocsinventory-ng.org/03.Bas ... computers/
# Автор: Мамзиков Артём Андреевич

# Получим переменную IP прокси он же DNS для подстановки в ссылку
#IPDNS=`grep "nameserver" /etc/resolv.conf |tr -d 'nameserver'|grep -E '.5'|tr -d ' '`
# Выводим строки из файла resolv содержащие nameserver | убираем само слово nameserver | оставляем строку содержащую .5 | удаляем все пробелы
IPDNS=`grep "nameserver" /etc/resolv.conf |sed 's/nameserver//'|grep -E '.5'|tr -d ' '`

# Удалить старого агента если есть
apt-get remove ocsinventory-agent -y
# Установить Архиватор для zip
apt-get install unzip
# Создать папку даем права и перейти в нее
mkdir install-ocs-agent; chmod 775 install-ocs-agent; cd install-ocs-agent
# Скачать OCS Unix Agent ,если файл уже скачен и лежит рядом со скриптом коментируем загрузку #
wget https://github.com/OCSInventory-NG/Unix ... master.zip
# Рапаковать скаченный архив
unzip master.zip
# Удалить Архив
rm -f master.zip
# При запуске ошибка, сразу коментируем блок в файле Network.pm
cd UnixAgent-master\lib\Ocsinventory\Agent
sed -i.bak '/^[^#].*self->{ua}->credentials(/,/self->{config}->{password};/s/^/#/' Network.pm
# Перейти в распакованую папку
cd UnixAgent-master
# Проверка конфигурации
#perl Makefile.PL
# Компиляция
#make
#make install
env PERL_AUTOINSTALL=1 perl Makefile.PL && make && make install && perl postinst.pl --nowizard --server=http://$IPDNS:3455/ocsinventory --basevardir=/var/lib/ocsinventory-agent --configdir=/etc/ocsinventory-agent --crontab --remove-old-linux-agent --logfile=/var/log/ocsinventory-agent/ocsinventory-agent.log --nossl --download --snmp --now

# --nowizard : запустить этот скрипт без взаимодействия
# --server : установить адрес сервера NCS инвентаризации OCS (например, http://ocsinventory-ng/ocsinventory)
# --basevardir : установить OCS Inventory NG Unix Каталог переменных агента Unix (например:/var/lib/ocsinventory-agent)
# --configdir : установить каталог унифицированной конфигурации OCS Inventory NG Unix (например,/etc/ocsinventory-agent)
# --user : установить имя пользователя для аутентификации Apache сервера инвентаризации OCS (если необходимо)
# --password : установить пароль для проверки подлинности Apache сервера OCS Inventory NG (при необходимости)
# --realm : установить имя области для сервера OCS Inventory NG для проверки подлинности Apache (при необходимости)
# --crontab : установить crontab при установке OCS Inventory NG Unix Unified агент
# --get-old-linux-agent-config : получить старую конфигурацию агента Linux OCS Inventory NG (при необходимости)
# --remove-old-linux-agent : удалить старого агента Linux OCS Inventory NG из системы (при необходимости)
# --debug : активировать опцию конфигурации режима отладки при установке OCS Inventory NG Unix Unified агент
# --logfile : установить OCS Inventory NG Unix Путь к файлу журнала унифицированного агента (при необходимости)
# --nossl : отключить параметр конфигурации проверки CA SSL при установке агента Unix OCS Inventory NG Unix (не рекомендуется)
# --ca : установить путь к файлу цепочки сертификатов ЦС сертификата Унифицированного агента Unix NG Unix
# --download : активировать функцию развертывания пакета при установке агента Unix OCS Inventory NG Unix
# --snmp : активировать функцию сканирования SNMP при установке OCS Inventory NG Unix Unified агент
# --now : запустить после установки OCS Inventory NG Unix Unified agent
# -h или --help : показать меню справки
# Пример:
# $ sudo env PERL_AUTOINSTALL = 1 perl Makefile.PL && make && make install && perl postinstl.pl --nowizard --server = http://yourserver/ocsinventory --crontab

# При запуске ошибка коментируем блок в файле Network.pm
#cd /usr/local/share/perl/5.16/Ocsinventory/Agent/
#sed -i.bak '/^[^#].*self->{ua}->credentials(/,/self->{config}->{password};/s/^/#/' Network.pm

# Путь переменной
export PATH="/usr/sbin:$PATH"

# Запрос у пользователя инвентарного номера
echo Введите ваш инвентарный номер ПК и нажмите Enter
read intag
sed -i "s/^tag.*/tag=$intag/g" /etc/ocsinventory/ocsinventory-agent.cfg

# Дать права бывает нужно от root (su)
chmod 775 /etc/ocsinventory/ocsinventory-agent.cfg
chmod 775 /var/log/ocsinventory-agent/ocsinventory-agent.log
chmod 775 -R /var/lib/ocsinventory-agent

# Запускаем агент передаем данные
ocsinventory-agent --lazy --force --debug

# Добавим настройки в Крон
cat /dev/null > /etc/cron.d/ocsinventory-agent

{
echo '# Path'
echo "PATH=/usr/sbin:"${PATH}""
echo '# Ocsinventory Agent'
echo '5 9,15 * * * root /usr/local/bin/ocsinventory-agent --lazy --force > /dev/null 2>&1'
echo '@reboot root /usr/local/bin/ocsinventory-agent --lazy --force > /dev/null 2>&1'
} > "/etc/cron.d/ocsinventory-agent"

# Добавим Автозапуск Крона если он отключен
systemctl crond enable
#chmod a-x /etc/rc.d/init.d/crond
#chmod 754 /etc/rc.d/init.d/crond
chkconfig --add crond
chkconfig crond on
Еще скрипт и как создавался
скрипт и как создавался
Показать
#!/bin/bash
# Оф сайт https://wiki.ocsinventory-ng.org/03.Bas ... computers/

# Получим переменные

# Получим IP прокси он же DNS для подстановки в ссылку
#IPDNS=`grep "nameserver" /etc/resolv.conf |tr -d 'nameserver'|grep -E '.5'|tr -d ' '`
# Выводим строки из файла resolv содержащие nameserver | убираем само слово nameserver | оставляем строку содержащую .5 | удаляем все пробелы
IPDNS=`grep "nameserver" /etc/resolv.conf |sed 's/nameserver//'|grep -E '.5'|tr -d ' '`

# Установка с модулями перл не везде сработает
export PKG_PATH="http://ftp.arcane-networks.com/pub/Open ... ages/i386/"
export OCS_VERSION="2.6.0"
mkdir /var/lib
pkg_add nmap
pkg_add dmidecode
pkg_add pciutils
pkg_add p5-libwww
pkg_add p5-XML-Simple
pkg_add p5-Net-IP
pkg_add p5-Proc-Daemon
cd
mkdir install-ocs-agent
wget https://github.com/OCSInventory-NG/Unix ... ION.tar.gz
# Распаковка
tar xvzf Ocsinventory-Unix-Agent-$OCS_VERSION.tar.gz
# Удалить Архив
rm -f Ocsinventory-Unix-Agent-$OCS_VERSION.tar.gz
# Переход в распакованную директорию
cd Ocsinventory-Agent-$OCS_VERSION
# Проверка конфигурации
perl Makefile.PL
# Компиляция
make
make install

#Удалить старого агента если есть
apt-get remove ocsinventory-agent -y
# Установить Архиватор для zip
apt-get install unzip
# Создать папку даем права и перейти в нее
mkdir install-ocs-agent; chmod 775 install-ocs-agent; cd install-ocs-agent
# Скачать OCS Unix Agent ,если файл уже скачен и лежит рядом со скриптом коментируем загрузку #
wget https://github.com/OCSInventory-NG/Unix ... master.zip
# Рапаковать скаченный архив
unzip master.zip
# Удалить Архив
rm -f master.zip
# При запуске ошибка, сразу коментируем блок в файле Network.pm
cd UnixAgent-master\lib\Ocsinventory\Agent
sed -i.bak '/^[^#].*self->{ua}->credentials(/,/self->{config}->{password};/s/^/#/' Network.pm
# Перейти в распакованую папку
cd UnixAgent-master
# Проверка конфигурации
#perl Makefile.PL
# Компиляция
#make
#make install
env PERL_AUTOINSTALL=1 perl Makefile.PL && make && make install && perl postinstl.pl --nowizard --server=http://$IPDNS:3455/ocsinventory --basevardir=/var/lib/ocsinventory-agent --configdir=/etc/ocsinventory-agent --crontab --remove-old-linux-agent --logfile=/var/log/ocsinventory-agent/ocsinventory-agent.log --nossl --download --snmp --now

# --nowizard : запустить этот скрипт без взаимодействия
# --server : установить адрес сервера NCS инвентаризации OCS (например, http://ocsinventory-ng/ocsinventory)
# --basevardir : установить OCS Inventory NG Unix Каталог переменных агента Unix (например:/var/lib/ocsinventory-agent)
# --configdir : установить каталог унифицированной конфигурации OCS Inventory NG Unix (например,/etc/ocsinventory-agent)
# --user : установить имя пользователя для аутентификации Apache сервера инвентаризации OCS (если необходимо)
# --password : установить пароль для проверки подлинности Apache сервера OCS Inventory NG (при необходимости)
# --realm : установить имя области для сервера OCS Inventory NG для проверки подлинности Apache (при необходимости)
# --crontab : установить crontab при установке OCS Inventory NG Unix Unified агент
# --get-old-linux-agent-config : получить старую конфигурацию агента Linux OCS Inventory NG (при необходимости)
# --remove-old-linux-agent : удалить старого агента Linux OCS Inventory NG из системы (при необходимости)
# --debug : активировать опцию конфигурации режима отладки при установке OCS Inventory NG Unix Unified агент
# --logfile : установить OCS Inventory NG Unix Путь к файлу журнала унифицированного агента (при необходимости)
# --nossl : отключить параметр конфигурации проверки CA SSL при установке агента Unix OCS Inventory NG Unix (не рекомендуется)
# --ca : установить путь к файлу цепочки сертификатов ЦС сертификата Унифицированного агента Unix NG Unix
# --download : активировать функцию развертывания пакета при установке агента Unix OCS Inventory NG Unix
# --snmp : активировать функцию сканирования SNMP при установке OCS Inventory NG Unix Unified агент
# --now : запустить после установки OCS Inventory NG Unix Unified agent
# -h или --help : показать меню справки
# Пример:
# $ sudo env PERL_AUTOINSTALL = 1 perl Makefile.PL && make && make install && perl postinstl.pl --nowizard --server = http://yourserver/ocsinventory --crontab

# При запуске ошибка коментируем блок в файле Network.pm
#cd /usr/local/share/perl/5.16/Ocsinventory/Agent/
#sed -i.bak '/^[^#].*self->{ua}->credentials(/,/self->{config}->{password};/s/^/#/' Network.pm

# Путь переменной
export PATH="/usr/sbin:$PATH"

# Запрос у пользователя инвентарного номера
echo Введите ваш инвентарный номер ПК и нажмите Enter
read intag
sed -i "s/^tag.*/tag=$intag/g" /etc/ocsinventory/ocsinventory-agent.cfg
sed -i "s/^tag.*/tag=1013421000004/g" /etc/ocsinventory/ocsinventory-agent.cfg

# Lать права бывает нужно от root (su)
chmod 775 /etc/ocsinventory/ocsinventory-agent.cfg
chmod 775 /var/log/ocsinventory-agent/ocsinventory-agent.log
chmod 775 -R /var/lib/ocsinventory-agent

# Запускаем агент передаем данные
ocsinventory-agent --lazy --force --debug

# Добавим Автозапуск Крона если он отключен
systemctl crond enable
chmod a-x /etc/rc.d/init.d/crond
chmod 754 /etc/rc.d/init.d/crond
chkconfig --add crond
chkconfig crond on

поставить символ # в начало строки, содержащей текст:
$ sed -i '/текст/s/^/#/' файл

убрать символы # в начале строки, содержащей текст:
$ sed -i '/текст/s/^#\+//' файл

поставить символ # в начало строки, содержащей текст, и начинающейся не с символа #:
$ sed -i '/^[^#].*текст/s/^/#/' файл

Закомментировать строку с указанным номером (в данном случае вторую)
sed -i '2s/^/#/' ./file.txt

Раскомментировать обратно
sed -i '2s/^#//' ./file.txt
sed -i "5s/^/#/" file.conf

Коментировать Блок стро от до
sed -i '/^[^#].*self->{ua}->credentials(/,/self->{config}->{password};/s/^/#/' Network.pm
Скачать данные скрипты
scripts instal ocs unix agent.zip
scripts instal ocs unix agent.zip
(4.97 КБ) 65 скачиваний
Переведенные коментарии при установке ocs unix agent
postinst.pl
Показать
#!/usr/bin/perl -w

use strict;

use lib 'lib';

use Cwd;
use Ocsinventory::Agent::Config;


my $old_unix_agent_dir = "/etc/ocsinventory-client";

my $config;
my @cacert;
my $binpath;
my $randomtime;
my $crontab;
my $cron_line;
my $option;
my $nowizard;
my $configdir;
my $remove_old_unix;
my $old_unix_config;
my $nossl;
my $download;
my $snmp;
my $now;


for $option (@ARGV){
if ($option=~/--nowizard$/){
$nowizard = 1;
} elsif($option=~/--server=(\S*)$/){
$config->{server} = $1;
} elsif($option=~/--basevardir=(\S*)$/){
$config->{basevardir} = $1;
} elsif($option=~/--configdir=(\S*)$/){
$configdir = $1;
} elsif($option=~/--user=(\S*)$/){
$config->{user} = $1;
} elsif($option=~/--password=(\S*)$/){
$config->{password} = $1;
} elsif($option=~/--realm=(\S*)$/){
$config->{realm} = $1;
} elsif($option=~/--tag=(\S*)$/){
$config->{tag} = $1;
} elsif($option=~/--crontab$/){
$crontab = 1;
} elsif($option=~/--get-old-unix-agent-config$/){
$old_unix_config = 1;
} elsif($option=~/--remove-old-unix-agent$/){
$remove_old_unix = 1;
} elsif($option=~/--debug$/){
$config->{debug} = 1;
} elsif($option=~/--logfile=(\S*)$/){
$config->{logfile} = $1;
} elsif($option=~/--nossl$/){
$nossl = 1;
} elsif($option=~/--ca=(\S*)$/){
$config->{ca} = $1;
} elsif($option=~/--download$/){
$download = 1;
} elsif($option=~/--snmp$/){
$snmp = 1;
} elsif($option=~/--now$/){
$now = 1;
} elsif($option=~/--help/ || $option=~/-h/) {
print STDERR <<EOF;
Использование :
\t--nowizard запускает этот скрипт без взаимодействия
\t--server=url set OCS Inventory NG адрес сервера (например: http://ocsinventory-ng/ocsinventory)
\t--basevardir=path set OCS Inventory NG Каталог переменных унифицированного агента Unix (пример: /var/lib/ocsinventory-agent)
\t--configdir=path set OCS Inventory NG Единый каталог конфигурации Unix (пример: /etc/ocsinventory-agent)
\t--user=username set имя пользователя для аутентификации OCS Inventory server Apache (при необходимости)
\t--password=password set пароль для аутентификации OCS Inventory NG server Apache (при необходимости)
\t--realm=realm set имя области для аутентификации Apache сервера OCS Inventory NG (при необходимости)
\t--crontab set кронтаб при установке OCS Inventory NG Unix Единой agent
\t--get-old-unix-agent-config извлечение старой конфигурации агента OCS Inventory NG Unix (при необходимости)
\t--remove-old-unix-agent удалить старый OCS Inventory NG Unix agent из системы (при необходимости)
\t--debug активируйте опцию настройки режима отладки при установке OCS Inventory NG Unix Unified agent
\t--logfile=path set OCS Inventory NG Unix Путь к файлу Журнала единого агента (при необходимости)
\t--nossl disable SSL CA опция конфигурации проверки при установке OCS Inventory NG Unix Unified agent (не рекомендуется)
\t--ca=path set OCS Inventory NG Unix Путь к файлу сертификатов ЦС унифицированного агента
\t--download activate активируйте функцию развертывания пакета при установке OCS Inventory NG Unix Unified agent
\t--snmp activate активируйте функцию SNMP сканирования при установке OCS Inventory NG Unix Unified agent
\t--now launch запустите OCS Inventory NG Unix Unified agent после установки
\t-h --help display показать эту справку
EOF

exit 0;
}
}


loadModules (qw/XML::Simple ExtUtils::MakeMaker/);

############ Установка значений по умолчанию ############

my @default_configdirs = ("/etc/ocsinventory", "/usr/local/etc/ocsinventory", "/etc/ocsinventory-agent");

unless ($config->{basevardir}) {
if ($^O =~ /solaris/) {
$config->{basevardir} = '/var/opt/ocsinventory-agent';
} elsif ($^O =~ /bsd/) {
$config->{basevardir} = '/var/db/ocsinventory-agent';
} else {
$config->{basevardir} = '/var/lib/ocsinventory-agent'
}
}


############ Задавать вопросы ##############
unless ($nowizard) {
if (!ask_yn("Вы хотите настроить агент", 'y')) {
exit 0;
}

unless ($configdir) {
$configdir = getConfigDir (@default_configdirs);

#Если не найдется
unless (-d $configdir) {
$configdir = askConfigDir (@default_configdirs);
unless (-d $configdir) {
unless (ask_yn ("Вы хотите создать каталог ".$configdir."?", 'y')) {
die("Пожалуйста, создайте ".$configdir." каталог.\n");
}
}
}
}

#Старый агент unix
if (ask_yn("Следует ли импортировать старые настройки unix_agent ?", 'y')) {
$old_unix_config=1;
}

#Получение конфигурации агента, если она существует
if (-f $configdir."/ocsinventory-agent.cfg") {
open (CONFIG, "<".$configdir."/ocsinventory-agent.cfg") or
die "Не могу открыть ".$configdir."/ocsinventory-agent.cfg: ".$!;

foreach (<CONFIG>) {
s/#.+//;
if (/(\w+)\s*=\s*(.+)/) {
my $key = $1;
my $val = $2;
# Удалите кавычки
$val =~ s/\s+$//;
$val =~ s/^'(.*)'$/$1/;
$val =~ s/^"(.*)"$/$1/;
$config->{$key} = $val unless $config->{$key};
}
}
close CONFIG;
}

#Получение имени сервера
print "[info] Конфигурационный файл будет записан в $configdir/ocsinventory-agent.cfg,\n";
$config->{server} = promptUser('Каков адрес вашего сервера ocs',$config->{server});
#$config->{server} = promptUser('Какой адрес вашего сервера ocs', exists ($config->{server})?$config->{server}:'ocsinventory-ng');

#Получение учетных данных, если это необходимо
if (ask_yn ("Вам нужны учетные данные для сервера? (наверное, нет.)", 'n')) {
$config->{user} = promptUser("Пользователь", $config->{user});
$config->{password} = promptUser("Пароль");
print "[info] Область можно найти во всплывающем окне входа в ваш интернет-браузер.\n[info] В общем, это что-то вроде 'запретной зоны'.\n";
$config->{realm} = promptUser("область");
}

#Получение тега
unless ($config->{tag}){
if (ask_yn('Вы хотите применить административный тег на этой машине', 'y')) {
$config->{tag} = promptUser("tag", $config->{tag});
}
}

#Получение Планировщика заданий crontab
if ($^O =~ /solaris/ || $^O =~ /bsd/) {
if (ask_yn("Вы хотите установить задачу cron в текущий пользователь crontab ?", 'y')) {
$crontab = 1;
}
} elsif (-d "/etc/cron.d") {
if (ask_yn("Вы хотите установить задачу cron в /etc/cron.d", 'y')) {
$crontab = 1;
}
}

#Получение базы var dir
$config->{basevardir} = promptUser('Где вы хотите, чтобы агент хранил свои файлы? (Вам, вероятно, не нужно менять его)', $config->{basevardir}, '^\/\w+', 'Расположение должно начинаться с /');

unless (-d $config->{basevardir}) {
unless (ask_yn ("Вы хотите создать ".$config->{basevardir}." дирикторию?\n", 'y')) {
die("Пожалуйста, создайте ".$config->{basevardir}." каталог вручную и перезапустить postinst.pl script\n");
}
}

#Удалить старый агент unix ?
$remove_old_unix = ask_yn ("Должен ли я удалить старый unix_agent", 'n') unless $remove_old_unix;

#Включить опцию отладки ?
$config->{debug} = ask_yn("Вы хотите активировать параметр конфигурации отладки ?", 'y') unless $config->{debug};

#Включить файл журнала ?
unless ($config->{logfile}) {
if (ask_yn("Вы хотите использовать ОК инвентаризации ПГ в Unix едином файле журнала агента ?", 'y')){
$config->{logfile} = promptUser('Укажите путь к файлу журнала, который вы хотите использовать', $config->{logfile}, '^\/\w+', 'Расположение должно начинаться с /');
}
}

#Отключить опцию SSL ?
unless ($nossl) {
$nossl = ask_yn("Вы хотите отключить опцию конфигурации проверки SSL CA (не рекомендуется) ?", 'n');
}

#Задать путь к файлу сертификатов CA ?
unless ($config->{ca}) {
if (ask_yn("Вы хотите задать путь к файлу сертификатов CA ?", 'y')){
$config->{ca} = promptUser('Укажите путь к файлу сертификатов CA', $config->{ca}, '^\/\w+', 'Расположение должно начинаться с /');
}
}

#Включить функцию загрузки ?
$download = ask_yn("Вы хотите использовать функцию развертывания программного обеспечения OCS-Inventory?", 'y') unless $download;

#Включить функцию SNMP ?
$snmp = ask_yn("Вы хотите использовать функцию сканирования SNMP OCS-Inventory?", 'y') unless $snmp;

#Запуск агента после настройки ?
$now = ask_yn("Вы хотите отправить опись этой машины?", 'y') unless $now;

}


################ Тогда поехали ##############

#Старый агент unix
if (-f $old_unix_agent_dir.'/ocsinv.conf' && $old_unix_config) {

print STDERR "Получение старой конфигурации агента OCS Inventory NG Unix...\n";
my $ocsinv = XMLin($old_unix_agent_dir.'/ocsinv.conf');
$config->{server} = mkFullServerUrl($ocsinv->{'OCSFSERVER'});

if (-f $old_unix_agent_dir.'/cacert.pem') {
open CACERT, $old_unix_agent_dir.'/cacert.pem' or die "Не удается импортировать сертификат CA: ".$!;
@cacert = <CACERT>;
close CACERT;
}

my $admcontent = '';

if (-f "$old_unix_agent_dir/ocsinv.adm") {
if (!open(ADM, "<:encoding(iso-8859-1)", "$old_unix_agent_dir/ocsinv.adm")) {
warn "Can't open $old_unix_agent_dir/ocsinv.adm";
} else {
$admcontent .= $_ foreach (<ADM>);
close ADM;
my $admdata = XMLin($admcontent) or die;
if (ref ($admdata->{ACCOUNTINFO}) eq 'ARRAY') {
foreach (@{$admdata->{ACCOUNTINFO}}) {
$config->{tag} = $_->{KEYVALUE} if $_->{KEYNAME} =~ /^TAG$/;
}
} elsif (
exists($admdata->{ACCOUNTINFO}->{KEYNAME}) &&
exists($admdata->{ACCOUNTINFO}->{KEYVALUE}) &&
$admdata->{ACCOUNTINFO}->{KEYNAME} eq 'TAG'
){
print $admdata->{ACCOUNTINFO}->{KEYVALUE}."\n";
$config->{tag} = $admdata->{ACCOUNTINFO}->{KEYVALUE};
}
}
}
}


#Настройка uri сервера
print STDERR "Настройка адреса сервера OCS Inventory NG...\n";

$config->{server}="ocsinventory-ng" unless $config->{server};
$config->{server} = mkFullServerUrl($config->{server});

if (!$config->{server}) {
print "Сервер пуст. Покидающий...\n";
exit 1;
}
my $uri;
if ($config->{server} =~ /^http(|s):\/\//) {
$uri = $config->{server};
} else { # только имя хоста
$uri = "http://".$config->{server}."/ocsinventory"
}


#Хорошо ли установлен агент OCS ?
print STDERR "Looking for OCS Invetory NG Unix Unified agent installation...\n";
chomp($binpath = `which ocsinventory-agent 2>/dev/null`);
if (! -x $binpath) {
# Упакованная версия с perl и агентом ?
$binpath = $^X;
$binpath =~ s/perl/ocsinventory-agent/;
}

if (! -x $binpath) {
print "извините, не могу найти ocsinventory-агента в \$PATH\n";
exit 1;
} else {
print "ocsinventory агент представляет: $binpath\n";
}


#Настройка crontab
$randomtime = int(rand(60)).' '.int(rand(24));
$cron_line = $randomtime." * * * root $binpath --lazy > /dev/null 2>&1\n";

if ($crontab) {

print STDERR "Настройки crontab...\n";

if ($^O =~ /solaris/ || $^O =~ /bsd/) {
my $cron = `crontab -l`;

# Давайте подавим столбец пользователя Unix cron/anacron
$cron_line =~ s/ root / /;
$cron .= $cron_line;

open CRONP, "| crontab" || die "Не могу запустить crontab: $!";
print CRONP $crontab;
close(CRONP);
} elsif (-d "/etc/cron.d") {
open DEST, '>/etc/cron.d/ocsinventory-agent' or die $!;
# Сохраните корневой путь
print DEST "PATH=".$ENV{PATH}."\n";
print DEST $randomtime." * * * root $binpath --lazy > /dev/null 2>&1\n";
close DEST;
}
}

#Создание basevardir
if (!-d $config->{basevardir}) {
print STDERR "Создание $config->{basevardir} Дириктории...\n";
mkdir $config->{basevardir} or die $!;
}

#Отключение проверки SSL при запросе
$config->{ssl} = 0 if $nossl;

#Создание каталога конфигурации
$configdir = "/etc/ocsinventory-agent" unless $configdir; #Если не задано в командной строке

if (grep (/$configdir/,@default_configdirs)) {
$configdir = '/etc/ocsinventory-agent' unless $configdir;

print STDERR "Создание $configdir дириктория...\n";

unless (-d $configdir) {
unless (mkdir $configdir) {
die("Не смогла создать ".$configdir.". Ты root?\n");
}
}
print STDERR "Написание OCS Inventory NG Unix единой конфигурации агента\n";
open CONFIG, ">$configdir/ocsinventory-agent.cfg" or die "Не удается записать файл конфигурации в $configdir: ".$!;
print CONFIG $_."=".$config->{$_}."\n" foreach (keys %$config);
close CONFIG;
chmod 0600, "$configdir/ocsinventory-agent.cfg";
} else {
die("Неправильный каталог конфигурации...Пожалуйста, выберите каталог, поддерживаемый OCS Inventory NG agent !!!\n");
}


#Удаление старого агента unix, если это необходимо
if ($remove_old_unix) {
print STDERR "Удаление старого агента OCS Inventory Unix...\n";
foreach (qw#
/etc/ocsinventory-client
/etc/logrotate.d/ocsinventory-client
/usr/sbin/ocsinventory-client.pl
/etc/cron.d/ocsinventory-client
/bin/ocsinv
#) {
print $_."\n";
next;
rmdir if -d;
unlink if -f || -l;
}
print "done\n"
}

# Создание каталога var для этого сервера
my $dir = $config->{server};
$dir =~ s/\//_/g;
my $vardir = $config->{basevardir}."/".$dir;
print STDERR "Создать $vardir дирикторию...\n";
recMkdir($vardir) or die "Не могу создать $vardir!";

if (@cacert) { # нам нужно перенести сертификат
print STDERR "Копирование cacert.pem в $vardir...\n";

open CACERT, ">".$vardir."/cacert.pem" or die "Не могу открыть ".$vardir.'/cacert.pem: '.$!;
print CACERT foreach (@cacert);
close CACERT;
print "Сертификат скопирован в ".$vardir."/cacert.pem\n";
}

#Мы копируем пользовательский XML для SNMP MIBs из источников
my $workdir = getcwd();
my $source_snmpdir = "$workdir/snmp";
my $snmpdir = "$vardir/snmp";

if ( -d $source_snmpdir && -d $vardir) {
unless (-d $snmpdir) {
print STDERR "Создание $snmpdir дириктории...\n";
recMkdir($snmpdir) or die "Не могу создать $snmpdir!";
}
print STDERR "Копирование протокола SNMP MIB-файлы XML-файлов...\n";
system("cp -r $source_snmpdir/* $snmpdir");
}

print STDERR "Активация модулей при необходимости...\n";

open MODULE, ">$configdir/modules.conf" or die "Не могу писать modules.conf в $configdir: ".$!;
print MODULE "# этот список модулей будет загружен во время выполнения\n";
print MODULE "# чтобы проверить его синтаксис сделайте:\n";
print MODULE "# #perl modules.conf\n";
print MODULE "# Вы не должны ошибиться. В противном случае содержимое будет проигнорировано\n";
print MODULE "# Целью этого механизма является запуск модулей расширения агента\n";
print MODULE "\n";
print MODULE ($download?'':'#');
print MODULE "use Ocsinventory::Agent::Modules::Download;\n";
print MODULE ($snmp?'':'#');
print MODULE "use Ocsinventory::Agent::Modules::Snmp;\n";
print MODULE "\n";
print MODULE "# НЕ СНИМАЙТЕ КРЫШКУ 1;\n";
print MODULE "1;\n";
close MODULE;


#Предотвращение угроз безопасности путем удаления существующего snmp_com.txt-файл, который больше не используется
my $snmp_com_file = "$snmpdir/snmp_com.txt";
if ( -f $snmp_com_file ) {
print STDERR "$snmp_com_file кажется, существует...удаление его для предотвращения угроз безопасности!\n";
unlink $snmp_com_file;
}

# Агент запуска, если его спросят
if ($now) {
print STDERR "Запуск OCS Inventory NG Unix Unified agent...\n";

system("$binpath --force");
if (($? >> 8)==0) {
print " -> Success!\n";
} else {
print " -> Failed!\n";
print "Вы можете запустить агент с флагом --verbose или --debug.\n";
}
}

#Конец
print "Новые настройки написаны! Благодарим Вас за использование OCS Inventory\n";

######## Подпрограммы ################

sub loadModules {
my @modules = @_;

foreach (@modules) {
eval "use $_;";
if ($@) {
print STDERR "Не удалось загрузить $_. Пожалуйста, установите его и перезагрузите компьютер postinst.pl скрипт ( ./postinst.pl ).\n";
exit 1;
}
}
}

sub ask_yn {
my $promptUser = shift;
my $default = shift;

die unless $default =~ /^(y|n)$/;

my $cpt = 5;
while (1) {
my $line = prompt("$promptUser\nПожалуйста enter 'y' or 'n'?>", $default);
return 1 if $line =~ /^y$/;
return if $line =~ /^n$/;
if ($cpt-- < 0) {
print STDERR "для много пользовательского ввода , выход...\n";
exit(0);
}
}
}

sub promptUser {
my ($promptUser, $default, $regex, $notice) = @_;

my $string = $promptUser;
$string .= "?>";

my $line;
my $cpt = 5;

while (1) {
$line = prompt($string, $default);
if ($regex && $line !~ /$regex/) {
print STDERR $notice."\n";
} else {
last;
}
if ($cpt-- < 0) {
print STDERR "для много пользовательского ввода , выход...\n";
exit(0);
}
}
return $line;
}

sub getConfigDir {
my @choices = @_;

foreach (@choices) {
my $t = $_.'/ocsinventory-agent.cfg';
if (-f $t) {
print "Конфигурационный файл найден $t! Повторное использование его.\n";
return $_;
}
}
}

sub askConfigDir {
my @choices = @_;

print STDERR "Куда вы хотите записать файл конфигурации?\n";
foreach (0..$#choices) {
print STDERR " ".$_." -> ".$choices[$_]."\n";
}
my $input = -1;
my $configdir;
while (1) {
$input = prompt("?>");
if ($input =~ /^\d+$/ && $input >= 0 && $input <= $#choices) {
last;
} else {
print STDERR "Значение должно быть между 0 и ".$#choices."\n";
}
}

return $choices[$input];
}

sub recMkdir {
my $dir = shift;

my @t = split /\//, $dir;
shift @t;
return unless @t;

my $t;
foreach (@t) {
$t .= '/'.$_;
if ((!-d $t) && (!mkdir $t)) {
return;
}
}
1;
}

sub mkFullServerUrl {

my $server = shift;

my $ret = 'http://' unless $server =~ /^http(s|):\/\//;
$ret .= $server;

if ($server !~ /http(|s):\/\/\S+\/\S+/) {
$ret .= '/ocsinventory';
}

return $ret;

}
Makefile.PL
Показать
BEGIN {
# Избегайте проблемы установки, введенной perl 5.24.1 удаление '.' путь из
# @INC, чтобы избежать возможного внедрения модуля в нормально работающие perl-скрипты
push @INC, '.' if ( $^V && $^V gt 'v5.24' );
}

use inc::Module::Install;
use English qw(-no_match_vars);
use Config;
require 'lib/Ocsinventory/Agent/Config.pm';

# Взломать, чтобы иметь возможность запустить скрипт после установки
sub MY::postamble
{

my $re;

$re = '
install :: all pure_install doc_install
$(NOECHO) $(NOOP)';

$re .= "\n\t[ ! -f run-postinst ] || $^X postinst.pl\n";

return $re;
}

my $version = $Ocsinventory::Agent::Config::VERSION;

name 'Ocsinventory-Unix-Agent';
include 'Module::AutoInstall';
abstract 'OCS Inventory unified Agent for UNIX, Linux and MacOSX';
license 'gpl';
repository 'https://github.com/OCSInventory-NG/UnixAgent/';
version $version;
perl_version '5.006';
authors 'OCS Inventory Team';

# обязательные зависимости
requires 'Digest::MD5' => undef;
requires 'XML::Simple' => undef;
requires 'LWP' => undef;
requires 'File::Temp' => undef;
requires 'Data::UUID' => undef;
requires 'Net::IP' => undef;
recommends 'IO::Socket::SSL' => undef;
recommends 'Compress::Zlib' => undef;
recommends 'Proc::Daemon' => undef;
recommends 'Proc::PID::File' => undef;

# развертывание или https-связь
recommends 'Crypt::SSLeay' => undef;
recommends 'LWP::Protocol::https' => undef;

# inventory инвентаризация
recommends 'Net::CUPS' => undef;
recommends 'Parse::EDID' => undef;
recommends 'Nvidia::ml' => undef;

# network Сеть
recommends 'Net::SNMP' => undef;
recommends 'Net::Netmask' => undef;
recommends 'Net::Ping' => undef;
recommends 'Nmap::Parser' => undef;

resources
bugtracker => 'https://github.com/OCSinventory-NG/Unixagent/issues',
homepage => 'http://www.ocsinventory-ng.org',
IRC => 'irc://irc.freenode.net/#ocsinventory-ng',
repository => 'https://github.com/OCSinventory-NG/Unixagent';


install_script 'ocsinventory-agent';

# Нам нужен релиз в комплекте с необходимой зависимостью, чтобы иметь возможность
#подготовьте автономный двоичный файл с помощью PAR::Packer
if ($ENV{OCS_BUNDLE_RELEASE}) {
foreach my $module (qw/Archive::Zip HTML::Parser LWP URI XML::NamespaceSupport Net::IP Net::Netmask HTML::Tagset Proc::Daemon Module::ScanDeps PAR::Packer AutoLoader PAR PAR::Dist File::Remove YAML::Tiny Getopt::ArgvFile ExtUtils::Install ExtUtils::ParseXS XML::SAX XML::Simple/) {
bundle $module;
requires $module;
}
}

#Уродливый хак для включения ipdiscover бинарной компиляции и установки для систем Linux
if ($^O =~ /^linux$/i && can_cc()) {
my $cc=$Config::Config{cc};
system("$cc resources/ipdiscover/ipdiscover.c -o ipdiscover");
if (-f 'ipdiscover') {
install_script 'ipdiscover';
}
}


if (defined ($ENV{PERL_AUTOINSTALL}) || defined ($ENV{PERL_AUTOINSTALL})) {
unlink 'run-postinst';
} else {
open POSTINST, '>run-postinst' or die $!;
close POSTINST;
}


if (!can_use('Compress::Zlib')) {
print "Пожалуйста, установите Compress::Zlib, если вы используете сервер OCS до 1.02.\n";
}

if (!can_use('Crypt::SSLeay')) {
print "Пожалуйста, установите Crypt::SSLeay, если вы хотите использовать SSL.\n";
}

if (!can_use('Net::SSLeay')) {
print "Пожалуйста, установите Net::SSLeay, если вы хотите использовать развертывание программного обеспечения.\n";
}


if (!can_run('ipdiscover') && !can_run('nmap')) {
print "Пожалуйста, установите nmap ";
print "или ipdiscover " if $^O =~ /^linux$/i;
print "если вы хотите использовать функцию ".
"обнаружения сети.\n";
}

if (!can_use('Net::IP')) {
print "Net::IP настоятельно рекомендуется, так как это требуется для извлечения "
."network информации\n";
}

if (!can_use('Net::Netmask')) {
print "Net::Netmask настоятельно рекомендуется, так как это требуется для извлечения "
."snmp информации\n";
}

if (!can_use('Proc::Daemon') || !can_use('Proc::PID::File')) {
print "Пожалуйста, установите Proc::Daemon и Proc::PID::File если вы ".
"хотите использовать режим демона.\n";
}

if (!can_use('Nvidia::ml')){
print "Nvidia::ml рекомендуется, если вы хотите получить "
."память, скорость, информация bios для карт Nvidia.\n";
}

my $archname;
eval { # config_re недоступен на Perl 5.6
my @t = Config::config_re('archname');
$archname = $t[0];
};
if ($^O =~ /(linux|bsd)/i && (!$archname ||$archname =~ /(i[3456x]86|x86_64|amd64)/i)) {
foreach (qw/dmidecode lspci/) {
if (!can_run($_)) {
print "\n";
print "[WARNING] $_ необходим, если вы хотите, чтобы полная инвентаризация на x86 and AMD64/x86_64.\n";
print "\n";
}
}
}

if ($^O =~ /^darwin$/ && !can_use('Mac::SysProfile')) {
print "\n";
print "[WARNING] Mac::SysProfile необходимы на MacOS для обнаружения большей части информации об устройстве.\n";
print "\n";
requires 'Mac::SysProfile' => undef;
}

# memconf необходим бэкенд-модулю Solaris
if ($^O =~ /^solaris$/i) {
install_script 'memconf';
}

#for i in inc/BUNDLES/* ; do rm -rf `basename $i` ;done`
#auto_install;
WriteAll;
Агент также поддерживает некоторые параметры командной строки. Вы можете использовать их при запуске агента вручную с помощью команды «ocsinventory-agent»:

--local Запускает агент в локальном режиме, без подключения к коммуникационному серверу. Вам будет предложено указать целевой каталог, в который агент поместит результаты инвентаризации в сжатый файл XML с расширением «.ocs».

--xml Агент создаст несжатый XML-файл с расширением «.ocs», содержащий результаты инвентаризации. Вам будет предложено указать целевой каталог, куда агент поместит файл. Если не используется совместно с -local, агент пытается подключиться к коммуникационному серверу.

--tag=”мое тэговое значение” Установите для агента значение TAG инвентарный номер «my TAG».

--force Заставить агента всегда отправлять результаты инвентаризации, независимо от параметра FREQUENCY.

--debug Вынудите агента создать более подробный файл журнала, показывающий обмен XML с сервером связи.

--nosoftware Не ищите установленное программное обеспечение.

--info Показать подробный вывод агентских прогонов.

--proxy=”url_proxy:[порт]” Укажите URL прокси.

--lazy Не связывайтесь с сервером более одного раза во время PROLOG_FREQ и выходите, если нечего делать.

--daemon Запустите ocsinventory-агент в фоновом режиме. Proc :: Daemon необходим.

--basevardir=”PATH” Используется для указания места, где агент должен хранить свои файлы.

--logfile=”PATH” Используется для записи сообщения журнала в FILE и выключения STDERR.

--user=”USER” Используется для указания пользователя для аутентификации на сервере.

--password=”PASSWORD” Используется для указания пароля для аутентификации сервера.

Пример команды
ocsinventory-agent --lazy --force --debug

Для получения дополнительной информации используйте
$ man ocsinventory-agen
Последний раз редактировалось Артём Мамзиков Ср янв 22, 2020 20:27, всего редактировалось 1 раз. количество слов: 3152
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Установка OCS Inventory UnixAgent на ALT Linux

Сообщение Артём Мамзиков »

Установка агента OCS INVENTORY (Alt 8)

Удалить старого агента если есть
apt-get remove ocsinventory-agent -y

Ставим пакеты apt-get и часть пакетов perl apt-get которые доступны для загрузки:
apt-get install dmidecode ftp ncftp nmap smartmontools libpci libpci-devel pciutils read-edid ipmitool eepm wget perl-base perl-CGI perl-CPAN perl-HTML-Mason perl-IO-All perl-Proc-Daemon perl-Proc-PID-File perl-XML-SAX perl-XML-Simple cpan2rpm perl-Digest-MD5 perl-Net-IP perl-LWP-Protocol-https perl-Net-CUPS perl-Net-SNMP perl-Net-Netmask perl-Net-Ping perl-Nmap-Parser perl-Data-UUID perl-Compress-Zlib perl-Module-Install perl-Crypt-SSLeay perl-LWP-UserAgent-Determined perl-DateTime perl-Mojolicious perl-AnyEvent perl-AnyEvent-HTTP perl-App-cpanminus libe2fs-devel asa net-snmp-utils net-snmp snmpb perl-Test-use-ok perl-UUID -y

Для корректной работы dmidecode прописываем от рута
ln -s /usr/sbin/dmidecode /usr/bin/dmidecode

Скачиваем OCS Agent 2.6 и распаковываем в папку юзера
OCSUnixAgent2.6.zip

Переходим в распакованную папку
cd /home/user/OCSUnixAgent2.6

Запускаем от рута
mkdir /var/log/ocsinventory-agent && touch /var/log/ocsinventory-agent/ocsinventory-agent.log && env PERL_AUTOINSTALL=1 perl Makefile.PL && make && make install && perl postinst.pl --nowizard --server=http://192.168.5XX.5:3455/ocsinventory --crontab --now --logfile=/var/log/ocsinventory-agent/ocsinventory-agent.log --nossl --debug

Пробуем отсылать сведения на сервер
/usr/local/bin/ocsinventory-agent --lazy --force

Для автоматизации отправки сведений на сервер добавим задачу в Cron (ПОД РУТОМ)
30 11 * * * /usr/local/bin/ocsinventory-agent --lazy --force > /dev/null 2>&1

Если при отправке ругается на файл Network.pm строка 56, тогда
pluma /usr/local/share/perl/5.22/Ocsinventory/Agent/Network.pm

Убираем точку с запятой в строке 56
$self->{config}->{password};
количество слов: 234
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Установка OCS Inventory UnixAgent на ALT Linux

Сообщение Артём Мамзиков »

Установка OCS Agent на Debian9 Proxmox

Установка из исходного кода

Подготовка
Сразу поправим файл в установочнике 2.6 агента
/OCSUnixAgent2.6/lib/Ocsinventory/Agent/Network.pm
Коментируем блок
# $self->{ua}->credentials(
# $uaserver, # server:port, port is needed
# $self->{config}->{realm},
# $self->{config}->{user},
# $self->{config}->{password};
# );

Так как у нас нет интернета на промоксе, сразу качаем пакеты perl с зависимостями для версии 5.24
Возможно пару пакетов можно исключить так как они повторяются с одними не заработало скачал еще, оставил так.
по следующему пути он указан в скрипте /root/OCSUnixAgent2.6/OCS-DEBIAN
libnet-netmask-perl_1.9022-1_all.deb
libproc-pid-file-perl_1.27-4_all.deb
libxml-simple-perl_2.25-1_all.deb
libasa-perl_0.02-1_all.deb
libsub-install-perl_0.928-1_all.deb
libparams-util-perl_1.07-3+b1_amd64.deb
libdata-optlist-perl_0.110-1_all.deb
libsub-exporter-perl_0.986-1_all.deb
libdata-uuid-libuuid-perl_0.05-3_amd64.deb
libossp-uuid16_1.6.2-1.5+b8_amd64.deb
libossp-uuid-perl_1.6.2-1.5+b4_amd64.deb
perl-base_5.24.1-3+deb9u6_amd64.deb
libproc-processtable-perl_0.53-2_amd64.deb
libproc-daemon-perl_0.23-1_all.deb

1. Вариант автоматический Скриптом ставить на все под сети указанные в цикле

Первый скрипт OCSAgent-proxmox
Что делает данный скрипт
Логин пароль везде должен быть по единому шаблону или добавляйте зависимость от подсети какой там пароль (пример шифрование файлов скрипт)
Копирует папку OCS агента и установочные пакета перла
После подключается к debian
Переходит в паку с пакетами и устанавливает их
После возвращаеться в паку с агентом дает права на скрипт установки агента и запускает его ставится агент
Дальше выходим с debian подсети и начинаем все снова для другой подсети и так пока не пройдем все подсети из цикла.
OCSAgent-proxmox
Показать
#!/bin/bash

echo "OCS Agent install Proxmox"

# Переменные логина пароля
USER=root
PASS=Пароль

# Переменные IP для перебора подсетей
ip="17"
for c in $ip
do

for (( i=101; i <= 128; i++ ))
do

/usr/bin/expect<<EOF
# spawn - вызов программы
# expect - ожидание вывода запущенной программой строки (дословно: ожидаем, что скажет выполняемая программа);
# send - передача данных или команд в вызванную программу (выполняется так, как будто вы сами набираете команды в консоли)
# close - завершение сценария

# Время ожидания
set timeout 2

# Копирование папки установки
spawn scp -r /root/OCSUnixAgent2.6 root@192.168.$i.$c:/root
# Если выходит запрос потверждаем yes
expect {
"(yes/no)?*" {
send "yes\r"
}
}
# Ждем строку запроса пароля password:
expect "password:*"
# Водим пароль
send "$PASS\r"
# Время ожидания
set timeout 50

expect eof
EOF

# Вторая часть скрипта
/usr/bin/expect<<EOF
set timeout 9
# Подключаемся по ssh
spawn ssh -p 22 $USER@192.168.$i.$c
# Если выходит запрос потверждаем yes
expect {
"(yes/no)?*" {
send "yes\r"
}
}
# Ждем строку запроса пароля password:
expect "word:"
# Водим пароль
send "$PASS\r"
# Ждем строку для ввода команд от root #
expect "#*"
expect "#*"
# Переходим в дирикторию установки паетов
send "cd /root/OCSUnixAgent2.6/OCS-DEBIAN\r"
# Проверяем что перешли в папку OCS-DEBIAN
expect "OCS-DEBIAN#*"
send "dpkg -i libnet-netmask-perl_1.9022-1_all.deb libproc-pid-file-perl_1.27-4_all.deb libxml-simple-perl_2.25-1_all.deb libasa-perl_0.02-1_all.deb libsub-install-perl_0.928-1_all.deb libparams-util-perl_1.07-3+b1_amd64.deb libdata-optlist-perl_0.110-1_all.deb libsub-exporter-perl_0.986-1_all.deb libdata-uuid-libuuid-perl_0.05-3_amd64.deb libossp-uuid16_1.6.2-1.5+b8_amd64.deb libossp-uuid-perl_1.6.2-1.5+b4_amd64.deb perl-base_5.24.1-3+deb9u6_amd64.deb libproc-processtable-perl_0.53-2_amd64.deb libproc-daemon-perl_0.23-1_all.deb\r"
# Время ожидания
set timeout 20
# Переходим в дирикторию установки ocsagent
send "cd /root/OCSUnixAgent2.6\r"
# Проверяем что перешли в папку OCS-DEBIAN
expect "OCSUnixAgent2.6#*"
# Запускаем установку скриптом
send "chmod 777 autoinstall-ocs-agent-Proxmox.sh\r"
send "./autoinstall-ocs-agent-Proxmox.sh\r"
# Время ожидания установки
set timeout 21

# проверка требований
# send "perl Makefile.PL\r"
#set timeout 8
# send "make"
#set timeout 8
# Установка агента ocs
# send "make install"
# Ждем строку
# expect "Please enter 'y' or 'n'?> [y]*"
# send "n\r"
# expect "OCSUnixAgent2.6#*"
expect eof
# Выполняем выход из сеанса
send "exit\r"
EOF

done
done
Скачать пример скрипта
OCSAgent-proxmox.7z
OCSAgent-proxmox.7z
(1.38 КБ) 68 скачиваний
Если нужно к определенной сети или ip подставить определенные пароли либо логины
Показать
Можно попробовать следующий вариант

Переменные например определены сетей
num="4 13 17 20 21 22 25 28 31 32 33 35 36 37"

#Для распределения Логинов или Паролей с использованием индекса соответствия к сети ip
array=([4]=Пароль1 [13]=Пароль2 [17]=Пароль3 [20]=Пароль4 [21]=П [22]=П [25]=П [28]=П [31]=П [32]=П [33]=П [35]=П [36]=П [37]=П)

Дальше подставляем это все в цикл

for I in $num
do
переменная ${array[$I]}
переменная $I
done

Еще по аналогии
# Переменная Номер района
X=21
#Номер в имени файлов переменная (число 0 интерпретироваться как восьмеричное 08 028 09 и тп выдают ошибку добавляем переменную района в начало)
fileout="${X}004 ${X}013 ${X}017 ${X}020 ${X}021 ${X}022 ${X}025 ${X}027 ${X}028 ${X}031 ${X}032 ${X}033 ${X}034 ${X}035 ${X}036 ${X}037"

array=([${X}004]=Пароль [${X}013]=Пароль [${X}017]=Пароль [${X}020]=Пароль [${X}021]=П [${X}022]=П [${X}025]=П [${X}027]=П [${X}028]=П [${X}031]=П [${X}032]=П [${X}033]=П [${X}034]=П [${X}035]=П [${X}036]=П [${X}037]=П)

И дальше цикл

Аналогичный пример обмен файлами с организациями подпись и шифрование файлов для обмена сопоставление номера организации к фамилии владельца ЭЦП а так же номера файла организации Работа с КриптоПро подпись шифрование
Часть 2 скрипт который выполняет на удаленной устанавливающий агента
С названием autoinstall-ocs-agent-Proxmox.sh

Что делает
1 Получим переменную IP текущей подсети для подстановки в ссылку так как агент работает через поски и порт доступ в ocs
2 Переходим в паку с установочным агентом cd /root/OCSUnixAgent2.6
3 Запускаем установку с параметрами
4 Создаем пути и даем права
5 Добавляем задание в крон
autoinstall-ocs-agent-Proxmox.sh
Показать
#!/bin/bash
# V1.0
# Оф сайт https://wiki.ocsinventory-ng.org/03.Bas ... computers/
# Автор: Мамзиков Артём Андреевич

# Получим переменную IP текущей подсети для подстановки в ссылку
# Выводим строки из файла resolv содержащие address | убираем само слово address | оставляем строку содержащую .17 | оставляем символы с 2 по 12
IP=`grep "address " /etc/network/interfaces|sed 's/^[ \t]*address//'|grep -E '.17'|cut -c 2-12`

cd /root/OCSUnixAgent2.6
env PERL_AUTOINSTALL=1 perl Makefile.PL && make && make install && perl postinst.pl --nowizard --server=http://$IP.5:9057/ocsinventory --basevardir=/var/lib/ocsinventory-agent --configdir=/etc/ocsinventory-agent --crontab --remove-old-linux-agent --logfile=/var/log/ocsinventory-agent/ocsinventory-agent.log --nossl --download --snmp --now

# --nowizard : запустить этот скрипт без взаимодействия
# --server : установить адрес сервера NCS инвентаризации OCS (например, http://ocsinventory-ng/ocsinventory)
# --basevardir : установить OCS Inventory NG Unix Каталог переменных агента Unix (например:/var/lib/ocsinventory-agent)
# --configdir : установить каталог унифицированной конфигурации OCS Inventory NG Unix (например,/etc/ocsinventory-agent)
# --user : установить имя пользователя для аутентификации Apache сервера инвентаризации OCS (если необходимо)
# --password : установить пароль для проверки подлинности Apache сервера OCS Inventory NG (при необходимости)
# --realm : установить имя области для сервера OCS Inventory NG для проверки подлинности Apache (при необходимости)
# --crontab : установить crontab при установке OCS Inventory NG Unix Unified агент
# --get-old-linux-agent-config : получить старую конфигурацию агента Linux OCS Inventory NG (при необходимости)
# --remove-old-linux-agent : удалить старого агента Linux OCS Inventory NG из системы (при необходимости)
# --debug : активировать опцию конфигурации режима отладки при установке OCS Inventory NG Unix Unified агент
# --logfile : установить OCS Inventory NG Unix Путь к файлу журнала унифицированного агента (при необходимости)
# --nossl : отключить параметр конфигурации проверки CA SSL при установке агента Unix OCS Inventory NG Unix (не рекомендуется)
# --ca : установить путь к файлу цепочки сертификатов ЦС сертификата Унифицированного агента Unix NG Unix
# --download : активировать функцию развертывания пакета при установке агента Unix OCS Inventory NG Unix
# --snmp : активировать функцию сканирования SNMP при установке OCS Inventory NG Unix Unified агент
# --now : запустить после установки OCS Inventory NG Unix Unified agent
# -h или --help : показать меню справки
# Пример:
# $ sudo env PERL_AUTOINSTALL = 1 perl Makefile.PL && make && make install && perl postinstl.pl --nowizard --server = http://yourserver/ocsinventory --crontab

# При запуске ошибка коментируем блок в файле Network.pm
#cd /usr/local/share/perl/5.16/Ocsinventory/Agent/
#sed -i.bak '/^[^#].*self->{ua}->credentials(/,/self->{config}->{password};/s/^/#/' Network.pm

# Запрос у пользователя инвентарного номера
#echo Введите ваш инвентарный номер ПК и нажмите Enter
#read intag
#sed -i "s/^tag.*/tag=$intag/g" /etc/ocsinventory/ocsinventory-agent.cfg

#Создание директории
mkdir -m775 /var/log/ocsinventory-agent
echo `date +%e_%m_%g` >> /var/log/ocsinventory-agent/ocsinventory-agent.log

# Дать права бывает нужно от root (su)
chmod 775 /etc/ocsinventory-agent/ocsinventory-agent.cfg
chmod 775 /var/log/ocsinventory-agent/ocsinventory-agent.log
chmod 775 -R /var/lib/ocsinventory-agent

# Запускаем агент передаем данные
ocsinventory-agent --lazy --force --debug

# Добавим настройки в Крон
cat /dev/null > /etc/cron.d/ocsinventory-agent

{
echo 'PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin'
echo '5 10,16 * * * root /usr/local/bin/ocsinventory-agent --lazy --force 2>/dev/null'
echo '@reboot root /usr/local/bin/ocsinventory-agent --lazy --force 2>/dev/null'
} > "/etc/cron.d/ocsinventory-agent"

# Перезапуск службы крон
service cron restart
Скачать пример скрипта
autoinstall-ocs-agent-Proxmox.7z
autoinstall-ocs-agent-Proxmox.7z
(1.96 КБ) 64 скачивания
Скачать агент со скриптами
OCSUnixAgent2.6.7z
OCSUnixAgent2.6.7z
(2.61 МБ) 72 скачивания
количество слов: 1006
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Установка OCS Inventory UnixAgent на ALT Linux

Сообщение Артём Мамзиков »

Вручную на Debian 9

Ставим пакеты Perl через интеренет
perl -MCPAN -e shell
install Net::Netmask
install Proc::Daemon или install Proc::PID::File
install Nvidia::ml
install XML::Simple
install Data::UUID

Или пакетами
apt-get install libnet-netmask-perl
apt-get install libproc-pid-file-perl
apt-get install libxml-simple-perl
apt-get install libdata-uuid-perl

Если нет доступа в инет готовим пакеты
Копируем
С локального на удаленный
scp -r OCSUnixAgent2.6 root@192.168.103.17:/root
На текущий с удаленного
scp -r root@192.168.40.84:/root/OCSUnixAgent2.6 OCSUnixAgent2.6

Еще варианты
ftp://192.168.40.84
sh://root@192.168.40.84/root
sftp://root@192.168.40.84/root/OCSUnixAgent2.6 :/root
или через MC или другими способами

Ставим пакеты
cd /OCSUnixAgent2.6/OCS-DEBIAN
dpkg -i libnet-netmask-perl_1.9022-1_all.deb libproc-pid-file-perl_1.27-4_all.deb libxml-simple-perl_2.25-1_all.deb libasa-perl_0.02-1_all.deb libsub-install-perl_0.928-1_all.deb libparams-util-perl_1.07-3+b1_amd64.deb libdata-optlist-perl_0.110-1_all.deb libsub-exporter-perl_0.986-1_all.deb libdata-uuid-libuuid-perl_0.05-3_amd64.deb libossp-uuid16_1.6.2-1.5+b8_amd64.deb libossp-uuid-perl_1.6.2-1.5+b4_amd64.deb perl-base_5.24.1-3+deb9u6_amd64.deb libproc-processtable-perl_0.53-2_amd64.deb libproc-daemon-perl_0.23-1_all.deb

Ставим агента osc
Переходим в дирикторию
cd /OCSUnixAgent2.6
Проверяем
perl Makefile.PL - проверка требований перед установкой
make
Устанавливаем
make install
Настравиваем
Настроить агент Y
Путь 2 (/etc/ocsinventory-agent)
Создать дирикторию Y
Старые настройки N
http://192.168.101.5:5095/ocsinventory
Учетка сервера N
Тег N
Крон Y
[/var/lib/ocsinventory-agent]
Создать дирикторию Y
Удалить старый Y
Отладка n
Укажите путь лога /var/log/ocsinventory-agent.log
Y
ssl N
sert path N
Программное обеспечение Y
snmp Y
Вы хотите отправить опись этой машины Y

nano /usr/local/share/perl/5.24.1/Ocsinventory/Agent/Network.pm
Коментируем блок
# $self->{ua}->credentials(
# $uaserver, # server:port, port is needed
# $self->{config}->{realm},
# $self->{config}->{user},
# $self->{config}->{password};
# );

Проверяем конфиг
nano /etc/ocsinventory-agent/ocsinventory-agent.cfg
debug=
server=http://192.168.101.5:5095/ocsinventory
logfile=/var/log/ocsinventory-agent.log
basevardir=/var/lib/ocsinventory-agent

дать права бывает нужно от root (su)
chmod 775 /etc/ocsinventory-agent/ocsinventory-agent.cfg
chmod 775 /var/log/ocsinventory-agent.log
chmod 775 -R /var/lib/ocsinventory-agent

Пробуем передать данные
ocsinventory-agent --lazy --force
ocsinventory-agent --force --debug

Добавить в Крон
crontab -e
5 10,16 * * * root /usr/local/bin/ocsinventory-agent --lazy --force 2>/dev/null
@reboot root /usr/local/bin/ocsinventory-agent --lazy --force 2>/dev/null
Оставить пустую строку

Или nano /var/spool/cron/crontabs/root

Перезапускаем Крон
service cron restart
количество слов: 398
Аватара пользователя
Артём Мамзиков
Admin
Сообщения: 866
Стаж: 5 лет 9 месяцев
Откуда: Вологодская область
Поблагодарили: 41 раз
Контактная информация:

Установка OCS Inventory UnixAgent на ALT Linux

Сообщение Артём Мамзиков »

Появилась ошибка на некоторых станция alt linux 8 перестали передаваться данные

# ocsinventory-agent --force
Can't open display
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
WARNING: Failed to connect to lvmetad. Falling back to device scanning.
/var/lib/ocsinventory-agent/http:__192.168.121.9:9485_ocsinventory/last_state:1: parser error : Document is empty

^
XML::Simple called at /usr/local/share/perl/5.22/Ocsinventory/Agent/XML/Inventory.pm line 214.

Лог Calling handlers inventory_handler и XML::Simple called at Inventory.pm line 214

Решение
Удалить в cd /var/lib/ocsinventory-agent/http:__192.168.121.9:9485_ocsinventory/
файлик rm -f last_state (данный файл пустой , а должны быть индификаторы разделов железа uid)

Можно еще ставим еще раз пакеты
apt-get install dmidecode ftp ncftp nmap smartmontools libpci libpci-devel pciutils read-edid ipmitool eepm wget perl-base perl-CGI perl-CPAN perl-HTML-Mason perl-IO-All perl-Proc-Daemon perl-Proc-PID-File perl-XML-SAX perl-XML-Simple cpan2rpm perl-Digest-MD5 perl-Net-IP perl-LWP-Protocol-https perl-Net-CUPS perl-Net-SNMP perl-Net-Netmask perl-Net-Ping perl-Nmap-Parser perl-Data-UUID perl-Compress-Zlib perl-Module-Install perl-Crypt-SSLeay perl-LWP-UserAgent-Determined perl-DateTime perl-Mojolicious perl-AnyEvent perl-AnyEvent-HTTP perl-App-cpanminus libe2fs-devel asa net-snmp-utils net-snmp snmpb perl-Test-use-ok perl-UUID perl-Parse-EDID

Будут установлены следующие дополнительные пакеты:
distro_info glibc glibc-core glibc-devel glibc-gconv-modules glibc-locales glibc-nss glibc-preinstall glibc-pthread glibc-timezones glibc-utils iconv libcrypt libcrypt-devel libidn2 libunistring2 nscd perl-DBM perl-Unicode-Normalize perl-devel perl-threads perl-unicore
Будут обновлены следующие пакеты
eepm glibc glibc-core glibc-devel glibc-gconv-modules glibc-locales glibc-nss glibc-preinstall glibc-pthread glibc-timezones glibc-utils iconv libunistring2 nscd perl-DBM perl-Unicode-Normalize perl-base perl-devel perl-threads perl-unicore wget
Будут установлены следующие новые пакеты:
distro_info libcrypt libcrypt-devel libidn2
21 обновлено, 4 новых установлено

Еще как заметку оставлю snmp сканирование не работает без https Более подробно тут на ГитХабе разработчика OCS
http - SNMP переписка с ГитХаба
Показать
Общая информация Операционная система: Debian 9 64-бит
Информация о сервере Версия Perl: 5.24 Mysql Mariadb

Информация об инвентаризации OCS Версия сервера Ocs: 2.8

Описание проблемы
ошибка: агент должен связываться с использованием https, чтобы иметь возможность получать сообщества SNMP (влияет только на агент OCS unix)

Добрый день! У меня внутренняя локальная сеть из 800 хостов, я хочу собирать данные по snmp, но у меня нет (я не использую) ssl-сертификата для https. У меня нормальное http-соединение. Есть ли способ включить настройку поиска и сбора информации о snmp через http? Думаю, этот вариант будет полезен многим, использующим для локальной сети по http, и будет полезен. Я также понимаю, что передавать данные по http не так безопасно, но это закрытая локальная сеть.
Буду очень признателен, если поможете!

@gillesdubois Член Gillesdubois прокомментировал on 28 Oct 2020
Привет @ Артем-Мамзиков

Использование SNMP поверх HTTPS только из соображений безопасности.
С вашей точки зрения кажется, что ЛВС 800 Host полностью изолирована, и, таким образом, использование HTTP не имеет большого значения.

Однако мы не можем получить доступ к вашему запросу, использование SNMP через HTTP может быть неприятным для большей части установки OCS Inventory из-за данных, которые могут быть перехвачены таким способом работы.
SNMP может легко получить (например) версии прошивки / версию операционной системы / уровень исправления от множества сетевых устройств и, скорее всего, является золотой жилой для злоумышленников.

Даже если вы сделаете это необязательным и ясно, что это не рекомендуется, это действительно не очень хорошая идея для нас. Он также может стать вектором атаки (например: кто-то обращается к серверу OCS и изменяет это значение с целью кражи данных).

Я остаюсь доступным, если вы хотите обсудить больше на эту тему :)

С уважением, Жиль.

Артем-Мамзиков прокомментировал on 28 Oct 2020
Спасибо за ответ! Я хотел сказать, что по умолчанию https включен в ocs Inventory и добавить переключатель с уведомлением «о том, что есть активация безопасного соединения и возможна утечка данных .... вы все равно хотите продолжить включение http» и ответственность больше не лежит на разработчике. Даже как вариант сделать PSK (OpenSSL; GnuTLS; mbed TLS)
бесплатно. Нужно купить ssl сертификат на 1 год, потом нужно везде его заменять и покупать заново, мне это не совсем подходит (.
Меня под свою ответственность больше устраивает 1 вариант с переключением, или если можно написать лично мне или прокомментируйте ниже, как я могу сделать себе http для snmp.
Спасибо!

Gillesdubois прокомментировал on 28 Oct 2020
Я понимаю, но не думаю, что реализация такого поведения станет приоритетом.

Кроме того, если вы не хотите покупать сертификат или сертификат сроком действия на 1 год, вы можете создать самозаверяющий сертификат.
Это позволит вам установить более длительный срок действия, поэтому вам не придется планировать продление сертификата каждый год.

С уважением, Жиль.

Артем-Мамзиков прокомментировал on 28 Oct 2020
Спасибо я вас понимаю, пока надо snmp отказываться.
ALT Workstation 9.1 ocs_agent2.8.0
Odd number of elements in anonymous hash at /usr/local/share/perl/5.28/Ocsinventory/Agent/Backend/OS/Generic/Users.pm line 109.
Исправить 112 строку
Было MEMBER => @members,
Стало MEMBER => \@members,

DM multipath kernel driver not loaded
Выполнить команды
chkconfig multipathd on
/etc/init.d/multipathd start
systemctl enable multipathd.service
количество слов: 438
Ответить Вложения 6 Пред. темаСлед. тема

Вернуться в «OCS INVENTORY»