Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
Show more📈 Analytical overview of Telegram channel Bash Days | Linux | DevOps
Channel Bash Days | Linux | DevOps (@bashdays) in the Russian language segment is an active participant. Currently, the community unites 23 742 subscribers, ranking 5 571 in the Technologies & Applications category and 27 919 in the Russia region.
📊 Audience metrics and dynamics
Since its creation on невідомо, the project has demonstrated rapid growth, gathering an audience of 23 742 subscribers.
According to the latest data from 30 July, 2026, the channel demonstrates stable activity. Although there has been a change in the number of participants by 7 over the last 30 days and by 0 over the last 24 hours, overall reach remains high.
- Verification status: Not verified
- Engagement rate (ER): The average audience engagement rate is 22.02%. Within the first 24 hours after publication, content typically collects 12.73% reactions from the total number of subscribers.
- Post reach: On average, each post receives 5 228 views. Within the first day, a publication typically gains 3 023 views.
- Reactions and interaction: The audience actively supports content: the average number of reactions per post is 22.
- Thematic interests: Content is focused on key topics such as bashdays, linux, bash, docker, скрипт.
📝 Description and content policy
The author describes the resource as a platform for expressing subjective opinions:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
Thanks to the high frequency of updates (latest data received on 31 July, 2026), the channel maintains relevance and a high level of publication reach. Analytics show that the audience actively interacts with content, making it an important point of influence in the Technologies & Applications category.
awk.
🔤🔤🔤🔤🔤🔤🔤
Не много осталось админов, которые парсят текстовые логи. Вся молодежь и даже пОдростки перешли на JSON. Ну да, это удобно. Но иногда awk быстрее. Особенно на больших файлах и файлах и простых фильтрах.
ㅤ
Но я сегодня не в настроении устраивать холивар.
При использовании логов очень часто возникает проблема — очень большое количество полей. А awk зачастую использует именно номер поля.
Так вот, чтобы немного упростить задачу я написал маленький скрипт, который разбирает строку и нумерует поля. Это здорово экономит время.
Сам скрипт:
#!/bin/awk -f
BEGIN{printf "INPUT field separator "
getline
FS=$0
printf "INPUT test line\n"
getline
printf "\n\n"
for (i=1;i<=NF;i++)print i, $i
}
Как обычно сохраняем fields.awk и делаем исполняемым:
chmod +x fields.awk
./fields.awk
Как это работает:
1. Сначала вводим разделитель.
2. Затем строчку лога и получаем разбивку по полям.
Ввод разделителя нужен, потому что иногда уже внутри кода приходится использовать оператор split и другой разделитель. Да и логи бывают разных форматов.
Рассмотрим такой пример:
<134>1 2026-04-17T16:51:47+03:00 OPNsense.internal filterlog 18074 - [meta sequenceId="2054702"] 111,,,4b75111111111111111111111111cb1d,eno1,match,block,in,4,0x0,,64,27367,0,DF,6,tcp,60,192.168.2.125,192.168.7.14,60248,22,0,S,1539242113,,65535,,mss;sackOK;TS;nop;wscale
В этом случае, если нужно одновременно вытащить и дату и IP с портами, проще в качестве основного разделителя использовать ",", а потом первое поле:
<134>1 2026-04-17T16:51:47+03:00 OPNsense.internal filterlog 18074 - [meta sequenceId="2054702"] 111
Здесь, если мы разбить по пробелам (split($1,f," ")), то f[2] будет содержать дату. Которую в свою очередь можно путем нехитрых манипуляций превратить в unuxtime, для удобства машинной обработки.
Всем кода без багов.
🛠 #bash #linux
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 BlogЯ пользуюсь первым, как-то более интуитивно понятно правила настраиваются, в отличие от второго. Но тут больше вкусовщина, возможно ты оверхед монстр и спокойно стихи на регулярках перед сном читаешь своему ребенку.СТОП! Яж про другое… Пойдем дальше, на этом сайте я увидел рейтинги настройки серверов и вспомнил, когда я 100 лет назад поднимал инстанс с собственным mastodon сервером, я упарывался в безопасность и прям активно соблюдал эти рейтинги. Потом это всё забылось и сегодня решил проверить свой основной блог и мягко говоря прихуел. Мой социальный рейтинг по SSL был на уровне «D» — да вы батенька не девопс-инженер, вы пидор ебаный! Дела, дела! Надо это исправлять. Чё значит этот рейтинг? Сервис Mozilla Observatory смотрит не на код приложения, а на то, насколько правильно настроен твой сервер и заголовки безопасности.
A / A+ = всё настроено пиздато B / C = терпимо, но ты все равно долбаёб D / F = хуйня, переделать, серьёзные дыры, почти нет защитыКстати опять же пентестеры активно применяют это в своей работе, чтобы быстренько проверить безопасность конфигурации и по возможности найти лазейку к твоему шоколадному бекенду с последующим проникновением без вазелина. Если кратко — это линтер безопасности, а рейтинг всего лишь сводная оценка качества настроек и твоих компетенций. Основные категории проверки: 1. HTTP-заголовки безопасности 2. HTTPS и TLS 3. Cookies 4. Защита от известных атак Хули, давай это исправим, мне пришлось добавить такое в свою конфигурацию, чтобы добить рейтинг в более-менее вменяемую зону и получить заветную букву «B». Чтобы получить «A» мне придется немного перекроить работу с javascript, но пока мне лень. Собственно конфиг:
add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https:; style-src 'self' 'unsafe-inline'; img-src 'self' data: https:; frame-src 'self' https://video.bashdays.ru https://t.me; connect-src 'self' https://api.rss2json.com https://bashdayz.ru;" always;
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
⚪ Это защита от XSS атак и внедрения чужого контента. Я прописал доверенные сайты с которыми работаю. Но узкой дыркой осталось «unsafe-inline», с помощью него я разрешил inline JS, чтобы мои статусы из mastodon корректно передавались. Вот эту штуку и нужно будет допилить, чтобы получить text/plain, браузер мог бы «догадаться» и выполнить. Теперь хуй, ничего не выполнит.
⚪ Контролирует, что отправляется в Referer, хороший баланс приватности и аналитики.
Если подытожить, получаем — грузи ресурсы только отсюда, не доверяй подозрительной хуйне, всегда используй https и не давай сайту быть встроенным куда попало.
На этом собственно и всё, можешь пойти и проверить свои компетенции в настройке.
Поделись в комментах своим социальным рейтингом, хоть позавидуем.
🛠 #security #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blogecho first >first.txt
echo second >second.txt
ln -s first.txt second.txt
# Выведет: ln: cannot create symbolic link from 'first.txt' to 'second.txt': File exists
mount --bind first.txt second.txt
# А так работает.
cat second.txt
#Выведет first.
Наверное можно еще через cgroups замутить, или через eBPF понаделать хуки на системный вызов open, openat, туда же mount overlay...
🛠 #shitcode #bash
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 BlogРазбираем механику DNS Amplification атак и выясняем, почему использование ANY-запросов превращает твой сервер в инструмент для DDoS. Узнай, как работают векторы усиления трафика и как правильно настроить защиту на BIND и Unbound.В DNS есть такая прикольная штука, как ANY запрос, его суть — выдать тебе сразу все DNS записи по нужному домену. ㅤ Запрос вида:
dig chklst.ru ANY
Я встречал много Bash скриптов, которые на этом запросе завязаны, да чё греха таить, вчера буквально обратился товарищ (малваря-аналитик) с запросом — всё пропало, не работает, ааааа!!!
dig chklst.ru ANY
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 21 (Not Supported): (Type ANY Queries not supported here, RFC8482)
;; QUESTION SECTION:
Хотя раньше всё работало из коробки и Bash скрипты вели себя предсказуемо. Но опять же, в зависимости от DNS сервера, результаты могли разница. Тебе могли отдать данные, которые в предыдущем запросе были совсем другими.
Логично. Провайдеры рано или поздно приходят к этому, начинают блокировать подобные запросы. Всё это связано с дидос атаками. Погоды эти ANY запросы не делают, но создают большую проблему и головную боль. Основная проблема — DDoS amplification.
Самый адекватный способ борьбы с этим — отключить всё нахуй и поломать возможный вектор атаки. Короче непредсказуемость ANY запроса это плохая практика. Запрос ANY никогда не был стандартизирован, как «получить всё».
Читать продолжение: https://two.su/dzg0a
🛠 #security #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 Blogrsync:
rsync -ncrv /old1c /1c
-n (--dry-run) — только тестирование
-c (--checksum) — по содержимому
-r (--recursive) — рекурсивно
-v (--verbose) — подробности
Вот только ставить на клиентскую машину rsync ради одного сравнения, так себе идея. Да и если забыть ключик -n, можно убить данные. Решил сделать все костылями:
find /old1c /1c -type f -printf "%f " -exec md5sum {} \; |
awk '{print $2,$1}'|sort |uniq -c|awk '$1%2'
-type f — только файлы
-printf "%f " — печатаем basename
-exec md5sum {} \; — для каждого файла вычисляем md5
|awk '{print $2,$1}' — сначала md5, потом файл (не принципиально, но красивее)
|sort |uniq -c — на первой позиции - число уникальных записей. Без sort uniq не работает.
|awk '$1%2' — печатаем только строки, с нечетным числом записей.
Поскольку сравниваем два предположительно одинаковых каталога, то в идеале, файлы должны быть в четном количестве. Если у файлов c одинаковыми basename разная md5, то их число будет нечетным.
В общем, как я и предполагал, нашлись файлы с разной контрольной суммой. Значит повреждение было на диске. Ну, и после переустановки 1с, проблема ушла.
На самом деле проблема не такая редкая. Дело в дисках. Есть такая характеристика как Неисправимых ошибок чтения/прочитанных бит.
Например, на wd blue 1E-14, на wd gold 1E-15, на SSD Micron 7450 MAX 1e-17. То есть серверный ssd в 1000 раз надежней, чем бюджетный hdd. Просто не всегда эти ошибки одинаково заметны.
Кстати, rsync работает значительно быстрее. Если данных много — используйте его.
Всем работы без багов.
🛠 #debug #devops
—
💬 Bashdays 📲 MAX 🌐 LF 🔵 BlogРекомендую ознакомиться, столько интересного и неочевидного раскопал. Возможно это подтолкнет тебя к переезду с docker в podman.Healthcheck инструментами Podman → https://two.su/3kcvf 🛠 #devops #dev — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
А еще можно скачать нечто подобное с вебархива, там около 2х гигов, глядишь где-то сгодится.🛠 #services #music — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
- Ты вводишь запрос - Startpage отправляет его в Google от своего имени - Убирает всё, что может тебя идентифицировать - Возвращает результат тебеВ итоге гугол «видит» не тебя, а startpage. А капчу за тебя решают бедолаги из стран третьего мира за миску супа и початок кукурузы. Насколько всё приватно? Ну на бумаге одно, по делу другое. Если на тебя ордер выпишут, то эта конторка выдаст все что есть на тебя с потрохами. С другой стороны так делают ВСЕ! Нахуй им заботиться о каком-то чёрте, если их бизнес в разы приоритетнее. Логично? Логично! Но как альтернатива Duckduckgo, работает вполне вменяемо. А если хочешь прям нормальную приватность и владеть самостоятельно всеми данными и запросами, то проще поднять свой подобный поисковик. А как это сделать, я уже писал тут. Такие дела, чё, изучай! 🛠 #services #security #privacy — 💬 Bashdays 📲 MAX 🌐 LF 🔵 Blog
