ch
Feedback
Bash Days | Linux | DevOps

Bash Days | Linux | DevOps

前往频道在 Telegram

Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru

显示更多

📈 Telegram 频道 Bash Days | Linux | DevOps 的分析概览

频道 Bash Days | Linux | DevOps (@bashdays) 俄语 语言赛道中的 是活跃参与者。目前社区聚集了 23 742 名订阅者,在 技术与应用 类别中位列第 5 571,并在 俄罗斯 地区排名第 27 919

📊 受众指标与增长动态

невідомо 创建以来,项目保持高速增长,吸引了 23 742 名订阅者。

根据 30 七月, 2026 的最新数据,频道保持稳定运转。过去 30 天订阅人数变化为 7,过去 24 小时变化为 0,整体触达仍然可观。

  • 认证状态: 未认证
  • 互动率 (ER): 平均受众互动率为 22.02%。内容发布后 24 小时内通常能获得 12.73% 的反应,占订阅者总量。
  • 帖子覆盖: 每篇帖子平均可获得 5 228 次浏览,首日通常累积 3 023 次浏览。
  • 互动与反馈: 受众积极参与,单帖平均反应数为 22
  • 主题关注点: 内容集中在 bashdays, linux, bash, docker, скрипт 等核心主题上。

📝 描述与内容策略

作者将该频道定位为表达主观观点的平台:
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.r...

凭借高频更新(最新数据采集于 31 七月, 2026),频道始终保持新鲜度与高覆盖。分析显示受众积极互动,使其成为 技术与应用 类别中的关键影响点。

23 741
订阅者
无数据24 小时
+547
+730
帖子存档
Сижу, думаю, а чем бы тебя сегодня порадовать? Техническими темами не хочу, блевать от них уже хочется, вчера 5 постов написал на тему Podman, скоро поделюсь, много интересного наковырял. Лови короче пиздатую игрульку, которую я нашел на днях. Работает в браузере, ничего устанавливать не нужно. Называется — DeepNet Это симулятор хакера в стиле киберпанк. Весь интерфейс это терминал, минимум графики. Сделано ОЧЕНЬ реалистично и атмосферно. Выглядит потрясающе. Основной геймплей примерно такой: - сканируешь сети (поиск целей) - находишь сервисы и уязвимости - подбираешь «эксплойты» под них - получаешь доступ к системе - работаешь с файлами через команды Bash команды - крадёшь данные, чистишь следы, ставишь бэкдоры Это не сюжетная игра, а скорее песочница с системами, где мир реагирует на твои действия и уровень внимания растет к твоим хакерским проделкам. По наполненности: - полностью клавиатурное управление - онлайн-мир, который меняется со временем - дофига консольных команд 100+ - симуляция файловых систем - экономика, продаёшь данные, прокачиваешь железо - firewall-правила, ханипоты, торги между игроками
Внутри игры есть DeepOS, это ретро десктоп, в котором есть окна, темы, мини приложения, редакторы кода. Можно переключаться между GUI и терминалом.
Лучше один раз потрогать самому, чем читать описание. Затягивает с потрохами. Немного похожа на Hacknet, но более прокаченная, более живая. Короче потыкай, рекомендую. 🛠 #games #security #privacy 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

🔥 Хочешь строить карьеру в DevOps или системном администрировании, но не понимаешь, с чего начать? Собрали все бесплатные ак
🔥 Хочешь строить карьеру в DevOps или системном администрировании, но не понимаешь, с чего начать? Собрали все бесплатные активности от Rebrain в одном месте👇 🔹 Бесплатные демо-доступы к практикумам (DevOps, Linux, Kubernetes, Kafka и другие) 🔹 Каждую неделю по 3 бесплатных вебинара на хардовые темы от инженеров из VK, Яндекса, WB, Сбера 🔹 Гайды (включая матрицу компетенций DevOps и Linux 2026) 🔹 Виртуальная стажировка DevOps 👉 Подписывайся на канал и выбирай, с чего начать. Rebrain — это практическое обучение для инженеров: без лишней теории, на реальной инфраструктуре и разбором того, что происходит в работе каждый день. Реклама. ООО «Ребреин». ИНН 7727409582. erid: 2VtzqvkBFLy

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

Repost from Selectel
🗂️ Podman — почти Docker Но есть пара нюансов Podman разрабатывался с упором на безопасность. Из-за этого могут возникнуть н
🗂️ Podman — почти Docker Но есть пара нюансов Podman разрабатывался с упором на безопасность. Из-за этого могут возникнуть неочевидные ошибки при монтировании томов (volumes). Вместе с Романом Шубиным — СТО и автором канала Bash Days — мы заглянули в кроличью нору и разобрали типичные ошибки при работе с Podman в файловой системе. Подробнее про ключи, Named Volume и SELinux читайте по ссылке ➡️ Только переходите к практике? Протестируйте Podman в серверной ОС от Selectel 🏢

Всем привет. Я тут с удивлением обнаружил, что в debian 13 исчезли команды last и lastb которые позволяли смотреть удачные/неудачные попытки ssh/sftp 🔤🔤🔤🔤🔤🔤🔤 А я к ним так привык... journalctl — прекрасен, но лазить по логам — так себе занятие. Решил немного упростить, чтобы вывод был в виде таблички: timestamp ip login Иногда мальчиши-плохиши подсовывают «пустого» пользователя " ", и чтобы число полей было всегда три, я заменяю его на ":", используется в качестве разделителя /etc/passwd, и поэтому такого логина не должно быть.
journalctl --output=short-unix --unit=ssh |
  gawk '{match($0,/.*for( invalid user)? +(.*?) +from (([0-9]{1,3}[.]){3}[0-9]{1,3})/,a)
#^ это одна длинная строка
  if(a[2]==""){a[2]=":"} # заменили "пробельного usera" на ":"
  if(a[3]!="") print $1, a[3],a[2]}'
#Отображение только неудачных попыток
journalctl --output=short-unix --unit=ssh |
  gawk '/error: maximum/{match($0,/.*for( invalid user)? +(.*?) +from (([0-9]{1,3}[.]){3}[0-9]{1,3})/,a)
#^это одна длинная строка
  if(a[2]==""){a[2]=":"} # заменили "пробельного usera" на ":"
  if(a[3]!="") print $1, a[3],a[2]}'
Если нужно ограничить диапазон дат можно использовать ключ --since="@TIMESTAMP" где TIMESTAMP дата вида 1773848322.767923 или 1773848322 или просто --since="-1 day" Если не нравится дата в timestamp замените последнюю строчку на:
if(a[3]!="") print strftime("%Y%m%d_%H%M%S",$1), a[3],a[2]}'
Или какой-нибудь свой формат. Я, вообще не спец по regexp, поэтому, если кто-нибудь поможет ускорить выражение — буду благодарен. Всем кода без багов. 🛠 #bash #linux 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Надоели шаблонные решения на ИТ-соревнованиях? На МТС True Tech Hack 2026 ценят нестандартные подходы. Инженер данных, разраб
Надоели шаблонные решения на ИТ-соревнованиях? На МТС True Tech Hack 2026 ценят нестандартные подходы. Инженер данных, разработчик или системный аналитик — это про тебя? Тогда подключайся: победители разделят 1 500 000 рублей за разработку демоверсии ИИ-продукта. На хакатоне будут три задачи на выбор — каждая с уникальной технической фишкой. Справишься лучше всех — сможешь пройти в финал в Москве и получить приглашение на стажировку. Регистрация до 9 апреля здесь

Ну вот и всё, приплыли тапочки к дивану… TL:DR: Всё хорошо, НЕ расходимся. Ладно, томить не буду. Блокировки это всегда неприятно, но раз ты это читаешь, значит ты уже достаточно подкованный в определенных технических вопросах и умеешь приспосабливаться к реалиям. Это ценно! Могу только пожать тебе руку и снять шляпу. Большинство на панике массово мигрируют в «то самое», но наш с тобой ледокол уверенно пробирается сквозь льдины. Так что, я не планирую никуда лукаться отсюда и буду продолжать свою деятельность именно здесь. Ну а кто всё же поддался и не подстелил соломку, весь контент который я тут пилю для тебя — дублируется в «то самое». Все нужные ссылки есть в подписи к каждому посту. Старые материалы потихоньку перетащу в блог, ничего не потеряется.
Да, Linux Factory продолжает работать, заходи если чё, замажем пати. Если нужен промик со скидкой 1000р на новых вход не стесняйся — пиши сюда.
Как говорится: Кто хочет — ищет возможности, кто не хочет — ищет причины. Всех обнял, хорошего тебе дня и увидимся! 🛠 #рабочиебудни 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Какие инструменты ускоряют запуск продуктов и упрощают разработку ↗️ Узнайте на GoCloud 2026 9 апреля команда Cloud.ru провод
Какие инструменты ускоряют запуск продуктов и упрощают разработку ↗️ Узнайте на GoCloud 2026 9 апреля команда Cloud.ru проводит большую ИТ-конференцию про облака и ИИ. В этот раз отдельный трек посвящен разработке и инструментам, которые снижают нагрузку на команду:
▶️автоматизация в эпоху ИИ ▶️DevOps-инструменты в облаке ▶️эффективные среды для разработки, CI/CD и обучения ▶️DevOps- и SRE-агенты ▶️защита cloud native приложений ▶️и другие доклады
Также будут отдельные треки про ИИ, облачную инфраструктуру и работу с данными. И самое крутое – практические воркшопы: берите ноутбук и решайте прикладные задачи под руководством экспертов Cloud.ru. Где и когда: 9 апреля в Москве и онлайн 👉Не пропустите👈

Как спрятать IP сервера? В древние времена, когда еще на территории РФ работал cloudflare, таких вопросов не возникало. Натыкал мышкой и живешь в малине. Даже на бесплатном тарифе. Но всё это от лукавого, мир изменился, а альтернатив особо и не предложил. Всё что есть на рынке, пиздец дорогое, бесплатно прятать и защищать твой айпишник никто не будет. У меня есть пару достойных вариантов для тебя, бесплатных. Первый, это поднять дохленькую випиэску, объединить всё в одну общую netbird сеть и проксировать трафик с випиэски на твои поделки, хоть в интернетах, хоть на 1000 NATами. Сейчас у меня так и организовано, в интернетах торчит випиэска, на ней тоннель и nginx разруливает уже по доменам, причем трафик завязан в мой домашний периметр на проксмокс. И даже микротик не пищит, что у него порты закрыты. Всё работает из коробки. Второй вариант та же внешняя випиэска, но с поднятым Safeline. Это морда с обвесами, новогодняя ёлка на все случаи жизни. Про неё уже упоминали в гейте, это ничего не меняет.
Оно ставится перед твоими веб-приложением и фильтрует трафик, защищая приложение от самых распространенных атак (SQL injection, XSS, Command injection, Path traversal, File inclusion, Webshell, RCE, боты-хуёты).
Короче говоря заебачий такой WAF. Много крутилок, много перделок. В бесплатной версии хватает с головой (да, есть и платная). Получается ты не только анализируешь трафик, но и прячешь айпишник своих приложений и серверов. Пиздато? Пиздато! Композ бывалый:
version: "3"

services:
  safeline-mgt:
    image: chaitin/safeline-mgt:latest
    container_name: safeline-mgt
    restart: always
    ports:
      - "9443:9443"
    volumes:
      - ./data:/data
    environment:
      - TZ=UTC

  safeline-gateway:
    image: chaitin/safeline-gateway:latest
    container_name: safeline-gateway
    restart: always
    depends_on:
      - safeline-mgt
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./gateway:/gateway
    environment:
      - MGT_HOST=safeline-mgt
Два базовых контейнера: панель управления, API, хранилище правил, reverse proxy. А вообще в офф доке есть одна команда, которая скачает нужный композ, создать вольюмы и всё запустит:
bash <(curl -sSL https://waf.chaitin.com/release/latest/setup.sh)
Да, поделка Китайская, но опять же это ничего не значит. В Китае пиздатые специалисты. Рекомендую потыкать, особенно если ищешь вменяемые и бесплатные альтернативы сдохшему клаудфларе. 🛠 #security #services 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Нашли митап, мимо которого мы не смогли пройти! 27 марта AvitoTech зовёт к себе в гости поговорить про базы данных, масштабир
Нашли митап, мимо которого мы не смогли пройти! 27 марта AvitoTech зовёт к себе в гости поговорить про базы данных, масштабирование, безопасность. Тема — огонь, спикеры — свои ребята, так что скучно не будет. Коротко о программе: — Никита Жига выйдет с чек-листом по защите чувствительных данных на DBaaS. Говорят, там будет не просто теория, а реальные кейсы, как это работает внутри Авито. — Роман Ананьев устроит сравнение FoundationDB и Cassandra 5. Не на слайдах, а вживую — с примерами, кодом и, видимо, неожиданными выводами. — Игорь Конев расскажет про масштабирование S3. Должно быть интересно, особенно тем, кто с объектными хранилищами работает. В общем, если вы в Москве — приходите в офлайн. Если нет — подключайтесь к онлайн-трансляции. Регистрация по ссылке, места там обычно быстро разбирают До встречи.

15 функций Bash, которые стоит добавить в .bashrc Со временем понимаешь, что половину времени в терминале ты пишешь одно и тоже. Пара небольших функций в .bashrc экономит часы. У каждого эти функции обычно индивидуальны, но возможно этот список раскроет тебе глаза на что-то новое. Создать директорию и сразу в неё перейти
mkcd() {
  mkdir -p "$1" && cd "$1"
}
Подняться на несколько уровней вверх
up() {
  local d=""
  for ((i=1;i<=$1;i++)); do
    d+="../"
  done
  cd "$d"
}
Быстро найти файл
ff() {
  find . -type f -iname "*$1*"
}
Найти директорию
fd() {
  find . -type d -iname "*$1*"
}
Найти процесс
psg() {
  ps aux | grep -i "$1" | grep -v grep
}
Посмотреть последние команды
h() {
  history | tail -n "$1"
}
Поиск по истории
hg() {
  history | grep "$1"
}
Узнать размер директории
dirsize() {
  du -sh "$1"
}
Универсальная распаковка архивов
extract() {
  if [ -f "$1" ]; then
    case "$1" in
      *.tar.bz2) tar xjf "$1" ;;
      *.tar.gz) tar xzf "$1" ;;
      *.bz2) bunzip2 "$1" ;;
      *.rar) unrar x "$1" ;;
      *.gz) gunzip "$1" ;;
      *.tar) tar xf "$1" ;;
      *.tbz2) tar xjf "$1" ;;
      *.tgz) tar xzf "$1" ;;
      *.zip) unzip "$1" ;;
      *.7z) 7z x "$1" ;;
      *) echo "unknown archive" ;;
    esac
  fi
}
Быстрый HTTP-сервер из текущей папки
serve() {
  python3 -m http.server "${1:-8000}"
}
Узнать свой внешний IP
myip() {
  curl -s ifconfig.me
}
Узнать IP домена
ipinfo() {
  dig +short "$1"
}
Показать открытые порты
ports() {
  ss -tuln
}
Полная очистка терминала
cls() {
  clear && printf '\e[3J'
}
Безопасный rm
rm() {
  ls -FCsd -- "$@"
  read -p 'Delete? [y/N] ' ans
  if [ "$ans" = "y" ]; then
    command rm -rf -- "$@"
  fi
}
С удалением еще можно сделать аналог корзины, добавив простое копирование в какой-нибудь временный каталог, который автоматически зачищается спустя какое-то время, например в /tmp. The end. Кидай в комменты, какие функции используешь ты, будет полезно. 🛠 #bash 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Как стать DevOps-инженером и какие знания действительно нужны на старте? 25 марта пройдет День открытых дверей онлайн-магистр
Как стать DevOps-инженером и какие знания действительно нужны на старте? 25 марта пройдет День открытых дверей онлайн-магистратуры ИТМО «DevOps-инженер облачных сервисов» в партнёрстве с Яндекс Практикумом.
На встрече обсудим: 🔵 что ждут работодатели от DevOps-инженеров в 2026 году 🔵 какая главная сложность входа в профессию DevOps 🔵 как устроено обучение и вступительные экзамены Расскажем, как проходит обучение, какие навыки получают студенты магистратуры и как совмещать учёбу с работой. А ещё сможете задать вопросы команде программы.
Ждём вас 25 марта в 19:00 мск. → Зарегистрироваться на ДОД

Как кубер и докер дебажить??? Ладно, выдеру кусок из будущего сезона LF, s4e18 пусть побудет публичным, ради тебя ничего не жалко.
Чуть раньше я уже писал подобный пост для докера «основные методы отладки», но там освещены не все моменты.
Зачастую используются «тулбоксы», это такие специальные docker контейнеры, которые содержат в себе все самые необходимые утилиты для этого самого дебага. Такие «тулбоксы» можно делать самостоятельно, а можно воспользоваться готовыми. Один из самых популярных, это netshoot, в него включено свыше 50ти консольных утилит на все случаи жизни. Основной упор сделан на диагностику сетевой хуйни. Например:
kubectl run netshoot --rm -it --image=nicolaka/netshoot
Теперь можно выполнить:
dig service.bashdays.svc.cluster.local  
curl http://service:8080
Или зайти в network namespace pod:
kubectl debug pod/myapp -it --image=nicolaka/netshoot
Короче если какой-то сервис не работает, запускается netshoot делается DNS проверка dig service, проверка TCP nc service 5432, смотрим пакеты tcpdump -i any port 5432 и т.п. Довольная удобная штука, ничего выдумывать не нужно. Аналогично создаются другие «тулбоксы» со своим содержимым и утилитами. У каждого уважающего себя девопс-инженера, должен быть такой image под рукой, рано или поздно он обязательно пригодится и сослужит службу.
Самое важное здесь, разместить этот образ на РФ серверах, чтобы рядышком был и никакие блокировки бы его не касались. Да и тот же `netshoot` желательно к себе утащить в норку.
Чем еще подебажить: - k8s-toolbox - Busybox - dnsutils - Network Multitool А в новых версиях куба активно используют Ephemeral containers, как раз тот самый kubectl debug. Можно внедрить debug container прямо в pod. Кстати «тулбоксы» можно использовать не только в кубере, они отлично ложатся на обычный докер, опять-же сеть потыкать, покурлить и помяукать. Так что если у тебя нет куба, похуй, пригодится и для обычного докера. Ну а теперь давай создадим искусственную проблему и попытаемся её диагностировать с помощью этих самых «тулбоксов». …. На этом всё, изучай! 🛠 #devops #debug #docker #k8s 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Встройте LLM в разработку правильно ↗️ ИИ позволяет генерировать код быстрее. Но его бесконтрольное использование часто приво
Встройте LLM в разработку правильно ↗️ ИИ позволяет генерировать код быстрее. Но его бесконтрольное использование часто приводит к багам, уязвимостям и росту технического долга. Как этого избежать и сделать процесс безопасным — расскажет эксперт Cloud.ru на вебинаре 17 марта. Вы узнаете:
➡️как быстро запустить и контролировать генерацию кода с LLM в VS Code ➡️как выстроить правила, ограничения и стандарты при работе с LLM ➡️как настроить ранний контроль качества и безопасности через SonarQube ➡️как использовать MCP-серверы для качественного кода
Не забудьте зарегистрироваться 🌐

Вчера работало. Сегодня — Legacy. Переехать полноценно на linux я пока не смог, оказалось много завязок на винду, но яндекс.б
Вчера работало. Сегодня — Legacy. Переехать полноценно на linux я пока не смог, оказалось много завязок на винду, но яндекс.браузер был успешно заменен. Сначала мой выбор пал на ARC, но как оказалось разработчики забили на него хуй. Поэтому коллеги из mastodon посоветовали попробовать ZEN. Иии он полностью оправдал ожидания. Тем более оно на движке Firefox и отлично кастуется как визуально, так и функционально. А самое главное, в нем нет встроенных ИИ. Подкупило меня именно наличие WorkSpaces. У меня есть 4 категории вкладок:
1. Все подряд (побегать по сайтам) 2. Self-Hosted (домашние сервера и сервисы) 3. GPT (несколько нейронок) 4. Бухгалтерия (отчетность, диадоки-хуёки всякие)
Раньше я группировал их в «группа вкладок», но теперь навесил workspaces на горячие клавиши «ALT+1, ALT+2…», стало намного удобнее и быстрее переключаться, возникает меньше путаницы. Дополнительно к workspaces можно создавать папки под вкладки, например нашел что-то интересное, закрывать жалко, но и сейчас нет времени разбираться. Перенес вкладку в папку, она там висит и не тревожит моё внимание. Ну там всякий сплит окон типа терминального tmux. Из необычного, все вкладки располагаются слева, сначала непривычно, но потом проникаешься. Настроек хуева гора. Если не хватает, то можно впендюрить обвесы, опять же на их сайте это всё лежит, ну и на гитхабе энтузиасты стряпают регулярно. Что по глюкам? Да пока не наблюдаю, тормозов не ощущается, рутокен работает, нет ощущения, что пересел с лексуса на девятку, дальше уже посмотрим. Присмотрись, возможно зайдет и наконец организуешь свои 100500 открытых вкладок которые жалко закрывать. 🛠 #soft 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Выбирать хардовое обучение вслепую — так себе затея. Качественное обучение требует времени и сил, поэтому перед тем как вписы
Выбирать хардовое обучение вслепую — так себе затея. Качественное обучение требует времени и сил, поэтому перед тем как вписываться, важно заглянуть «под капот». В ИнженеркаТех открыты демо-доступы к флагманским инженерным программам. Вы можете зайти на платформу, оценить технический уровень материалов и получить знания с 1 урока. Выбирайте свое направление, тестируйте и делайте осознанный выбор: 1️⃣ DevOps инженер: интенсив по проектированию и автоматизации инфраструктуры 5 модулей плотной практики. Проходим путь от CI/CD (GitHub Actions) и IaC (Terraform, Terragrunt) до работы с YandexCloud и деплоя в Kubernetes. В финале — настройка мониторинга (Loki, Prometheus) и автомасштабирования (HPA). Каждая тема закрепляется домашкой с ревью. 👉 Забрать демо-доступ к курсу - https://inzhenerka.tech/devops 2️⃣ Разработка модулей ядра Linux (Linux Kernel developer) Глубокое погружение в системное программирование. Разбираем архитектуру ядра Linux, пишем простейшие модули, разрабатываем и регистрируем драйверы для символьных и блочных устройств. Отдельный фокус на управление памятью, работу с / proc и решение проблем конкуренции (семафоры, мьютексы). 👉 Забрать демо-доступ к курсу - https://inzhenerka.tech/linux_drivers 3️⃣ Разработка на C под Linux (Системный разработчик) Фундаментальная база по созданию системных приложений. Работаем с файловой системой, низкоуровневым вводом-выводом, статическими и динамическими библиотеками. Изучаем все виды IPC (очереди сообщений, shared memory, сигналы), учимся работать с сокетами, потоками и писать демонов. 👉 Забрать демо-доступ к курсу – https://inzhenerka.tech/linux_developer_c

Если человеку отрубить ногу, это не значит что он стал пиратом. ㅤ Ай да вкуснятинку я тебе принёс. Пошел хайп на MP3 плееры и
Если человеку отрубить ногу, это не значит что он стал пиратом. Ай да вкуснятинку я тебе принёс. Пошел хайп на MP3 плееры и музыку в первоначальном виде, то есть без цензуры. Кто не знает, с 1 марта снова закрутили гайки и артистов обременили зацензурить все свои произведения. Теперь большинство песенок либо «запикано», либо смысл полностью изменен. Поговорка «Из песни слов не выкинешь» заиграла новыми красками. Ладно, к делу. Soulseek — кросплатформенная софтина для peer-to-peer (P2P) обмена файлами, в первую очередь — музыкой. Она позволяет пользователям напрямую обмениваться файлами между своими компьютерами через пока еще доступный интернет. Помимо музыки, можно найти массу всего интересного, включая софт.
Помню в начале 2000х было нечто подобное, вроде как «осёл» назывался (eDonkey, eMule).
Суть soulseek — расшарить на компе папку и поделиться со всеми, как в старые добрые. Можно ничего не шарить и только потреблять. Что прикольно, музло можно сразу качать дискографиями, а не отдельными песнями. И это музло НЕ будет «зацензурено». Удобно? Да охуенно! Пойду поищу свой старенький digma mp3 плеер, да погружусь в вайб. А какой у тебя был MP3 плеер? Поделись в комментах если еще помнишь. Хорошей тебе рабочей недели. Не болей! 🛠 #soft #services #music 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Всем привет. Здесь я уже останавливался на sftp. Немного заострю внимание на особенностях применения в скриптах. 🔤🔤🔤🔤🔤🔤🔤 Вы все люди взрослые, но на всякий случай напомню, что использовать sftp с паролем категорически противопоказано. И это важно не клиенту. Это важно серверу. Нужно обязательно использовать ключ. Да, сам ключ может быть без пароля, что фактически превращает ключ в тот же самый пароль, в случае хищения, но для сервера так безопасней. Обычно для обработки в скрипте используют heredoc, но есть и другой путь, через конвейер.
echo -e "ls\\ncd /tmp\\nget 123.txt\\nbye"|sftp -i keyfile user@host:/path/to/dir
Здесь \\n - это код перевода строки. Не красиво, но работает. Вот тут есть небольшая тонкость, которую хотелось бы пояснить. Весь пакет команд будет выполнен, вне зависимости от ошибок. Т.е. если был запрошен переход в каталог, которого не оказалось, а потом команда заливки файла - файл будет залит в текущий каталог, и никто об этом не узнает. Для решения проблемы есть специальный ключ -b (batch mode) который позволяет читать sftp-скрипт из файла. Чтобы (как в нашем случае) читать stdin, нужно указать -b- , или совсем конкретно -b "/dev/stdin". При использовании данного ключа, если команда не выполнена, sftp завершается с ошибкой, все дальнейшие команды игнорируются. А эту ситуацию можно обработать стандартными средствами bash. Но и здесь есть исключения. Если команду указать с префиксом "-", то она переходит в разряд опциональных, и в случае ошибки, sftp-скрипт будет продолжен. Например -get 123.txt. Кроме этого префикса есть еще префикс "@", который подавляет печать(вывод) команды при выполнении. Префиксы равнозначны, могут использоваться в любой последовательности. Знания почерпнуты из man, при попытке перевести обмен между 1c с ftp на sftp. Если тема интересна, могу привести рабочий скрипт обмена, и рассказать, почему я от него в итоге отказался.
man sftp
Всем кода без багов. 🛠 #linux #bash 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Отдам котёночка в добрые руки 🙃 Пристрою в хорошую команду DevOps-инженера. Ласковый, к инфраструктуре приучен, в продакшене не гадит. С отличием окончил Linux Factory и имеет все необходимые навыки. Что умеет: — автоматизировать Linux-сервера через Ansible (roles, порядок, идемпотентность — всё как надо) — строить CI/CD в GitLab и деплоить конфигурации без шаманства — Docker, GitLab Runner, Bash/Python для автоматизации — мониторинг Prometheus + Grafana — vulnerability management, базовый pentest и security-мышление Работал с инфраструктурой 35k+ серверов, сокращал подготовку серверов с часов до минут, избавлялся от ручной рутины и наводил порядок в конфигурациях. Из плюсов: — думает про безопасность, а не только «чтобы работало» — автоматизирует всё, что можно автоматизировать — спокойно относится к продакшену Котёночек самостоятельный, аккуратный, любит инфраструктуру и CI/CD. Отдаётся в команду, где есть сервера, пайплайны и желание жить без рукоблудия. Писать сюда: @hydragoozze 🛠 #биржатруда 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog

Вчера в чатике интересный комментарий пролетел:
Если открыть файл в vim, то lsof покажет этот файл открытым. А вот если открыть файл в nano, то lsof не факт, что покажет этот файл открытым. Ну видимо nano не постоянно держит открытым файл.
Давай покопаем глубже и посмотрим что происходит. Расчехляем лабу! В первом терминале запускаем:
echo "secret data" > test.txt
nano test.txt
Во втором запускаем глазища:
sudo strace -e open,openat,write,close -p $(pgrep nano)
Пока пусто. Теперь в первом терминале нажимаем CTRL+O и смотрим выхлоп во втором терминале:
openat(AT_FDCWD, "test.txt", O_WRONLY|O_TRUNC) = 3  
write(3, "secret data\n", 5) = 5  
close(3) = 0
Получается nano запихивает весь файл в RAM и только после манипуляций с ним производит запись на диск, то есть не держит его постоянно открытым. По этой причине lsof ничего и не показывает. Теперь идем в vim и повторяем предыдущие команды:
vim test.txt
Но во втором терминале запускаем:
watch -n 0.01 "lsof | grep test.txt"
И сразу же видим что lsof показывает открытые файлы:
vim 6423 user 5u REG 8,48 12288 11148 /tmp/.test.txt.swp
vim 6423 6424 vim user 5u REG 8,48 12288  11148 /tmp/.test.txt.swp
Но это не сам файл test.txt, это его swap версия, то есть создается еще один файл. Если открыть такой файл, то в нем будет мусор:
0000000 3062 4956 204d 2e39 0031 0000 1000 0000
0000010 bfdc 69a7 b9a1 0000 1917 0000 7375 7265
0000020 0000 0000 0000 0000 0000 0000 0000 0000
Этот файл, vim использует для crash recovery, undo history, file already open, incremental writes и т.п. Получается что vim постоянно держит открытый swap, а не исходный файл. Если выполнить:
lsof -p 6423
То увидим всю подноготную этого процесса включая дескрипторы. Ну и финт ушами. В первом терминале выполняем:
vim test.txt
Во втором:
mv test.txt test.old
И видим что vim грязно выругался: E211: File "test.txt" no longer available. А если все то же самое проделать с nano то он даже не пискнет, потому что файл загружен в память и ему похеру что мы физически снесли файл с диска. Можно снова нажать CTRL+O и он даже предложит нам его сохранить со старым именем. Вот тут уже можно почесать репу, получается nano работает быстрее чем vim? Неа, vim тоже загружает файл в память (buffer ram). А swap файл это всего лишь журнал изменений либо undo-файлы. Swap не заменяет память, он выступает в роле дополнительного инструмента. Схема для vim такая:
disk file → RAM buffer (vim)
                ↓
            swap file (.swp)
Схема для nano попроще:
disk file → RAM buffer
В nano нет ни рекавери, не другой подобной хуйни-муйни. Ну а по скорости, разницы практически нет (если файлы небольшие), файлы читаются один раз, оба редактора работают в памяти, ну а linux page cache делает чтение еще быстрее. Если файлы большие, vim все же предпочтительнее, у него более продвинутый механизм по работе с буферами. Так и живем! 🛠 #debug #strace 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog