Обновить
361.15

Linux *

Пишем под *nix

Сначала показывать
Порог рейтинга

Отправь мне в почту файл с сервера

Всем привет!

Есть множество способов скопировать файл или его фрагмент с linux сервера: "копипаста", scp/winscp, "комбайны" типа MobaXterm, php -S ..., python -m http.server ... . Для меня, неожиданно, оказался удобным вариант отправки такого файла, если он не слишком большой, себе на почту, в виде вложения, особенно для дальнейшей пересылки коллегам (архивы журналов, примеры конфигураций ...). Для технической реализации потребуется корпоративный почтовый сервер, упомянутый здесь и bash (даже, точнее, sh :) с утилитами, которые всегда есть "из коробки". Да, никакого специального ПО, предназначенного для работы с электронной почтой, ставить на каждый linux сервер не придется.

За основу были взяты примеры отсюда

Результат выглядит так:

$ nano ~/mail.sh

#!/bin/sh

[ -f "$1" ] || { echo Example: ~/mail.sh attach_file_name; exit 1; }

EMAIL="youremail@yourcorp.ru"
MAILSERVER="mailhub.yourcorp.ru"
FILENAME=$1

{
    sleep 2
    echo "EHLO $MAILSERVER"; sleep 1
    echo "MAIL FROM: <$EMAIL>"; sleep 1
    echo "RCPT TO: <$EMAIL>"; sleep 1
    echo "DATA"; sleep 1
    echo "To: $EMAIL"
    echo "Subject: $FILENAME"
    echo "MIME-Version: 1.0 (mime-construct 1.9)"
    echo "Content-Type: $(/usr/bin/file -bi "$FILENAME"); name=\"$FILENAME\""
    echo "Content-Transfer-Encoding: base64"
    echo
    openssl base64 < "$FILENAME"
    echo '.'
    echo "QUIT"
    echo
} | nc $MAILSERVER 25

$ chmod +x ~/mail.sh

$ ~/mail.sh /etc/os-release

$ sudo ~/mail.sh /var/log/syslog.2.gz

Еще, скрипт наглядно демонстрирует работу протокола SMTP и пример форматирования электронного письма с вложением, о чем мои коллеги рассказывают на занятиях

Буду рад, если кому то пригодится, с наступающим Новым Годом!

Теги:
-1
Комментарии4

Слышу уже от второго человека, что язык Rust не дает нормально работать с указателями в связанных списках, деревьях и графах (в моей вселенной ЯП без этого - это как свадьба без невесты). Взял ChatGPT, задал промпт: "write a code to insert a node into a doubly linked list in rust". Оно сгенерило нечто с кучей дополнительных слов, которых не было ни в Си, ни в Паскале 40 лет назад: borrow, as_ref, and_then, upgrade, map, downgrade, Some, clone, borrow_mut. Это все реально нужно или они там совсем озверели?

Теги:
+11
Комментарии59

Философия IT-собеседований: взгляд разработчика и DevOps-инженера

Привет, Хабр! Мой пост носит дискуссионный характер. В веб-разработке, администрировании и DevOps я уже 17 лет. Долгое время работал «на себя», оказывая помощь клиентам, с которыми выстроены надёжные взаимоотношения, но текущие реалии рынка подтолкнули к поиску работы по ТК, об этом я и хочу поговорить.

Обо мне: 40 лет, из которых 17 лет в коммерческой разработке. Прошел долгий путь как в fullstack-разработке (web), так и в создании embedded-решений (каршеринг), администрировании и DevOps.

Раньше мой процесс найма редко выходил за рамки одного интервью. Сейчас же я регулярно сталкиваюсь с многоступенчатыми отказами, иногда даже на этапе HR-скрининга. Этот контраст заставил меня задуматься: что делает найм эффективным, а что превращает его в фарс? Решил систематизировать свои наблюдения и поделиться тем, что в современных собеседованиях кажется здравым, а что — откровенно лишним.

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

  1. Диалог на равных.
    Мое лучшее интервью: техлид не мучил теорией, а предложил обсудить реальную дилемму, которую он решает в данный момент (внедрение NoSQL-хранилища ради одного специфичного сервиса, т.е. доп. точка отказа vs производительность). Без таймера и стресса мы искали решение. Итог — оффер и годы отличной работы.

  2. Проверка логики, а не памяти.
    Люблю кейсы в духе: «Вот дано А, почему происходит Б?». Из банального: может ли Вася из другого города достучаться до вашего локального IP? Это показывает понимание базы лучше любого теста.

  3. Ценность универсальных знаний.
    Универсальные знания долгое время позволяли быстро находить решение практически любой проблемы от хардверной, до нарушения самых элементарных паттернов проектирования в коде и эффективно их устранять. Мне нравятся задачи, где проблема может быть скрыта на любом уровне и нравятся клиенты, понимающие, как я могу снять их головную боль обеспечив работоспособность ПО в любой среде и условиях.

А теперь я хочу описать то, от чего меня бомбит. Это факторы которые будут отпугивать меня вплоть до момента, когда будет нечего кушать и я буду вынужден прогнуться под выгодное предложение.

  1. Лайвкодинг.
    В 40 лет написание кода для меня — процесс интимный... хотя я практикую парное программирование в реальной команде и это мне нравится, но в предвкушении собеседований иногда хочется "психануть" и на предложение выбрать время для лайвокдинга сказать — "предлагаю парное программирование с одним из ваших специалистов, ведь для меня тоже важно, с кем я буду вести разработку". (Не пробовал так отвечать, но попробую, как только выдастся случай).

  2. Вакансии-обманки.
    Зачем заманивать стеком DevOps (Linux, Nginx, Ansible, Terraform, Puppet, Docker, Kubernetes, MySQL, PostgreSQL, Elasticsearch, Logstash, Kibana, Zabbix), если по факту сообщаете, что ничего этого не будет, а ищите классического сисадмина 9-18? — Давайте адкеватный запрос, а не тратьте время.

  3. Терминологическая каша. Сложно отвечать экспертно, когда интервьюер путает CI и OCI или Redis и Rabbit. Если нет погружения в контекст, конструктивного диалога не выйдет. Готовиться к собеседованию должен не только соискатель, но и тот, кто нанимает.

  4. Отсутствие пунктуальности.
    Для меня было шоком, что фаундер может просто не явиться на собседование, или рекретер забывает о диалоге и назначенной встрече. У вас там всё нормально?) Хотя рекрутер мало чем отличается от агента недвижимости, но фаундер забывающий про собеседование для меня персонаж странный.

  5. Узкая специализация.
    Раньше, как мне кажется, ценилась универсальность, способность разработчика понимать инфраструктуру, а инженера/админа — код. Сегодня индустрия уходит в жесткую сегментацию, видимо, для более точного просчёта рисков. А я считаю, что именно универсальность — это страховка проекта от того, что решение будет принято в вакууме одного стека, без учета общей картины.

Теги:
+7
Комментарии2

Еще один вариант маршрутизации трафика через два сетевых интерфейса на основе списка доменных имен.

Сразу оговорюсь: все лучшие и хорошие варианты решения этой проблемы уже были рассмотрены на Хабре. Но для тех, кто использует linux и кого существующие варианты почему-либо не устраивают, предлагаю рассмотреть еще один.

Краткое содержание: ставим локальный dns resolver с плагином на python, который, при разрешении имени в адрес, устанавливает маршрут через альтернативный интерфейс, если адрес соответствует регулярному выражению. Для использования решения требуется умение сконфигурировать и запустить сервис в вашем любимом дистрибутиве/сервис-менеджере, готового пакета для установки нет.

При написании кода использовалась статья Составляем DNS-запрос вручную, огромное спасибо автору и переводчику.

Для реализации идеи нужен ДНС сервер, который позволяет достаточно просто писать плагины/хуки. Первым попавшимся на глаза был PowerDNS Recursor, который позволяет писать плагины на lua. И первая реализация была для него. Но lua это больше про компактность, чем про удобство, например, поддержку регулярных выражений можно так назвать только из вежливости. Тем не менее, всё работало как предполагалось, и достаточно надежно, пока не был найден Unbound DNS который позволяет писать плагины на python, и, в итоге, был написан аналог на питоне, который и предлагаю вашему вниманию.

Все файлы доступны на github. Файлов всего 5 и все достаточно короткие.

Файл reroute.conf: пример файла конфигурации ДНС сервера. 192.168.0.1 и 172.16.17.1 — это адреса маршрутизаторов для первого и второго интерфейсов, соответственно. /etc/unbound/reroute.py — собственно плагин выполняющий основную работу. Из существенных моментов: chroot необходимо отключить, чтобы могли нормально работать скрипты на python и сервис должен работать от root чтобы добавлять маршруты.

Файл reroute.py — плагин, который выполняет необходимые дествия, reroute_conf.py — файл конфигурации для плагина, можно записать оба параметра прямо в плагин и обойтись без него. Вся работа выполняется в функции do_reroute, весь остальной код взят, практически без изменений, из документации unbound dns.

Файл rrdomains.txt — список регулярных выражений в формате python regex, при совпадении с которыми для всех ip-адресов разрешаемого доменного имени выполняется установка альтернативного маршрута.

Файл bashrc содержит определение функции reroute. Если во время работы наткнулись на сайт, для которого необходима маршрутизация через второй интерфейс, можно воспользоваться быстрым перенаправлением с помощью команды reroute в терминале. Или добавить доменное имя или регулярное выражение для него в rrdomains.txt и перезапустить dns сервер.

На этом всё, успешного маршрутизирования!

Теги:
+2
Комментарии0

Представлен открытый защищённый менеджер паролей PearPass, который хранит ключи на локально и не передаёт их в облако. Синхронизация между устройствами пользователя происходит через зашифрованное соединение. Есть встроенный генератор надёжных паролей. Приложение также проверяет слабые пароли.

Теги:
+2
Комментарии4

@Regnar, навеяло статьёй

Свалился на меня «последний из 32-битных могикан», но машинка прямо финал возможностей архитектуры — насколько я понял, видит спокойно 8 гигов рамы (PAE во все поля?), слотов не пожалели, в общем, в такое чудо бы камень хотя бы на 2 ядра, но, увы…

Я его практически не смотрел ещё и ХЗ когда посмотрю (вроде не совсем мёртвая), но превентивно задам вопрос. Допустим, поставил я туда 32-битный BunsenLabs. Допустим, я хочу запустить какое-нибудь 64-битное приложение, которое в 32 битах давно уже не обновляется. Допустим, мне пофиг, что там в плане скорости (очень важное допущение, потому что оно как бы понятно, что там будет).

Насколько это реально — настроить для него резервативию… презервацию… короче, специально обученный загон с софтовой эмуляцией 64 бит? Существуют ли решения? Чтобы их установить и отконфигурировать, обязательно пройти все круги ада, как в той статье?

Практического смысла это по понятной причине не несёт — просто пятничное.

Теги:
-2
Комментарии0

Почему я снова вернулся на Debian после Ubuntu 24.04 и Fedora 42

Недавно я купил новый ноутбук и решил использовать это как повод попробовать что-то свежее, кроме привычной Ubuntu.

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

Я решил обновиться с Ubuntu 22.04 до 24.04 - казалось бы, логичный шаг: свежий LTS, новые пакеты, улучшения в GNOME. Но спустя пару недель я понял, что дистрибутив нужно менять. Расскажу, почему.

Медленная работа с большим количеством файлов

Главная причина — баг, который проявлялся в файловом менеджере.
Когда в каталоге было много файлов, его открытие могло занимать слишком много времени, иногда десятки секунд.

Если регулярно работаешь с проектами, папками картинок или архивами — это превращается в настоящий тормоз.

Да, баг могут исправить, но в тот момент он мешал работать каждый день.

Fedora: понравилась, но не подошла под задачи

Первым я решил попробовать Fedora 42.
Впечатления были отличные:

  • система работает быстро,

  • GNOME выглядит аккуратнее без патчей Canonical,

  • Wayland ощущается максимально плавным,

  • окружение ощущается «современным из коробки».

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

Да, что-то можно было поставить, но не все инструменты, которыми я пользуюсь в работе, нашлись. Также наблюдалась проблема обновления некоторых пакетов из России. Получается замкнутый круг.

В итоге я пытался найти нужные программы, но либо я их не там искал, либо их не было, либо которые я нашел не заработали.

Почему я выбрал Debian 13

В этом году как раз вышел Debian 13 с GNOME 48, я решил попробовать его.

И для себя получил:

  • стабильность, к которой привык,

  • современный GNOME без патчей,

  • огромный набор пакетов в репозиториях,

  • отсутствие лишних предустановленных компонентов,

  • а главное — всё, что мне нужно, установилось без танцев.

В итоге Debian остаётся для меня тем самым балансом:

Итог

Ubuntu 24.04 — неплохой релиз, но сейчас он не подходит под мои задачи.

Fedora оставила отличные впечатления — она бы идеально подошла мне «для души».
Но для работы мне нужна система, где всё устанавливается из репозиториев, ничего не ломается после обновлений и не приходится искать обходные решения.

Так я и остановился на Debian 13 с GNOME 48 — и пока это лучший вариант для моего сценария.

А прочитать статью про мой ноутбук, который я приобрел для Линукс за 25000 рублей, вы можете по ссылке:

https://kodprog.ru/noutbuk-dlya-linuks-za-25000

Теги:
+5
Комментарии10

Почему мне не понравился Arch Linux

Однажды я решил попробовать Arch Linux — в качестве эксперимента, чтобы понять, подходит ли он мне как основная система. Спойлер: нет. Хотя я понимаю, почему Arch нравится многим, лично мне он не зашёл. Расскажу коротко — без холивара, просто субъективный опыт.

1. Слишком много ручной настройки

Да, это философия Arch — «собери систему под себя».
Но когда даже базовые вещи требуют:

  • поиска пакета вручную,

  • чтения вики,

  • настройки конфигов,

в какой-то момент это начинает отвлекать от работы.

Мне хотелось просто пользоваться системой, а не постоянно её собирать.

2. Установка превращается в квест

Я понимаю, что сейчас есть Archinstall, но это всё равно:

  • больше шагов,

  • больше точек, где можно ошибиться,

  • больше нюансов, которые надо держать в голове.

Для сравнения: Ubuntu/Debian/Fedora ставятся буквально за 10–15 минут без сюрпризов.
Arch — это отдельный процесс, который каждый раз занимает время, силы и концентрацию.

3. Постоянные обновления и риск поломок

Rolling release — это круто, но это также:

  • риск, что обновление завтра что-то сломает,

  • необходимость держать в голове зависимости,

  • желание обновляться реже, но при этом понимание, что массово обновлять ещё опаснее.

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

4. Много времени уходит на поиск информации

Arch Wiki — одна из лучших в мире, но:

  • почти каждое действие требует чтения документации,

  • часто нужно искать решения на форумах,

  • иногда конфликты пакетов решаются вручную.

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

5. Минимализм оказался минусом

Arch устанавливается «голым».
Ты ставишь:

  • окружение,

  • драйверы,

  • кодеки,

  • шрифты,

  • инструменты,

  • конфигурируешь систему практически с нуля.

Кому-то это даёт свободу.
Мне — лишние часы, которые можно было потратить на реальную работу.

Итог

Я понимаю, за что любят Arch — скорость, свежие пакеты, гибкость. Но для моего сценария использования он требует слишком много времени и внимания. В итоге я вернулся к Debian/Ubuntu: они просто работают, а я могу заниматься задачами, а не конфигами.

Теги:
+2
Комментарии21

Привет, Хабр! Наступила очередная пятница, поэтому я несу полезные материалы на выходные для тех, кто хочет получше освоить Ubuntu. Информация по ссылкам довольно базовая, для начинающих. Все бесплатно, без регистрации и смс. Поехали!

Теги:
+3
Комментарии0

Привет, Хабр! Новая пятница — новые знания для начинающий специалистов! Сегодня у нас небольшая подборка инструкций по работе с командами в Linux. Пригодится будущим и начинающим системным администраторам. Как всегда, все материалы доступны бесплатно и без регистрации. Поехали!

И просто напоминание, что в Академии Selectel есть курс по системному администрированию с нуля. Он тоже бесплатный, но там все же придется зарегистрироваться, так что на ваше усмотрение.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Юрьев день для ИТ-бюджета: скидка 40% на ОС «МСВСфера», «Инферит ИТМен» и FinOps-платформу «Клаудмастер»

«Инферит» дарит ИТ-сообществу настоящий «Юрьев день» — ограниченную по времени акцию со скидкой 40% на ключевые продукты своего программного портфеля. С 26 ноября по 30 декабря 2025 года новые клиенты могут не только приобрести лицензии со значительной выгодой, но и зафиксировать цену на них.

В акции участвуют следующие направления «Инферит»:

ОС «МСВСфера»: Российская операционная система на основе RHEL для серверов и рабочих мест. Включена в реестр ПО, имеет сертификат ФСТЭК России и подходит для госсектора и бизнеса.

«Инферит ИТМен»: Система инвентаризации и контроля ИТ-инфраструктуры. Автоматизирует учет оборудования и ПО, помогает контролировать лицензионную чистоту.

«Клаудмастер»: FinOps-платформа для управления и оптимизации облачных расходов. Доступна в формате SaaS и On-premise.

Как принять участие?

Чтобы получить скидку и зафиксировать цену, необходимо до 30 декабря 2025 года оставить заявку на сайтах продуктов:

ОС «МСВСфера»

«Инферит ИТМен»

«Клаудмастер»

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

Теги:
Всего голосов 9: ↑8 и ↓1+7
Комментарии1

Несколько "каверзных", вопросов для собеседования по Linuх, "подсказанных" практикой

Всем привет!

Наверное, мало кто любит проходить, или проводить собеседования, особенно второе, но, если приходится это делать, хочется что бы вопросы на нем были более “жизненными”, нежели “назовите все ключи команды ls” (сам использую 2-3, “в стрессе” вспомню еще 5-7) и, менее теоретическими, нежели “какими ключом шифруем а каким подписываем сообщение” (обычно эти операции скрыты за интерфейсом и сделать ошибку трудно)

Потому, хочу поделиться подходящими задачками, из своей практики:

Вопрос 1. Объясните вывод на экране, что будет, если повторить команду в третий раз, как избежать такого поведения?

# cp -r /etc /etc_copy
# du -hs /etc_copy
5.0M    /etc_copy

# cp -r /etc /etc_copy
# du -hs /etc_copy
10M     /etc_copy

Осознал этот забавный факт при очередной итерации развертывая kubernetes через kubespray 

Вопрос 2. Команде ping необходимы права для открытия raw socket , почему это не мешает ее использовать “обычным” пользователям?

С времен FreeBSD был уверен, что для этого используется setuid бит, но, оказалось, что в Linux не так:

student@debian:~$ ls -l $(which ping)
-rwxr-xr-x 1 root root 90568 Nov 27  2022 /usr/bin/ping

Обнаружил это, разбираясь, почему не работает модуль icmp в prometheus/blackbox_exporter , с тех пор стараюсь не забывать про POSIX capabilities  и cap_net_raw, в частности

Вопрос 3. Объясните, почему повторный запуск команды приводит к сообщению Permission denied?

debian# tcpdump -niany -w file.dmp not port 22
...
4 packets received by filter
0 packets dropped by kernel

debian# tcpdump -niany -w file.dmp not port 22
...
tcpdump: file.dmp: Permission denied

Расследование приведет к знакомству с AppArmor  - реализацией Linux Security Modules 

Вопрос 4. Объясните вывод на экране:

student@server:~$ su
Password:

server:/home/student# shutdown
bash: shutdown: command not found

Несколько раз встречал такую ошибку на занятиях , что позволяло еще раз рассказать про переменные окружения, команду “su -” и, что лучше вместо нее использовать sudo

Наверное, достаточно задачек из моего субъективного опыта, буду рад, интересным примерам из Вашего, в комментариях, Спасибо!

Теги:
Всего голосов 7: ↑6 и ↓1+5
Комментарии1

Вышел релиз программного обеспечения topalias 3.0.0

topalias 3.0.0
topalias 3.0.0

Установка:
pip3 install -U --upgrade topalias
pipx install --force topalias
python3 -m pip install -U --upgrade topalias
python3.10 -m pip install -U --upgrade topalias

Запуск утилиты topalias:
topalias
python3 -m topalias
python3.10 -m topalias
python3 topalias/cli.py

Изменения:
Поддерживается Ubuntu 25.10/Python 3.13, Kubuntu 22.04/Python 3.10, KDE neon Rolling

Просьба проверить на актуальной версии Python 3.15 в KDE neon

Ссылка на дистрибутив KDE neon Rolling: https://distrowatch.com/table.php?distribution=kdeneon

topalias - утилита для генерации коротких алиасов по истории bash/zsh

На GitHub опубликована открытая утилита для генерации коротких алиасов на основании истории работы в bash или zsh. Утилита анализирует файлы ~/.bash_aliases, ~/.bash_history и ~/.zsh_history с историей выполнения команд в терминале Linux, после чего предлагает короткие аббревиатуры (акронимы) для длинных, долго набираемых и сложно запоминаемых, но часто используемых команд. Также поддерживается вывод статистики по истории работы в командной строке.

Если вы работаете в терминале десятки раз в день, алиасы — это мощный инструмент повышения эффективности. Но с ростом количества проектов и конфигураций .bashrc/.zshrc алиасов становится много: часть дублируется, часть устарела, некоторые перекрывают системные команды. topalias решает три задачи:

  • дать метрику использования алиасов (какие используются чаще всего);

  • упростить создание/удаление/пакетное управление алиасами;

  • находить конфликтные или опасные алиасы и предлагать безопасные альтернативы.

В статье — обзор возможностей, примеры использования, внутренняя архитектура и практические рекомендации для интеграции с bash/zsh/fish.

Ключевые возможности

  • Сбор статистики использования алиасов на основе shell-history.

  • Команда top — список наиболее часто используемых алиасов.

  • Интерактивный режим (TUI) для обзора, включения/выключения и редактирования.

  • Поддержка bash, zsh и fish.

  • Экспорт/импорт в виде конфигурационных файлов и git-репозиториев.

  • Поиск конфликтов (алиас затеняет системную команду) и предупреждения.

  • Генератор «умных» алиасов: на основе частых цепочек команд предлагает сокращения.

  • Пакетная миграция между машинами (pack/unpack).

  • Небольшой daemon/cron для частого обновления статистики (опционально).

# клонируем репозиторий

git clone https://github.com/CSRedRat/topalias.git

cd topalias

# установка в виртуальное окружение (рекомендуется)

python -m venv .venv

source .venv/bin/activate

pip install -e .

# инициализация в shell (одна строчка, добавьте в .bashrc/.zshrc)

topalias init --shell auto >> ~/.topalias-shell-rc && source ~/.topalias-shell-rc

Примечание: init генерирует небольшую обёртку для history-hook, чтобы собирать данные об использовании алиасов без заметной нагрузки.

Подписывайтесь на канал в Telegram: https://t.me/ruopsdev

Второй канал на Телеграм: https://t.me/journal_rbc_pro

  • Просмотр самых часто используемых алиасов:

topalias top
topalias top --limit 20 # или с лимитом
  • Найти алиас по фрагменту:

topalias find git
  • Создать алиас:

topalias add ga='git add --all'
  • Удалить алиас:

topalias rm ga
  • Интерактивный режим (TUI):

topalias ui
  • Экспорт текущих алиасов в файл:

topalias export --format bash > ~/.topalias-export.sh

Импорт из файла:

topalias import ~/.topalias-export.sh

Если вы часто выполняете цепочку:

git add . && git commit -m "WIP" && git push

topalias предложит вариант:

topalias suggest
# suggestion: gpush = git add . && git commit -m "WIP" && git push
topalias add gpush='git add . && git commit -m "WIP" && git push'

Проверим, не перекрывает ли алиас системную команду:

topalias check-conflicts
# output:
# - ls -> aliased to "ls --color=auto" (OK)
# - df -> aliased to "du -h" (DANGER: shadows system df)

Сохраняем пакет алиасов и переносим на другой компьютер:

topalias pack --name work-aliases > work-aliases.tar.gz
# на другом хосте
topalias unpack work-aliases.tar.gz
topalias import unpacked/work-aliases.sh
Теги:
Всего голосов 4: ↑2 и ↓20
Комментарии7

Ближайшие события

Самый простой способ сообщить об успешном подключении по SSH

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

Все есть в этом решении:

$ sudo apt install curl

$ sudo nano /etc/pam.d/sshd

оставьте, все, что было в этом файле и добавьте в конец:

session optional pam_exec.so /bin/bash -c (echo${IFS}Subject:ssh-${PAM_USER}@$(hostname)-${PAM_RHOST};/usr/bin/env)|/usr/bin/curl${IFS}smtp://mailhub.yourcorp.ru${IFS}--mail-from${IFS}noc@yourcorp.ru${IFS}--mail-rcpt${IFS}yourlogin@yourcorp.ru${IFS}--upload-file${IFS}-

Да, этого достаточно!

Как оказалось, curl умеет отправлять почту, в сообщении будут присутствовать все подробности, кто, когда, откуда подключился, и, даже, когда отключился. Правда, в этом решении требуется корпоративный почтовый сервер (mailhub.yourcorp.ru в нашем "однострочнике"), готовый принять письмо без аутентификации. Это допустимо, если он же является конечным сервером с ящиком пользователя, или, есть разрешение пересылки писем из корпоративной сети (в этом случае можно использовать любой другой почтовый адрес, вместо yourlogin@yourcorp.ru). Однако, такой сервер не всегда имеется, и решение не годится для персонального использования.

В этом случае, предлагаю Вам вебинар , демонстрирующий решение той же задачи, с отправкой сообщений в Telegram

На этом все, спасибо, буду рад ответить на вопросы!

Теги:
Всего голосов 6: ↑6 и ↓0+6
Комментарии1

🔥 Как это было! Итоги Ansible Security CTF

14 октября мы собрались в уютном Failover Bar (г. Санкт-Петербург) 🏠, чтобы по-настоящему прокачать свои навыки в DevOps и кибербезопасности 🚀

Огромное спасибо всем участникам нашего интенсива "Ansible Security CTF – Защищай и Атакуй!" – вы сделали этот вечер незабываемым! 🙏

Что мы делали:
🛡 Писали Ansible playbooks, чтобы мгновенно закрывать уязвимости
🔎 Активно сканировали, подбирали пароли, искали флаги с помощью nmap, hydra и curl
💬 Общались, обменивались опытом и заводили новые знакомства!

🎉 Поздравляем победителей и напоминаем, что еще месяц в Failover Bar можно потренироваться на кейсах из интенсива! 💡В этом вам поможет бот 🤖 для CTF - https://t.me/DebugProCTF_bot

📆 Не хотите пропустить следующие мероприятия? Подписывайтесь на бота 🤖 DebugSkills - https://t.me/DebugProBot

👀 Ссылка на запись мастер-класса тут - https://vkvideo.ru/playlist/-232485571_2/video-232485571_456239019?linked=1

👀 Все фото в нашем канале - https://t.me/DebugSkills

Теги:
Рейтинг0
Комментарии0

Использую для разных надобностей перешитые TV-боксы, потому что удобные маленькие одноплатники в аккуратных корпусах - а "сделать корпус для своего устройства" - отдельная головная боль, которую в данном случае можно просто избежать.

В частности, неплохая штука - X88-mini, 64-битный 4-ядерный процессор с 4 гигабайтами ОЗУ, для некоторых применений вполне годно.
Чтобы не колдовать каждый раз с подбором образа ОС, и методами его помещения туда - слепил что-то вроде дистрибутива.

В основе - Debian bookworm, в минимальной конфигурации, дополнительно установлены только Midnight и Vim.
Загрузочный образ - примерно 1.5 гигабайта, можно записать на любую подходящую SD-карту, воткнуть в слот и загрузиться.

Работает только по сети, по ssh, терминал подключать не нужно, да и не заработает.
IP получит по DHCP, останется залогиниться и можно настраивать почти под что угодно.
Графический интерфейс тоже можно запустить, в отличии от текстовой консоли - но GPU там так себе, это больше для серверных задач подходит: веб, бекенд, автоматика.

И еще одно ограничение - не удалось подобрать нормально работающее ядро, кроме "родного", это ограничивает использование софта, требующего модулей ядра.
Если кто подскажет хороший вариант - будет неплохо.

Образ закинул на Гитхаб, в релизах: https://github.com/JBFW/X88-mini

Теги:
Всего голосов 7: ↑7 и ↓0+8
Комментарии33

Друзья, у меня крутая новость! 🔥

📍 Проведу живую встреча по теме:
Ansible Security CTF — Защищай и Атакуй!

📅 Когда: 14 октября
🕖 Время: 19:00 
📍 Где: «Failover Bar» (Санкт‑Петербург, 2-я Советская, 18)

🎯 Что будет:
⚔️ Практический мастер‑класс по автоматизации безопасности
🐳 Развертываем уязвимую инфраструктуру в Docker
🛡 Пишем Ansible playbook для защиты
🏆 CTF‑соревнование — ищем флаги и закрываем уязвимости!

⏰ Формат: 2 часа интенсивной практики

💻 Что взять с собой: ноутбук и желание ломать/защищать системы

🚀 Программа:
✅ 5 реальных сервисов с уязвимостями
✅ Практика с nmap, hydra, curl
✅ Написание продвинутых Ansible playbooks
✅ Система очков и подсказок
✅ Живое общение и нетворкинг

👨‍💻 Ведущий я: Андрей Чуян
DevOps-инженер, автор канала «IT‑волна»

Места ограничены! Запись на мероприятие

Добавляйте нашего бота чтобы ничего не пропустить! 🤖

Теги:
Всего голосов 5: ↑3 и ↓2+2
Комментарии0

РОСА Хром для интерактивных панелей: отечественная ОС для классов и переговорных

НТЦ ИТ РОСА представила редакцию операционной системы РОСА Хром, адаптированную для интерактивных панелей и сенсорных киосков. Цель — дать образовательным учреждениям и корпоративным командам стабильную, удобную и полностью российскую платформу для совместной работы на большом экране.

ОС уверенно работает на массовых платформах Intel/AMD и на отечественных Байкал-М. Вариант для Байкал-М поддерживает внешние видеокарты, HDMI и аналоговый звук; система корректно запускается на платах российских производителей.

Мы переработали взаимодействие с интерфейсом под большой экран и управление пальцами:

  • увеличенные элементы (кнопки, заголовки, меню) для точных касаний;

  • встроенная экранная клавиатура, запоминающая позицию;

  • жесты: двумя пальцами — «правый клик», свайп тремя пальцами вниз — быстрое закрытие окна;

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

Это упрощает групповые упражнения на уроках, брейнштормы и планёрки.

В состав редакции входят:

  • OpenBoard (с доработками МОС) — электронная доска;

  • Krita — графический редактор;

  • Chromium, Firefox (c аппаратным декодированием на AMD) и лёгкий Falkon — три браузера для разных задач и платформ;

  • Kamoso и Audacity — работа с камерой и микрофоном;

  • утилита «Моргалка» — напоминание о перерывах по требованиям СанПиН;

  • ярлык на webcast.airdroid.com — быстрое включение трансляции экран

Под капотом

  • Файловая система Btrfs с подтомами root и home позволяет делать моментальные снимки перед обновлениями и откатываться без потери данных и переустановки (через графическую утилиту).

  • Работа в графической среде X11 — это гарантирует корректное поведение экранной клавиатуры и сенсора; весь необходимый функционал стабильно доступен уже сейчас.

Кому пригодится

  • школам и вузам — для занятий, лабораторных и совместной работы;

  • госучреждениям — для совещаний, обучения и стендов самообслуживания;

  • компаниям — для переговорных, демонстраций, интерактивных киосков.

Примеры работы панели на видео по ссылке раз и ссылке два.

Теги:
Всего голосов 2: ↑2 и ↓0+2
Комментарии0

Linux Mint 22 - KiCad-5 с GUI и графическим ускорением на карте AMD в Docker-контейтере.

При перезде с Минт-20 на Минт-22 мне захотелось сохранить возможность полноценной работы с проектами выполнеными в KiCad-5, без конвертации их в формат KiCad-9 на который я плавно мигрирую при перезде на Минт-22. Специфика в том, что KiCad-5, в том числе в виде AppImage на Минт-22 запускаться категорически не хочет.

Из возможных вариантов выбрал для себя запуск KiCad-5 в Docker-контейтере, с пробросом графики через X11. За основу взял эту реализацию. Добавил к ней проброс графического ускорения(без него GUI будет подтормаживать) своей карты AMD, русификацию, и Firefox, для плагина InteractiveHtmlBom. В итоге получился вот такой dockerfile:

FROM linuxmintd/mint20-amd64

ENV LANG=ru_RU.UTF-8

RUN apt-get update && \
    apt-get upgrade -y && \
    apt-get install -y nano sudo keyboard-configuration software-properties-common x11-apps xdg-utils \
    locales language-pack-ru-base language-pack-ru xed xed-dbg firefox firefox-locale-ru && \
    update-locale LANG=ru_RU.UTF-8

RUN add-apt-repository --yes ppa:kicad/kicad-5.1-releases && \
    apt-get update && \
    apt-get install --no-install-recommends -y kicad kicad-locale-ru kicad-doc-ru

# Укажите здесь используемые на вашем хост-компьютере
# имя пользователя, идентификатор пользователя и идентификатор группы.
ENV USER_NAME=vasily
ENV UID=1000
ENV GID=1000

ENV HOME=/home/${USER_NAME}
ENV XDG_RUNTIME_DIR=/tmp/runtime-${UID}


RUN mkdir -p ${HOME} && \
    echo "${USER_NAME}:x:${UID}:${GID}:USER_NAME,,,:${HOME}:/bin/bash" >> /etc/passwd && \
    echo "${USER_NAME}:x:${UID}:" >> /etc/group && \
    echo "${USER_NAME} ALL=(ALL) NOPASSWD: ALL" > /etc/sudoers.d/${USER_NAME} && \
    chmod 0440 /etc/sudoers.d/${USER_NAME} && \
    chown ${UID}:${GID} -R ${HOME}

USER ${USER_NAME}

# Раскомментируйте программу, которую вы хотите запустить в контейнере.
#ENTRYPOINT ["eeschema"]
ENTRYPOINT ["kicad"]

Обратите внимание, что значения USER_NAME, UID, GID, в строках 17, 18, 19 в dockerfile берутся из вашего аккаунта на хост-машине.

Образ создается как обычно выполненой в открытом в одной директории с dockerfile терминале командой(не забываем пробел и точку в конце команды):

docker build -t kicad5 .

Размер образа получаеться около 800 Мбайт.

Скрипт для старта контейнера на машине с графической картой AMD:

#! /usr/bin/env bash

docker run --rm -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /usr/share/kicad5:/usr/share/kicad -v $HOME:$HOME --device=/dev/dri:/dev/dri kicad5

До первого запуска контейнера:

1). Создаете в Минт-22 директорию /usr/share/kicad5 и копируете туда содержимое /usr/share/kicad из Минт-20 с установленным kicad5

2). Копируете содержимое $HOME/.kicad_plugins из Минт-20 с установленным kicad5 в $HOME/.kicad_plugins в Минт-22

3). Копируете содержимое $HOME/.config/kicad/ из Минт-20 с установленным kicad5 в $HOME/.config/kicad в Минт-22

Теперь можете запускать KiCad-5 с GUI и графическим ускорением на карте AMD в Минт-22 и паралельно установить в Минт-22 KiCad-9.

Чтобы заархивировать созданный образ выполняем в терминале:

docker save -o ./my_bac_kicad5_image.tar kicad5

Чтобы развернуть заархивированый образ на другом машине выполняем в терминале, открытом в одной директории с файлом my_bac_kicad5_image.tar, на нее скопированном:

docker load -i ./my_bac_kicad5_image.tar
Теги:
Рейтинг0
Комментарии0

GPT-5 Pro думала 69 минут, чтобы просто ответить «Нет». Пользователь спросил у ИИ, сможет ли он установить CUDA на Linux Ubuntu. Нейронка задумалась на час с лишним, чтобы ответить: «Нет, не сможешь». Самое печальное — ответ оказался неправильный.

Теги:
Всего голосов 9: ↑8 и ↓1+9
Комментарии12
1
23 ...