Мечта каждого системного администратора — максимальное количество автоматизаций, где они возможны (и невозможны). Количество ежедневной рутины, с которой мы сталкиваемся, слишком велико, чтобы не хотелось делать какие-то постоянные задачи в несколько нажатий на кнопки. И бывают такие случаи, когда у компании меняется какая-то очень важная информация, скажем, адрес, где расположен головной офис. Тогда приходит время изменить свою подпись в корпоративной почте, чтобы не дезинформировать контрагентов.
Что можно было бы сделать без автоматизации?
- Заставить всех сотрудников менять подпись самостоятельно. Изначально так и планировалось, но нет никаких гарантий, что все ТОЧНО это сделают, сделают правильно, сделают красиво, не добавят лишних символов, не сломают подпись.
- Подключаться к 200+ сотрудникам через AnyDesk, заходить в настройки подписи в их почте и менять значение на нужное. Даже если это реализуемо (в основном писать сотням людей и отвлекать их от работы не получается), то что будет, если через несколько недель сменится ещё и номер телефона компании? Повторять процедуру, конечно! 2-3 дня у сотрудников технической поддержки пройдут "очень весело", если так делать.
Поэтому напрашивается возможность менять эти подписи автоматически, вообще без участия пользователя.
В игру вступают автоматизации
И тут начинается интересное! Конкретно в нашей компании используется Google Workspace, имеющий очень подробную документацию и удобный API, с помощью которого из-под приложения с сервисным аккаунтом администратора можно проворачивать множество операций с любыми пользователями внутри т.н. тенанта. Этим я и решил воспользоваться для решения задачи.
Потребовалось включить доступы на чтение данных пользователей и редактирование самих подписей в Gmail:
Потребовалось включить доступы на чтение данных пользователей и редактирование самих подписей в Gmail:

А дальше дело за малым — разработать ПО, работающее ровно так, как нужно компании в конкретной задаче, но при этом обладающее гибкостью и масштабируемостью.
Первоначально взгляд пал на Python, потому что вроде бы прописал несколько импортов и готово, и он действительно решил задачу... По изменению одного числа в подписи. Да, компания переехала с адреса Невский пр. 140 на Невский пр. 1. В итоге не было даже возможности просмотреть, у кого и что изменилось. Сразу возникли большие вопросы к UI/UX, потому что не хотелось получать жалобы от пользователей с поехавшей подписью. Разумеется для решения задачи был использован ChatGPT, потому что не всякий сисадмин умеет программировать, но код я читать умею, как и пользоваться элементарной логикой, поэтому ошибки исправлял сам. А потом вообще было решено переписать всё на C# для дальнейшего более лёгкого распространения программы среди отдела, не всем хочется устанавливать Python с кучей зависимостей, да и ресурсов он отъедает прилично. И да, нейросеть помогла и с этим. В итоге после нескольких десятков запросов, компиляций и добавления новых функций получилось примерно вот это:
Первоначально взгляд пал на Python, потому что вроде бы прописал несколько импортов и готово, и он действительно решил задачу... По изменению одного числа в подписи. Да, компания переехала с адреса Невский пр. 140 на Невский пр. 1. В итоге не было даже возможности просмотреть, у кого и что изменилось. Сразу возникли большие вопросы к UI/UX, потому что не хотелось получать жалобы от пользователей с поехавшей подписью. Разумеется для решения задачи был использован ChatGPT, потому что не всякий сисадмин умеет программировать, но код я читать умею, как и пользоваться элементарной логикой, поэтому ошибки исправлял сам. А потом вообще было решено переписать всё на C# для дальнейшего более лёгкого распространения программы среди отдела, не всем хочется устанавливать Python с кучей зависимостей, да и ресурсов он отъедает прилично. И да, нейросеть помогла и с этим. В итоге после нескольких десятков запросов, компиляций и добавления новых функций получилось примерно вот это:

Первая реально рабочая версия программы
Она могла делать примерно всё, что требовалось, за одним лишь важным нюансом — не решала первоначальную задачу. Ещё несколько десятков запросов помогли внедрить ровно то, что было нужно. Теперь мы можем парсить адреса прямо из подписей! Но так как адрес в коде подписи не имеет класса, приходится искать внутри самого текста по маске. Впрочем и это решаемо, если изменить код шаблона самой подписи, а потом унифицировать его для всех.

Так тоже можно, да
В общем и целом итоговая программа выглядит так:

Иконку и название выбрал соответствующие
Она позволяет:
На последнем остановимся подробнее. Это и была основная задача, поэтому хотелось сделать её максимально качественно и прозрачно, чтобы не было сомнений в том, что у всех подписи будут отображаться правильно. При нахождении строки, начинающейся с "Санкт-Петербург" вся строка меняется на заданную. И это очень важно, потому что первые версии просто меняли текст по маске, из-за этого получались разные казусы вроде "Невский 1/4/4/4". Сейчас всё работает идеально!
- Генерировать из шаблона подписи каждому сотруднику, используя синхронизацию с Active Directory (LDAP);
- Редактировать подпись вручную, изменяя нужные части кода;
- Массово заменять адреса.
На последнем остановимся подробнее. Это и была основная задача, поэтому хотелось сделать её максимально качественно и прозрачно, чтобы не было сомнений в том, что у всех подписи будут отображаться правильно. При нахождении строки, начинающейся с "Санкт-Петербург" вся строка меняется на заданную. И это очень важно, потому что первые версии просто меняли текст по маске, из-за этого получались разные казусы вроде "Невский 1/4/4/4". Сейчас всё работает идеально!

Видим немного неправильный адрес, выбираем, заменяем

Успешно заменили!
И да, после повторного парсинга этого адреса уже нет.
Что в итоге?
На программу потрачено в районе 1.5 рабочих дней. Потенциальная экономия времени получилась в несколько раз больше, а учитывая предыдущий опыт с подписями, которые часто приходилось настраивать вручную у пользователя, можно её считать бесконечной. Я доволен, коллеги довольны, задача решена, все молодцы, сотрудникам не нужно тратить время на проверку и изменение своих подписей.

Ресурсов, учитывая встроенный WebView, она потребляет крайне мало
И всё это сделал обычный младший ИТ-инженер компании РЭС Технологии! =)
Мы оказываем широкий спектр IT-услуг:
- IT аутсорсинг и консалтинг;
- Переход на облачную инфраструктуру;
- Внедрение IT систем;
- Развитие и автоматизация IT инфраструктуры;
- Разработка и автоматизация сайтов;
Связь с нами sls@res-t.ru