Mattermost и Powershell — огромная сила, или малая автоматизация своими силами

    Сразу оговорюсь — я работаю в компании, которая напрямую с IT не связана, поэтому бюджет именно на IT у нас небольшой. Соответственно многие программы и связанные с ними удобства нам недоступны, поэтому приходится делать как умеем. А когда в компании помимо IT отдела есть несколько сотен пользователей, которые с трудом отличают монитор от мышки — работа становится как отдельный квест.

    Поэтому написанное мною будет скорее полезно админам в небольших компаниях.

    Многие (или не многие) слышали о таком прекрасном инструменте как Mattermost.
    Для тех, кто не слыхал — это такой Slack, но только self-hosted. Внутри компании общий чат вообще наиполезнейшая штука.

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

    Всем удобен этот чатик, но есть одно одно но. На самом деле не одно, но отсутствие нормального структурированного списка пользователей просто убивает. Можно, конечно, использовать Openfire+Miranda, но наличие у Mattermost клиента для телефонов с возможностью push-уведомления перевешивает все эти минусы. Так как количество пользователей не десяток, количество отделов тоже не два, то иногда возникает вопрос — а кто же сегодня работает на рецепции в удаленном филиале? Кто из них онлайн? Как красиво и доступно донести до обычного пользователя эту информацию в одном месте — тот еще вопрос. Рисовать развесистое дерево вариантов запросов и ответов для чатбота — развлечение еще то, поэтому представляю поделку на коленке специально для такого случая.

    Cервис для Mattermost, написан удобства запуска различных powershell скриптов из slash/custom команд. На самом деле можно использовать для разных нужд, обращаясь к нему по url, но я его писал для того, чтобы в чатике рисовать кнопочки. Все любят кнопочки, даже котики и тётушки из бухгалтерии. Ну а писать на PowerShell обязан уметь любой виндовый админ, поэтому полезняшки!

    Примерная работа выглядит так:



    Сервис предназначен для работы на Windows системах, с Powershell v3+. Для его запуска требуются права запускать PowerShell скрипты и открывать сокет. В скрипте нет никакой аутентификации, поэтому прописывать в конфигах что-либо разрушительное и выставлять голой попой в интернет не советую. С другой стороны можно прописывать пути подлиннее, но это на любителя.

    Сервис состоит собственно из самого скрипта, и конфиг файла, в котором указываются скрипты, которые нужно запускать и передаваемые на вход данные (описаны в документации, пункт 8).

    Записи в конфиге

    [script]
    Script=.\Dummy-Script.ps1
    IncomingVariables=text,team_domain,user_name
    

    означают, что при обращении к урлу /script будет запущен скрипт Dummy-Script.ps1, находящийся в той же директории, что и ButtonCommander, с входящими переменными text,team_domain,user_name.

    Сервис получает данные со скриптов и посылает их в channel, из которого пришел запрос. Если данные пришли в форме JSON, то конвертация в простое сообщение не происходит, а в Mattermost посылается исходный JSON — именно так делаются кнопочки.

    Скрипт можно остановить или перечитать конфиг файл тоже путем обращения по специальному url. Но в прочем, описание и установка описаны прямо в репозитории, поэтому копипастить не буду. Скрипт прошёл обкатку, и выложен уже в рабочей версии. Работает без сбоев уже вполне долгое время.

    Ссылка на репозиторий.

    P.S.: Аффтар не писатель и не программист, а акушер-столяр широкого профиля, поэтому пишет как умеет.
    P.P.S.: Речь везде идет о Team Edition, у которого (о боль, боль!) нету ldap авторизации. Я выхожу из положения подменой странички логина на свою (nginx + python,) но та поделка настолько чудовищна, что выкладывать ее я считаю преступлением.

    Similar posts

    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More
    Ads

    Comments 7

      +1
      Для авторизации LDAP в Mattermost for the Team Edition можно использовать вот такую штуку: github.com/Crivaledaz/Mattermost-LDAP
        0
        После этого и решил своё запилить, заодно попробовать питон. А эта штука тянет за собой гитлаб, а он не всем нужен, вторых связку мм и гитлаб еще настроить нужно, да и там два лишних окна открывались. По крайней мере 2 года назад было. Но первый пункт важнее :)

        Сейчас более кузяво получилось — что в браузере, что в десктопном клиенте.

        0
        Акелла промахнулся
          0
          А как же rocket.Chat?
            0
            Я, честно говоря уже не помню, по какой причине мы его забраковали :\
              0
              сейчас он весьма хорош
                0
                Верю, но уже поздняк метаться :)

        Only users with full accounts can post comments. Log in, please.