Сообщество - Лига Сисадминов

Лига Сисадминов

2 419 постов 18 940 подписчиков

Популярные теги в сообществе:

358

Отображение имени компьютера и ip-адреса на панели задач1

Всем привет, захотелось мне сделать отображение имени компьютера и его ip-адреса на панели задач. Сразу покажу как это будет выглядеть.

Знаю, что есть программа BgInfo, которая выводит информацию на рабочий стол, но по моему это очень неудобно. Вывод на панель задач на много удобнее.


Одним из самых сложных моментов было понять что искать, как оказалось эта часть панели задач называется deskbands и у microsoft уже есть шаблон для вывода информации на нее. Он лежит по этой ссылке. Написан на с++, компилируется в виде dll. Напрямую с гитхаба не скачать, можно скачать отсюда.


Теперь опишу какие переменные за что отвечают.


Название, отображаемое в меню Панели, указывается в файле DllMain.cpp в массиве WCHAR const szName[].

Основные изменения производятся в файле DeskBand.cpp. Размеры области для вывода указывается в переменных: pdbi->ptMinSize.x,

pdbi->ptMinSize.y, 

pdbi->ptActual.x, 

pdbi->ptActual.y.


Цвет текста задается в переменной:

dttOpts.crText.


Если оставить строку:

dttOpts.iGlowSize.

Будет эффект светящейся обводки вокруг текста, я ее закомментировал.


В шаблоне microsoft

static WCHAR szContent[] = L"DeskBand Sample";

в этом массиве указывается текст, который будет выведен в deskband. В моем варианте она убрана, пришлось переработать вывод.


Саму dll, как и код, для вывода имени хоста и ip выложил на гитхаб.


Для запуска нужно зарегистрировать dll через командную строку с правами администратора командой regsvr32 ПОЛНЫЙПУТЬ/Deskband_Hostname_Ip_64.dll или regsvr32 ПОЛНЫЙПУТЬ/Deskband_Hostname_Ip_32.dll соответственно.


Затем нажать ПКМ по панели задач -> Панели.

В этот момент она еще не появится, нужно еще раз нажать ПКМ по панели задач и открыть панели, затем поставить галочку у названия, как на скрине выше.


Если меняется ip или имя компа, то изменения на панели будут после ее перезапуска или после перезагрузки компьютера.


Надеюсь кому-нибудь будет полезно.


p.s. Не понял как сделать, чтоб надпись была в две строки, может кто подскажет?

Показать полностью 1
78

Ansible + Mikrotik = Приключения

Как и в любой сказке всё началось довольно невинно, захотелось мне сконфижить пачку микротов разом, через Ansible, и тут пошло всё не так)


Очень кратко, что это и как работает, можно прочитать ТУТ


Кратно о том что есть у меня в распоряжении для теста:

- Ansible AWX

- CCR1036-12G-4S


Глава первая - Печальная!

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

The error was: ansible.module_utils.connection.ConnectionError: timeout value 30 seconds reached while trying to send command: b'

* на самом деле дебаг больше и сочнее, но для понимания сути, будет достаточно этого)


1 - первое, что пришло мне в голову, это править таймауты в ansible.cfg - не помогло!

2 -  identity пользователя от которого выполняется сценарий, у меня это был ansible-ops.

* классический admin, был упразднен сразу же,  ввиду его не модности и не безопасности)

Забегая на перед, отчасти проблема была в имени пользователя, ansible с микротиком на пару, плохо понимают имена пользователей с дефисами. (Вернее не понимают совсем)

3 -  проведён ресёрч на тему длинны имени(Identity) самого Mikrotik, в процессе поиска, на  гите, была найдена ветка со схожей проблемой, решение было таково, что длина имени, не должна превышать 32 символа, у меня она составляла 30 символов, так что мимо кассы)

4 - были переустановлены несколько видов и версий прошивок, из ветки stable\long-term, не помогло

5 - на финал был скинут в ноль  CCR1036-12G-4S для теста, и... барабанная дробь, работает!


Глава вторая - победа, побед)

Проблема была обнаружена в имени Mikrotik, у меня они содержали пробелы и | (пайп лайны).

Дальше я решил проверить, а какие ещё символы Ansible + mikrotik на дух не переносят?

Какие символы в Identity Mikrotik, может переварить Ansible :

"test core router" - OK

"test-core-router" - OK

"test.core.router" - OK

"test:core:router" - NO

"test=core=router" - NO

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

* ansible-ops = timeout!


Эта очень короткая записка о проблеме на которую я потратил неделю жизни и нервов)

Спасибо всем кто прочел, удачи и добра!)

Показать полностью 2
20

Продолжение поста «Когда душа поет как Floppy Disk»1

red ALERT по  просьбе @glebklubnichka
пока еще ковыряю как переписывать миди файлы что бы разбивалось на несколько флоппи дисков  а то переконвертированные файлы воспроизводятся на одном
почему то 2 видео не прикрепилось

26

Как отследить подключено ли оборудование в порт коммутатора

Всех приветствую. Есть у меня такая схема интернет подключения гаража. Провайдер подаёт интернет в квартиру (не мою), в квартире коммутатор d-link 3028, далее от коммутатора кабель идёт в гараж, там стоит маршрутизатор MikroTik. Сделано так в основном, потому что протяженность кабеля большая и для удаленки на случай проблем с инетом. В квартире интернет отдельно. Но благодаря интернету в квартире (от другого провайдера) есть удаленный доступ до коммутатора ( он управляемый). Ещё один шнурок для управляемой розетки, чтобы можно было роутер перезагрузить физически. И ещё один шнурок, чтоб на роутер можно было попасть через резервный интернет, который в квартире. Вообщем максимальная удалёнка. Схема сложная, но по-другому никак, в гараже видеонаблюдение и сигнализация ( с мобильным интернетом туго).
Так вот, в гараже перестал работать интернет, не получает ip от провайдера. Созвонился с поддержкой провайдера, сказали всё перепроверят, перезвонят. Перезвонили, я не в гараже, но удаленка есть. Далее диалог:

П: перезагрузите роутер, какая модель у вас?
Я (отправляя роутер в ребут): Перезагрузил, MikroTik rb951.
П: Отключите кабель физически от роутера.
Я: (посылаю команду disable на порт коммутатора) отключил.
П: точно отключили?
Я: да, в чём проблема?
П: я вижу наличие оборудования
Я: странно...подключаю?
П: да, но можем в другой порт? Сможете перенастроить?
Я: без проблем ( делаю ресет мака на порту). Порт сменил (отправляю enable на коммутатор)
П: Секунду, проверьте, всё должно заработать.
Я: всё ок.

Так вот у меня вопрос, каким таким образом провайдер мог видеть наличие оборудования на порту (коммутатор) если порт отключён? Порт в сторону провайдера untag и при включённом порту там светится у провайдера только мак микротика.
В гугле подобного не нашёл. Может кто расскажет по сабжу что интересного. Мне бы такая технология пригодилась)

Показать полностью
161

Пример маленькой автоматизации zabbix-Mikrotik-ELK

Итак, в прошлом посте читатель узнал, что у меня завелось 55 микротиков. За прошедшее время, по заветам комментаторов, был развернут ELK Stack. Это такая штука для сбора логов со всего, что может эти логи слать. ELK = Elasticsearch + Logstash + Kibana.

Настраивала вот по этим двум статьям, в принципе там всё понятно. Раз и два.


Но помним, что микротиков сильно больше пары штук – это раз. Второе, если прописывать все их в фильтры сборщика логов, то появляется ещё одно место, куда надо что-то писать руками при вводе микротика в эксплуатацию, что не есть хорошо. Да и лень мне было прописывать их все. Короче, во мне стал зарождаться DevOps.


Задача - чтобы в заббиксе мы микротик завели – а логи с него автоматом бы полились и уже с меткой mikrotik.


Я слегка погружусь в теорию, чтобы было понятнее, что мы делаем. Итак, развернут ELK – изначально логи попадают в logstash, где с ними можно что-то сделать. Например, мы отбираем по некоторым критериям логи микротиков и вешаем на них метку «Mikrotik». Этим критерием у меня является IP – то есть «если ip из вот этого перечисления, то это микротик». Если бы у нас был ELK только для микротиков – мы бы просто вешали метку на весь трафик или обошлись без неё, но мы потом хотим добавлять еще логи всякого, например, виндовых серверов. После обработки логи попадают в elasticsearch, где мы их просматриваем с помощью Kibana (это типа веб-морда).


Для начала нам надо получить список микротиков из zabbix. Я использую для этого скриптик на питоне, который получает ip по группе и сразу генерирует кусок конфига, который будет в logstash filter.


Сперва надо установить модули zabix для питона:

apt install python3-pip

pip3 install pyzabbix


Теперь нам надо получить id группы в zabbix – его можно посмотреть в адресной строке браузера на странице группы – там в конце будет что-то типа groupid=65


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

Получается строка вида «if [host] in ["10.1.1.254", “10.2.2.254”]{»


Теперь её надо вставить в правильное место конфига logstash. Чтобы этого добиться, я ставлю метку #MIKMIKMIK туда, куда будет вставлена получившаяся строка.

Вставлять будем с помощью Ansible, один раз вставится, потом будет проверяться на соответствие. Собственно из-за этого и выбран Ansible – он сам будет проверять наш конфиг на соответствие и вносить изменения только, если они есть.


Вот так выглядит /etc/logstash/conf.d/filter.conf до первой работы анзибля

Теперь собираем котлету вместе. Делаем playbook в ansible, который запустит нам скрипт, потом получившийся конфиг вставит в конфиг logstash, и если зафиксированы изменения – перезапустит службу. Со службой я долго не могла понять – почему перезапуска не происходит и ansible отваливается по timeout – ему просто не хватало прав.

write_logstash.yml:

Ну и запихиваем скрипт в крон делаться каждый час.

15  *  *  *  * ansible-playbook /usr/scripts/write_logstash.yml


Опытный читатель спросит – и что же, нам теперь на 55 микротиках настраивать логирование? И мы возвращаемся к предыдущему моему посту (и понимаем, зачем нам это было надо). Вот пример настройки лог-сервера, при этом в команде к каждому микротику указывается его IP в качестве источника данных. Без этого у меня автоматом выбирался служебный ip с интерфейса ip-ip туннеля и это было неудобно.

Ну и уровень логирования настраивается так же, только команду заменить.


В итоге мы получили что хотели – достаточно добавить микротик в заббикс и настроить на нем пересылку логов, а в ELK оно попадёт автоматом с нужной меткой.


Получился маленький кирпичик автоматизации, но путь в DevOps иногда начинается с одного шага..


Код текстом.

Показать полностью 4
19

Проблема с OCS

Доброе утро, граждане Пикабу!


Сразу скажу, что пост не для рейтинга, а чисто решение (здравое) спросить у знающих людей. Мало ли есть люди, которые знают! :)


В месте, где я работаю - есть система инвентаризации OCS и GLPI и мне была поставлена задача - сделать, чтобы была смодулирована сетевая сетка (чтобы в конторе было видно все подключенные устройства по сети) через протокол SNMP!

Читал гайды на английском и французских языках, честно - ничего не понял!


Может быть, знающие люди, которые работали с этим и знают - могут подсказать или помочь!


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

Отличная работа, все прочитано!