ServerAdmin.ru
28.4K subscribers
264 photos
33 videos
12 files
2.59K links
Авторская информация о системном администрировании.

Информация о рекламе: @srv_admin_reklama_bot
Автор: @zeroxzed

Второй канал: @srv_admin_live
Сайт: serveradmin.ru
Download Telegram
​​⚡️Научитесь эффективно работать с NoSQL базами данных!

На онлайн-курсе «NoSQL» от OTUS собраны самые популярные решения: Cassandra, MongoDB, Redis, ClickHouse, Tarantool, Kafka, Neo4j, RabbitMQ.

📚За 5 месяцев обучения вы сможете:
Уверенно работать с любой NoSQL БД, проектировать систему хранения, индексы, профилировать запросы и обеспечивать оптимальную надежность и производительность.

Пройдите успешно вступительный тест и получите гарантированную скидку на курс.

📌ПРОЙТИ ТЕСТ – https://otus.pw/jIwp/
▶️ Я давно подписан на youtube канал про Linux - PLAFON.
https://www.youtube.com/channel/UCf7pLsR7lko69y8ySTpoKxg
Не упоминал про него, потому что он не про системное администрирование, и как-то повода не было. Но вчера посмотрел очередное видео и решил поделиться с вами.

Видео на канале качественные, смотрю с удовольствием. Автор хорошо монтирует и подбирает визуальный ряд. Основная тематика - использование Linux в повседневной жизни. У автора канала хорошая сборка железа и периферии, любопытно наблюдать. Из дистрибутивов он остановился на Fedora, поэтому много роликов посвящены именно ей.

На недавнем видео DaVinci Resolve 17 на Fedora Linux 35 c AMD Radeon 5700XT он рассказывает, как заставил работать видюху на свободном, а не проприетарном драйвере. Приятно выглядит рабочий стол и окружение. А ещё все такое плавное и летает. Я прям позавидовал. У меня всё как-то тормозит на ноуте, потому что он старый. Давно поменять надо, но так и не дошли руки. А теперь хз на что менять с нынешними ценами. Подожду до осени.

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

Все задания cron пишу в системный /etc/crontab. Практически не пользуюсь пользовательскими файлами для этого. И вообще никогда не пользуюсь директориями cron.d, cron.daily, cron.hourly и т.д. Лично мне удобнее, когда все задания в одном месте. Я просто открываю /etc/crontab и сразу всё вижу. Если надо, правлю. Мне не очень понятен смысл кучи cron заданий в разных местах. Синтаксис позволяет описать любые интервалы и задания в одном файле.

Исключения, конечно же есть. Если сервером пользуюсь не только я, то в системный cron стараюсь не лазить, пишу в своём, пользовательском. Речь в заметке идёт о тех серверах, которыми управляю я единолично.

А вы где храните свои задачи cron?

Удобный калькулятор расписания cron
Бесплатный мониторинг задач cron

#linux
​​Необычная и атмосферная игра "про хакеров", где большую часть времени нужно проводить в консоли - hackmud. Игра достаточно известная в своём жанре. Чтобы полноценно играть, надо немного понимать JavaScript, любить консоль, ASCII и чтение логов. Если бы не js, идеальный набор сисадмина. Хотя сейчас знать js полезно всем. Даже мне приходится изучать, так как постобработка значений айтемов в Zabbix именно на JavaScript, так что у меня уже есть отдельная папочка со шпаргалками к различным обработкам.

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

Отзывы:
📌Хакерское проникновение онлайн sim на основе JavaScript, более точно, все сценарии написаны в игре. Виртуальная утопия для бегства от действительности поклонников киберпанка, роман 90-х 80-х взламывает культуру, БРАКОВАННУЮ МОНЕТУ, daylap и это все.

📌Очень реалистичный симулятор хакера. Есть мультиплеер. Может побудить тебя наконец-то изучить JS!! В принципе, во всем разобрался сам. Использовал минимум гайдов для полного погружения.

📌Подводя подобие итога - игра не для всех. Последняя ложка дегтя - играть в нее интересней с друзьями. Дискорд существует, но он полумертв, и полон одиночек. Если у тебя есть друзья которые не умеют программировать, но хотели бы потусить в хакерском движе - им найдется чем занять себя в игре. Например, собирать ссылки на сервера NPC и записывать какая у них стоит защита.

Steam - https://store.steampowered.com/app/469920/hackmud/
Документация - https://github.com/hackmud-unofficial/documentation
Сайт - https://www.hackmud.com/

#игра
Ранее я рассматривал софт для восстановления удалённых файлов в Linux. В комментариях возникали вопросы и обсуждения по поводу механики этого процесса. Сегодня рассмотрим немного теории и частный практический пример из этой области.

Файлы в Linux удаляются с помощью системного вызова unlink. Он удаляет имя из файловой системы. Если это имя было последней ссылкой на файл и больше нет процессов, которые держат этот файл открытым, данный файл удаляется и место, которое он занимает, освобождается для дальнейшего использования. Если имя было последней ссылкой на файл, но какие-либо процессы всё ещё держат этот файл открытым, файл будет оставлен, пока последний файловый дескриптор, указывающий на него, не будет закрыт.

Исходя из этой информации можно легко восстанавливать удалённые файлы, удерживаемые процессом. Выполним простой эксперимент с помощью bash. Создадим тестовый скрипт именем script.sh следующего содержания:

#!/bin/bash
sleep 30000
exit

Устанавливаем бит исполняемости:
# chmod u+x ./script.sh
Запускаем скрипт в фоне и удаляем.
# ./script.sh &
# rm -f ./script.sh

Итак, у нас есть процесс оболочки, который удерживает файл скрипта. Имени уже нету, но есть дескриптор, с которым ассоциирован файл. Нужно получить дескриптор файла. В этом нам поможет команда lsof:
# lsof -c script.sh

В выводе нас интересует PID - идентификатор процесса и FD - дескриптор, ассоциированный со скриптом:
script.sh 17871 root 255r  REG  8,1    30 8400545 /tmp/script.sh (deleted)

Читаем содержимое файла скрипта.
# cat /proc/17871/fd/255

Перенаправляем вывод cat в файл:
# cat /proc/17871/fd/255 > new_script.sh
Получаем наш исходный скрипт, который удалили.

Поднимаем процесс из фона и уничтожаем.
# fg
CTRL+C

Теоретически таким образом можно восстановить удалённые файлы виртуальных машин. Я не раз получал вопросы по этому поводу. Некоторые умудряются по ошибке удалить исходный файл VM, а потом через 2 недели заметить это. При этом машина всё это время успешно работает.

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

#terminal #restore
​​Я неоднократно получал рекомендацию посмотреть на децентрализованный мессенджер Jami, особенно в контексте моих заметок на тему selh-hosted серверов для организации собственного мессенджера для общения. Эти заметки можно почитать по тэгу #chat

Решил познакомиться с Jami и разобраться, что это такое и как работает. Если кратко, то это условный аналог Whatsapp, Telegram и т.д., только в котором не надо регистрироваться и оставлять свои персональные данные. Из особенностей - контакты хранит в общем блокчейне на основе Ethereum, его же использует для аутентификации. Поддерживают всё это хозяйство публичные ноды по аналогии с нодами крипты.

Можно поднять свою ноду, процесс описан в wiki. По дефолту клиент стучится на bootstrap.jami.net:4222, оттуда уже берёт список известных нод и дальше использует какую-то из них, не обязательно центральную. Но при первом запуске подключается именно к jami.net. Теоретически можно настроить в закрытом периметре свою ноду и замкнуть всех своих клиентов на неё. Из описания не понял, можно ли исключить её из общей сети, чтобы она была только твоя, с твоим блокчейном абонентов.

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

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

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

Сайт - https://jami.net/
Исходники - https://git.jami.net/savoirfairelinux/jami-project
Обзор - https://www.youtube.com/watch?v=3MU2Kg7gwF8

#chat
​​Хочу познакомить вас с очередной российской разработкой. На этот раз это будет программа для удалённого управления компьютерами - АССИСТЕНТ. Я скачал и попробовал его, так что опишу своими словами, как он мне пришёлся.

В общем и целом у Ассистента функционал плюс-минус как у всех программ подобного рода - удалённое управление, передача файлов, чат, в том числе голосовой, настройка качества картинки и т.д. Каких-то минусов или принципиальных отличий от того же TeamViewer или AnyDesk я не нашёл. Картинка такая же плавная, сопоставимое качество.

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

Программа работает примерно так же, как и все остальные. Можно на постоянку установить полноценную версию, а можно только запустить дистрибутив под названием "Ассистент «Быстрый старт»", чтобы к вам могли подключиться по ID и паролю, а потом просто закрыть программу и удалить.

Лично мне понравилась верхняя панель управления, где есть кнопки для быстрого запуска удалённого реестра, диспетчера задач, оборудования, терминала или информации о системе. Это удобнее, чем делать то же самое на удалённом компьютере. ❗️Помимо этого есть отдельная кнопка для переключения языка на удалённой машине. Вот за это 5 баллов. Очень удобно и нигде подобного функционала я не видел. Может и есть, но не на виду. Тут сразу заметил и оценил удобство.

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

Лицензируется Ассистент по количеству разрешённых одновременных подключений. Платная версия начинается с 3-х таких подключений и стоит 72000р. Более дорогие лицензии существенно расширяют функционал: возможность вести инвентаризацию оборудования, поднимать свой локальный сервер соединений, полная интеграция с AD и многое другое. Всё описано на сайте.

Впечатления от программы сугубо положительные. Честно говоря, сейчас не понимаю, зачем использовать AnyDesk или TeamViewer. Надо переходить на Ассистент. У него дистрибутив маленький ~20 мб, ставится и запускается быстро. Он мне показался лучше упомянутых программ без каких-то компромиссов. Для персонального использования на текущий момент идеальный вариант, особенно с учётом рисков последних недель с использованием иностранного ПО.

Сайт - https://мойассистент.рф/
Реестр ПО - https://reestr.digital.gov.ru/reestr/304523/

#remote #отечественное
​​Актуальность VPN растёт день ото дня. Сейчас столько всяких событий происходит с защитами, запретами, ограничениями и т.д., что голова кругом идёт. Доходит до того, что мой сайт serveradmin.ru, который хостится в Москве, у кого-то в России открывается только через VPN. Я даже не знаю, как расследовать такие инциденты. Явно есть проблемы у каких-то операторов.

Существует очень удобная и простая в плане установки и настройки панель для управления VPN на базе популярного и современного WireGuard под названием Firezone. Это бесплатный Open Source продукт. С её помощью можно управлять всеми настройками WireGuard через браузер.

Для Firezone подготовлен установщик, который автоматом всё развернёт на вашем сервере, в том числе и WireGuard. Достаточно только запустить готовый bash скрипт. Сейчас разумно предостеречься от подобных методов, так что можно установить всё вручную. Это описано в документации. Сам Firezone собран в rpm или deb пакет. Компоненты web-интерфейса выполняются под непривилегированным пользователем. Поддерживаются все современные Linux дистрибутивы.

Из дополнительных плюшек, помимо управления пользователями, Firezone умеет управлять nftables для ограничения доступа клиентов к каким-то хостам. Все настройки выполняются через веб интерфейс, который построен на базе Admin One Bulma Dashboard.

Проект претендует на нечто большее, чем уровень pet project и пилит коммерческую версию с разными способами аутентификации, а так же интеграцией с SAML и LDAP. Из всех панелей управления WireGuard эта показалась наиболее приятной и проработанной. Остальные можете посмотреть по метке в конце поста.

Сайт - https://www.firez.one/
Исходники - https://github.com/firezone/firezone
Документация - https://docs.firez.one/
Demo - https://demo.firez.one/

#vpn #wireguard
​​FreeScout Help Desk - отличный вариант бесплатной Open Source системы для организации технической поддержки. Первое, что сразу же привлекает - скорость работы, простота и легкость веб интерфейса. Функциональный, лаконичный и ненагруженный веб интерфейс, с которым приятно работать. Причём за внешней простотой скрывается очень хороший для бесплатной версии функционал.

У FreeScout есть всё то же самое, что и у большинства программ подобного рода. А вот некоторые особенности:
100% совместимость с мобильными браузерами
нормальный перевод на русский язык
полная интеграция с почтовыми ящиками, по сути в FreeScout есть встроенный imap клиент
контроль за коллизиями, когда с одной заявкой начинают работать 2 сотрудника
удобный онлайн редактор написания ответов
картинки можно просто перетаскивать в область ответа и просматривать, а не прикладывать как вложение
push уведомления
есть мобильное приложение

Расширить функционал бесплатной версии можно с помощью платных плагинов, цена которых очень демократична: 5-15$ в зависимости от плагина. За 100$ можно собрать хорошую сборку, которая будет в разы дешевле того же Zendesk. Причем эти 100$ нужно заплатить один раз. Все дополнения продаются навечно, а не по подписке. Разумный и перспективный подход к монетизации, как по мне.

Построено всё это на базе Laravel, так что ставится на обычный веб сервер с PHP. Можно быстро запустить и попробовать в докере.

Я уже много делал обзоров на различные HelpDesk системы, современные и не очень, с большим функционалом и очень простым. Были примеры с красивым и современным веб интерфейсом (uvdesk, zammad). Но лично мне интерфейс FreeScout понравился больше всего, хоть он и выглядит просто. Для данного типа систем это скорее плюс.

Demo - https://freescout.net/demo/
Сайт - https://freescout.net/
Исходники - https://github.com/freescout-helpdesk/freescout/
Документация - https://github.com/freescout-helpdesk/freescout/wiki

#helpdesk
​​Познакомился с отечественным сервисом git, условным аналогом github - https://gitflic.ru. Зарегистрировался там и на всякий случай перенёс несколько своих основных личных репозиториев. Я их всегда хранил на gitlab, но последнее время стал регулярно копировать локально, опасаясь блокировки или ещё каких-нибудь диверсий.

Gitflic имеет бесплатный тарифный план, у которого одно ограничение - в приватном репозитории не может быть более 5-ти человек. Для одиночного использования считай что ограничений нет совсем.

Сразу видно, что проект очень молодой и ещё не факт, что взлетит, но пользоваться можно уже сейчас. Функционал небольшой, но лично мне кроме непосредственно git больше ничего не надо. Дизайн простой и лаконичный. Бонусом идёт хороший отклик и быстродействие в браузере. Думаю, это потому что нагрузки нет. Когда работаешь в браузере разница с gitlab огромная. Последний очень тормозной.

Надеюсь проект взлетит и наберёт популярность. Мне осталось придумать какой-нибудь наименее костыльный вариант для синхронизации трёх источников с кучей репозиториев - gitlab, gitflic, локальный ноут. У кого какие идеи, как это лучше организовать? Понятно, что можно просто скриптом забабахать, но может как-то по-другому можно?

#git #бесплатно #отечественное
Поступил интересный вопрос от подписчика, который заинтересовал и меня лично. К тому же самому мне нечего посоветовать по теме.

Хотелось бы услышать обратную связь по вариантам обучения детей (возраст 10-14 лет) в сферах:
1) Основы сетей и сетевого администрирования.
2) Основы установки и настройки Linux (Ubuntu/Debian), командная строка.
3) Введение pyton. Основы программирования.
4) Базы данных. Основы.

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

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

Первое, что приходит на ум, это кружки робототехники, которых сейчас очень много. В принципе, это должен быть нормальный вариант для детей. Игра и обучение одновременно. Правда тут у меня есть сомнения насчёт того, когда всё это начинать. Думаю как раз где-то к 10-ти годам, хотя вижу, что некоторые и в 7 водят. Но мне кажется, в таком возрасте надо делать упор на двигательную активность. Они и так в школе сидят, водить ещё на какие-то занятия, где снова будут сидеть, нельзя.

❗️ps Пожалуйста, не пишите мне частные вопросы по поводу решения каких-то проблем с настройкой и установкой чего-либо. Я рассматриваю только общие дискуссионные вопросы, которые будут интересны широкому кругу лиц. Разбираться в ваших проблемах и логах у меня нет времени и возможности. Каждый день получаю запросы с просьбой решить какую-то проблему. Я не занимаюсь этим.

#вопрос #обучение
​​Расскажу небольшую историю, которая со мной случилась недавно. Решил основательно настроить Firewall на сервере с MSSQL и отключить вообще всё лишнее. Прям по ip перечислил всех, кому можно обращаться к серверу и его службам. И забыл туда добавить хост с Veeam Backup и Replication.

На заданиях стояли уведомления только в случае ошибок во время бэкапа. Где-то течении недели бэкапы не делались. Заметил проблемы я только когда вручную просматривал сервера с бэкапами. Я делаю это с определённой периодичностью.

После того, как я закрыл доступ к MSSQL серверу, служба Veeam просто остановилась. Мониторинга работы этой службы настроено не было. Бэкапы не делались, уведомления не слались. Со стороны казалось, что всё в порядке.

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

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

#backup #veeam
​​Наконец-то случилось то, чего мы так долго ждали. В ответ на всевозможные санкции, правительство РФ разрешило "пиратить" санкционный софт. Законопроект №80712-8 опубликован на государственном сайте:
https://sozd.duma.gov.ru/bill/80712-8

Читаем документ Текст внесенного законопроекта (Комитет Государственной Думы по экономической политике), статья 14, пункт 13:

13) перечень товаров (групп товаров), в отношении которых 
не могут применяться положения Гражданского кодекса Российской Федерации о защите исключительных прав на результаты интеллектуальной деятельности, выраженные в таких товарах, и средства индивидуализации, которыми такие товары маркированы;

Ждём следующий шаг - снятие запретов с торрент трекеров. Чтобы не ущемлять права честных собственников интеллектуальной деятельности, весь санкционный софт планируется перенести на отдельные трекеры. По словам людей, близких к руководству Минцифры, уже отданы распоряжения профильным ведомствам подготовить рабочую группу и нормативную базу для реализации этих планов. Государственному трекеру быть!

В рамках реализации этих планов уже восстановили работу небезызвестного сайта и портала с софтом NoName - https://nnm.club (олды роняют слёзы 😭). В Роскомнадзоре обратились к администраторам сайта и извинились за годы преследования портала, которое вынудило его в итоге закрыть. Но теперь он снова в строю. Даже пользователей восстановили. Нашёл там свою учётку.

Представители организуемых трекеров и портала NoName теперь будут отвечать за лицензирование ОС Windows, пакета Office и других продуктов американских компаний.

#юмор
​​Посмотрел очередное выступление с Asterconf 2021, которое мне показалось интересным и полезным для тех, кто работает с Asterisk:

Автоматизация разворачивания станций на Asterisk с использованием Docker контейнеров, https://www.youtube.com/watch?v=_IF7IzcDmRQ

До этого тоже смотрел все видео с конференции на канале, но показались больше теоретическими и не очень интересным. А тут прям конкретика с примерами, подходами, софтом и т. д. Интересно было послушать. Как-то вообще не видел, чтобы Asterisk запускали в Docker. Это такой софт, который один раз поставил и обновляешь очень не часто, только если прижмёт и надо будет по безопасности закрывать дыры. То есть вопросы с частым деплоем вообще не стоят.

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

Содержание выступления с метками:

00:00 Начало выступления
00:09 Проблемы STANDALONE ASTERISK
01:37 WHAT's DOCKER.IO
02:02 Преимущества DOCKER
02:38 Подготовка образа
02:59 Dockerfile
03:25 Базовый образ и сборка Asterisk
03:45 Сборка дополнительных модулей
03:53 Подготовка финального образа
04:14 Установка Sox, Jboss, Webif
04:21 Supervisor, sngrep, crontab, fail2ban
04:33 Supervisor: A Process Control System
05:02 Конфигурация Supervisor
05:07 Стартовый скрипт
05:23 BUILD & PUBLISH
05:47 Размещение образа в Dockerhub
05:53 Deploy: docker-compose
06:23 Установка и запуск
06:42 Время развертывания - 2 минуты
07:12 Кастомизация образа
07:48 Обновление
08:04 Решение проблем
08:23 Ответы на вопросы

#asterisk #видео
​​Недавно был пост про вовлечение и обучение детей в IT. В комментариях было много полезных рекомендаций, так что решил их все собрать в одном месте.

Начать с электронных конструкторов типа Микроник или Знаток. Последний у меня есть в большой комплектации. Реально интересная штука. Иногда собираем какие-то схемы с детьми, им нравится. Особенно запускать пропеллер и регулировать скорость его вращения. На этом конструкторе очень удобно объяснить, что такое электричество и ток.

Есть так называемые ЛогоМиры на основе языка программирования Лого, который был создан в образовательных целях для обучения детей дошкольного и младшего школьного возраста основным концепциям программирования (рекурсии, расширяемости и пр.). ЛогоМир это программное обеспечение для MacOS.

Существует визуально-блочная событийно-ориентированная среда программирования Scratch, созданная для детей и подростков. Она создана как продолжение идей языка Лого и конструктора Лего. По Scratch есть много книг и обучающих роликов на Youtube. Это больше для детей 12-14+

Можно вовлекать с помощью игр. Причём все предложенные игры были ранее рассмотрены мной на канале. Правда не в контексте обучения детей. Я про них для взрослых рассказывал. Вот список от простого к сложному: Tomorrow Corporation (Human Resource Machine, 7 Billion Humans), игры от Zachtronics (SHENZHEN I/O, SpaceChem, TIS-100), более сложная Screeps.

На портале uchi.ru есть курсы для обучения детей программированию. Вот пример для Python. Стоит совсем не дорого, не как взрослые курсы.

Есть проект https://codecombat.com для обучения детей программированию в игровой форме. Я посмотрел его - там всё на английском, плюс стоит не мало. Не знаю, насколько это может быть актуально для русскоговорящих детей.

На сайте Полякова Константина Юрьевича есть очень много материала различных школьных курсов по обучению детей информатике и программированию.

У Lego есть серия программируемых роботов LEGO Mindstorms. Наборы LEGO Mindstorms комплектуются набором стандартных деталей LEGO (балки, оси, колеса, шестерни, сервомоторы) и набором, состоящим из сенсоров, двигателей и программируемого блока. Для этих роботов даже международные соревнования устраивают.

Настроить свой сервер Minecraft. В 7 лет дал ребенку смартфон и выборочно поставил ему несколько игр, которые выбрал сам. В том числе и Minecraft. Игра его заинтересовала, так что думаю сам буду двигаться в этом направлении. Для начала сделаем локальный сервер и будет играть там вместе.

Есть много кружков робототехники, в том числе с программированием Ардуино. Эффективность сильно зависит от преподавателя и его способностей заинтересовать детей. Такой кружок может стоить дорого, по сравнению с другими.

И не забываем про нестареющую классику - книгу: "А я был в компьютером городе". У меня была такая. Шлёпал по клавиатуре на развороте. Это был мой первый компьютер. Кто знает, может быть эта книга и положила начало моей карьеры.

#обучение #дети
В продолжение к предыдущей заметке, где я восстанавливал удалённый файл, который был открыт процессом. Ещё один практический пример на эту тему. Мы теперь знаем, что в Linux сначала удаляется имя файла. Сам же файл удаляется, только после того, как счётчик ссылок станет равен нулю и будут закрыты все файловые дескрипторы, ассоциированные с файлом. Давайте найдём файлы, количество ссылок которых равны нулю.

# lsof +L1
или так:
# lsof | grep '(deleted)'
Вывод этой команды можно ограничить файлами конкретного раздела:
# lsof -s +L1 -a /dev/sda1

Приведу практический пример по этой теме. Создадим большой файл /tmp/tempfile размером в один гибибайт:
# dd if=/dev/zero of=/tmp/tempfile bs=1M count=1024
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 2.22636 s, 482 MB/s
Находясь в директории /tmp запускаю команду в фоне, которая открывает файл на чтение. Удаляет его и засыпает. Используется оболочка Bash:
# ( : {fd}< ./tempfile && rm -f ./tempfile && sleep 30000 {fd}>&- ) 2> /dev/null &

Если после запуска скрипта посмотреть размер раздела, на котором размещается директория /tmp и сумму всех файлов на этом разделе, то получится разница в этот самый гибибайт. В моём случае это корневой раздел:
# df -h /
Filesystem           Size Used Avail Use% Mounted on
/dev/mapper/debian11--vg-root  19G 2.1G  16G 12% /

# du -xhs /
1.1G /

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

# fg
CTRL+C

На практике я регулярно сталкиваюсь с подобной ситуацией. Чаще всего это касается лог файлов. Кто-то решает удалить распухший лог, но при этом забывает перезапустить сервис. Например некоторые разработчики любят урезать логи docker или nginx с помощью truncate.

В итоге лог вроде как удалён, но файловый дескриптор открыт и служба продолжает писать в него логи. Доходит до того, что всё место на диске занято и непонятно кем. Тут спасёт перезагрузка, или определение с помощью lsof какой файл открыт и какая служба его держит. Перезапускаем и всё становится в порядке с местом.

#terminal
​​25 марта в официальном блоге Zabbix вышла обзорная заметка с примером на тему вебхуков - Webhooks in Zabbix. Это очень функциональная возможность системы мониторинга, которая позволяет практически безгранично настраивать интеграции с другими системами.

Для тех, кто не знает, что такое вебхуки, поясню своими словами. С помощью вебхука можно отправить HTTP запрос с параметрами на какое-то событие. Например, сработал какой-то триггер в Zabbix, а в качестве вебхука к нему прописано действие по отправке POST запроса к https://api.telegram.org. Таким образом вы можете самостоятельно настроить оповещения в Telegram не прибегая вообще ни к каким сторонним скриптам или расширениям.

То есть с помощью webhook вы можете настроить интеграцию с любым продуктом, у которого есть API. Передавайте туда необходимые параметры, создавайте объекты, уведомления и т.д. На основе вебхуков созданы большинство встроенных интеграций с другими системами.

Для создания простых вебхуков не требуется каких-то особенных знаний. Можно использовать встроенные макросы Zabbix для передачи тех или иных значений. Если нужно что-то посложнее с модификацией передаваемой информации, то придётся использовать JavaScript, который поддерживается механизмом вебхуков в Zabbix Server.

Готовые примеры вебхуков для интеграции с различными системами можно посмотреть в официальном репозитории Zabbix на Github. Наиболее частое применение - оповещение с помощью различных мессенджеров и заведение заявок в системах HelpDesk.

#zabbix
​​Я давно принял решение, что следующий купленный ноутбук для работы будет на Linux. С Windows буду потихоньку прощаться по целому ряду причин, которые может быть перечислю как-нибудь отдельным постом. Сегодня хотел рассказать про программу-клиент для подключения к удалённому рабочему столу по различным протоколам Remmina.

Это один из немногих примеров программ, про которые спрашивают пользователи Linux, когда вынуждены использовать Windows: "Какой есть аналог Remmina под виндой?" Обычно под виндой полно всякого софта и подобные вопросы задают в обратную сторону, переползая на Linux.

Лично я знаю два подобных аналога: MobaXterm и Remote Desktop Manager. Но с одной существенной разницей - они коммерческие. Про обе эти программы я писал ранее. Есть ещё одна, но как по мне похуже этих двух - mRemoteNG. Надо будет сделать про неё отдельный пост. Remmina существует только под Linux и умеет примерно всё то же самое, только абсолютно бесплатно и без ограничений, так как это Open Source и распространяется под лицензией GPLv2+.

Как я уже сказал, Remmina работает под Linux и позволяет получить удаленный доступ к Windows, MacOS и Linux с помощью протоколов RDP, SSH, SPICE, VNC, X2Go, HTTP/HTTPS. Программа популярна и есть в стандартных репозиториях всех известных дистрибутивов, либо имеет свой отдельный репозиторий, который можно подключить.

Если есть большое желание использовать Remmina под Windows, то можно запустить её под WSL. Эта возможность упомянута и продемонстрирована отдельной статьёй на официальном сайте.

В свете того, что многим из нас в ближайшее время придётся переходить на "отечественные ОС", которые все на базе Linux, имеет смысл подбирать подходящий софт под это дело. Я не придумал тэг для программ этой категории. Как думаете, какой для них будет актуален? #remote уже занят для всяких энидексов и им подобным.

Сайт - https://remmina.org
Исходники - https://gitlab.com/Remmina/Remmina

#linux #менеджеры_подключений
🚑 Скорая помощь по Zabbix и Elastic Stack

Консультации через Zoom сертифицированными специалистами:

🔥 Оперативная помощь с траблшутингом проблем с Zabbix или Elastic Stack (все штатные компоненты)

🔥 Работы по миграции с версии на версию Zabbix/Elastic Stack

🔥 Разработка шаблонов мониторинга в Zabbix/правил обработки данных в Elastic Stack

🔥 Тюнинг производительности Zabbix/Elastic Stack

🔥 Услуги удаленного администрирования и удаленной поддержки на постоянной основе Zabbix/Elastic Stack

🔥 Семинары-инструктажи по Zabbix/Elastic Stack

Для оперативной связи @galssoftware. Подробнее о наших услугах на gals.software

#реклама
Во вчерашней заметке вскользь упомянул про утилиту truncate. Решил рассказать про неё поподробнее, так как сам иногда использую. С её помощью можно усечь текстовый файл, либо полностью обнулить, не удаляя его. Это удобно, когда нужно очистить лог файл, но не хочется его удалять, создавать заново, выставлять права доступа и перезапускать сервис, который его использовал.

Утилита truncate чаще всего входит в базовый состав системных утилит, которые идут в комплекте с дистрибутивом Linux. Если её нет, то можно установить пакет coreutils, она скорее всего будет там.

Вообще, самый простой способ обнулить файл, это сделать вот так:
# > access.log
Это в оболочке bash. В каких-то других может не сработать и нужно будет какую-то команду типа echo -n или cat /dev/null добавить перед перенаправлением. С truncate очистка файла выглядит так:
# truncate -s 0 access.log

Truncate позволяет не только полностью обнулить файл, но и сохранить какую-то его часть, что актуально для логов. Если у вас образовался огромный лог файл от веб сервера, который вам точно не нужен, но вы хотите что-то поискать в его начале, то просто обрежьте его до нужного размера:
# truncate -s 10M access.log
Конец будет отсечён до нового размера файла в 10 мегабайт. Обращаю внимание, что обрезается хвост файла, а не начало. Это принципиальный момент, так как truncate не читает файл, а просто отсекает лишнее, поэтому работает очень быстро на любых объемах. Мне как-то нужно было удалить именно начало большого файла, оставив конец. С удивлением обнаружил, что это не так просто сделать. Так и не придумал простого и удобного решения. Использовал tail -n и перенаправление в новый файл.

Другой возможностью truncate является создание файлов заданного размера. На практике лично мне это никогда не было нужно и я не знаю, где может пригодиться. Только если в каких-то тестах. Тем не менее с truncate это сделать проще всего. Создаём файл:
# truncate -s 10M file.txt
Получили файл в 10 мегабайт, заполненный нулями.

Также с truncate удобно увеличивать размер файла порциями. Есть какой-то файл, его надо увеличить на 10 мегабайт:
# truncate -s +10M file.txt
Если использовать вместо плюса минус, файл будет уменьшен на 10 мегабайт. Это может быть полезно, когда тестируется какой-то триггер в мониторинге на контроль размера файла. Например, если дамп sql базы слишком маленький, нужно обратить на это внимание.

#terminal #bash
В закладочках нашёл любопытный сервис, который очень полезен линуксоидам - конструктор для консольной команды FIND. Это такая типичная линуксовая утилита, у которой 100500 параметров и возможностей, ключи которой невозможно запомнить раз и навсегда. У меня огромная шпаргалка по find на все случаи жизни, чтобы не приходилось заново вспоминать, как реализовать тот или иной поиск.

Кое-что необычное по find уже публиковал на канале:
- очистка старых файлов
- поиск дубликатов файлов
- утилита fd для упрощения поиска через find

Сервис называется find-command-generator. С его помощью узнал, что find очень просто может находить файлы, которые принадлежат несуществующему пользователю или группе, или обоим одновременно. Бывает нужно такие найти:
# find . -nogroup -nouser 

Сервис пригодится, когда нужно найти что-то с параметрами, типа ограничения по датам изменения или доступа, размеру, правам доступа и т.д. Типичная история, когда надо проверить директорию веб сервера и снять с файлов все права на исполнение:
# find /web/site/www -type f -name "*" -perm u+x -exec chmod 664 {} \; 
Программисты любят ставить 777 без разбора. Постоянно с этим сталкиваюсь. Когда у них что-то работает не так, они первым делом права доступа 777 ставят, а потом дальше разбираются.

#bash #terminal #find