Bash Days | Linux | DevOps
Авторский блог от действующего девопса Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу. Автор: Роман Шубин Реклама: @maxgrue MAX: https://max.ru/bashdays Курс: @tormozilla_bot Блог: https://bashdays.ru
Mostrar más📈 Análisis del canal de Telegram Bash Days | Linux | DevOps
El canal Bash Days | Linux | DevOps (@bashdays) en el segmento lingüístico de Ruso es un actor destacado. Actualmente la comunidad reúne a 23 810 suscriptores, ocupando la posición 5 710 en la categoría Tecnologías y Aplicaciones y el puesto 28 118 en la región Rusia.
📊 Métricas de audiencia y dinámica
Desde su creación el невідомо, el proyecto ha mostrado un crecimiento acelerado, reuniendo a 23 810 suscriptores.
Según los últimos datos del 15 junio, 2026, el canal mantiene una actividad estable. En los últimos 30 días la variación de miembros fue de -195, y en las últimas 24 horas de -10, conservando un alto alcance.
- Estado de verificación: No verificado
- Tasa de interacción (ER): El promedio de interacción de la audiencia es 23.79%. Durante las primeras 24 horas tras publicar, el contenido suele obtener 11.52% de reacciones respecto al total de suscriptores.
- Alcance de las publicaciones: Cada publicación recibe en promedio 5 664 visualizaciones. En el primer día suele acumular 2 744 visualizaciones.
- Reacciones e interacción: La audiencia responde de forma activa: el promedio de reacciones por publicación es 25.
- Intereses temáticos: El contenido se centra en temas clave como bashdays, linux, bash, docker, скрипт.
📝 Descripción y política de contenido
El autor describe el recurso como un espacio para expresar opiniones subjetivas:
“Авторский блог от действующего девопса
Самобытно про разработку, devops, linux, скрипты, сисадминство, техдирство и за айтишную жизу.
Автор: Роман Шубин
Реклама: @maxgrue
MAX: https://max.ru/bashdays
Курс: @tormozilla_bot
Блог: https://bashdays.r...”
Gracias a la alta frecuencia de actualizaciones (últimos datos recibidos el 16 junio, 2026), el canal mantiene la vigencia y un amplio alcance. La analítica demuestra que la audiencia interactúa activamente con el contenido, lo que lo convierte en un punto de referencia dentro de la categoría Tecnologías y Aplicaciones.
PING всем серверам кластера редиса и не умереть от скуки
ㅤ
for nodeport in $(echo "CLUSTER NODES" | nc redis.example 6900 | awk '$1~/^[0-9a-z].*$/ {sub("@"," "); print $2}'); do IFS=":" read -r node port <<< $nodeport; echo -n "$nodeport: "; echo "PING" | nc $node $port; done
Первым делом мы шлём в известный нам сервер кластера redis команду CLUSTER NODES.
echo "CLUSTER NODES" | nc redis.example 6900
Референс команды cluster nodes.
Пример выхлопа
shell$5256 07c37dfeb235213a872192d90877d0cd55635b91 127.0.0.1:30004@31004,hostname4 slave e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 0 1426238317239 4 connected 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 127.0.0.1:30002@31002,hostname2 master - 0 1426238316232 2 connected 5461-10922 292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 127.0.0.1:30003@31003,hostname3 master - 0 1426238318243 3 connected 10923-16383 6ec23923021cf3ffec47632106199cb7f496ce01 127.0.0.1:30005@31005,hostname5 slave 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 0 1426238316232 5 connected 824fe116063bc5fcf9f4ffd895bc17aee7731ac3 127.0.0.1:30006@31006,hostname6 slave 292f8b365bb7edb5e285caf0b7e6ddc7265d2f4f 0 1426238317741 6 connected e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca 127.0.0.1:30001@31001,hostname1 myself,master - 0 0 1 connected 0-5460Дальше мы парсим выхлоп
awk-шкой, так как нам нужны чисто IP и порт
awk '$1~/^[0-9a-z].*$/ {sub("@"," "); print $2}')
$1~/^[0-9a-z].*$/ - берём строчки, которые начинаются с циферкобуковок
{sub("@"," "); print $2} - режем дополнительно по символу собаки, выводим 2ю колонку. Получаем:
127.0.0.1:30004
127.0.0.1:30002
127.0.0.1:30003
127.0.0.1:30005
127.0.0.1:30006
127.0.0.1:30001
Ура, у нас есть список редисок с портами. Всё это заворачиваем в for:
for nodeport in $(echo "CLUSTER NODES" | nc redis.example 6900 | awk '$1~/^[0-9a-z].*$/ {sub("@"," "); print $2}'); do ...; done
И кайф, осталось порезать по двоеточию в разные переменные хост и порт, и, вооружившись netcat-ом, сделать PING.
Режем строку по двоеточию на 2 переменных
IFS=":" read -r node port <<< $nodeport;
Итого у нас получается следующее:
nodeport=127.0.0.1:30004
node=127.0.0.1
port=30004
Выводим себе для удобства чтения результата хост редиса и порт куда стучимся:
echo -n "$nodeport: "
И netcat-ом шлём команду PING уже на ноду.
echo "PING" | nc $node $port
Получаем на выходе:
127.0.0.1:30004: +PONG
127.0.0.1:30002: +PONG
127.0.0.1:30003: +PONG
127.0.0.1:30005: +PONG
127.0.0.1:30006: +PONG
127.0.0.1:30001: +PONG
🛠 #балансбатл #людипишут
—
✅ @bashdays ✅ @linuxfactory ✅ @blogrsync.
Бэкап базы 1С будем делать штатной программой от 1С. Однозначного мнения нет, чем лучше бэкапить - средствами СУБД или этой программой, есть у каждого варианта свои преимущества и недостатки. В нашем варианте используем именно ПО от 1С.
Чтобы делать это с помощью планировщика, делаем простой .bat для windows сервера, имя файла отражает дату его создания.
set datetemp=%date:~-10%`
"C:\Program Files\1cv8\8.3.24.1819\bin\ibcmd.exe" infobase dump --db-server=localhost --dbms=PostgreSQL --db-name=название_бд --db-user=имя_пользователя_бд --db-pwd=пароль_пользователя_бд --user=имя_пользователя_в_1С --password=пароль_пользователя_1С "C:\путь_для_бэкапа\имя_файла_"%datetemp%".dt"
Бэкапы базы сохраняются локально. Теперь надо их оттуда забрать и бережно перенести на файловое хранилище.
Для этих целей хорошо подойдет rsync. Поднимать сервер rsync не хотелось, поэтому пошел по пути набора команд.
Формат будущей команды выглядит так:
rsync -av ~/bases_1s/bgu ~/backup/
Rsync (ключа а = в архивном режиме, его обычно достаточно для целей бэкапа, ключ v добавит подробностей) скопирует папку bgu из ~/bases_1s и положит их в ~/backup/.
Обращайте внимание на слэши в конце пути - играют роль в вопросе перенести папку целиком или же ее содержимое, без создания одноименной папки в точке назначения.
Все хорошо, но rsync работает, если хотя бы один путь локальный, а у нас два удаленных хоста. Выход есть. Примонтируем папку с бэкапами по SMB.
Строка в /etc/fstab выглядит у меня так:
//192.168.0.2/название_папки_на_сервере_win /home/user/bases_1s cifs credentials=/home/user/.smbcreds,noauto,users,iocharset=utf8,uid=500,gid=500 0 0
В .smbcreds лежит логин с паролем пользователя windows сервера, noauto=не монтировать при запуске.
Далее, возникла засада в виде того, что если доступ есть по ftp, то rsync бессилен, ftp - протокол и rsync тоже протокол и надо выбрать.
В этой ситуации поможет замечательная curlftpfs. Утилита позволяет монтировать удаленные ftp папки в локальную файловую систему.
Установим ее и добавим своего пользователя в группу fuse (чтобы работать без повышения привилегий):
apt-get install curlftpfs
usermod -aG fuse имя_пользователя.
Создаем файлик с кредами, создаем папку куда будем монтировать и подключаемся (все от своего пользователя):
echo 'machine 192.168.0.18
login фтп_юзер
password пароль' > .netrc
Кроме работы rsync есть еще реализация резервного копирования посредством cp. Оставил пока как есть, в планах единообразить и прикрутить отчет о выполнении.
На данном этапе скрипт выглядит примерно так, смотри в первом комментарии к этому посту, одним кадром не влез.Стоит еще пояснить о ключе
--temp-dir=/tmp/rs в команде rsync. Он нужен чтобы обойти ограничение "ftp файловой системы", которая не поддерживает создание временных файлов.
🛠 #балансбатл #людипишут
—
✅ @bashdays ✅ @linuxfactory ✅ @blogЕсли официальный мануал по компиляции писала жопорукая обезьяна, тут уже ничего с этим не поделаешь.Залил в себя пару пиалок до-хун-пао, словил дзен и нашел выход. Пиздуем на сайт и ищем ZED. Ебала жаба гадюку! Всё уже придумано и собрано за нас. Верните мне 4 часа компиляции! Открываем CMD и хуячим:
scoop bucket add extras
scoop install extras/zed
Всё!
Если не установлен scoop, ставим так:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm get.scoop.sh | iex
Что по IDE?
Моё почтение, все нужные мне плагины по девопсовым делам — есть. Даже маркдаун и превью работает. Шикарно!
Из коробки есть подключение к удаленным серверам. То есть подключаешься к своему удаленному серверу разработки и пишешь код. В лучших традициях VSCode.
Чтобы по умолчанию в качестве терминала у тебя не открывался CMD, делаем финт ушами и дружим ZED с WSL.
"terminal": {
"shell": {
"program": "C:\\Windows\\System32\\wsl.exe"
},
"font_family": "Hack Nerd Font Mono",
"font_size": 15,
"line_height": "standard"
}
Теперь открывается ZSH, или что там у тебя установлено в WSL.
Ааа, забыл, в ZED можно подключить ИИ агенты, причем можешь локально поднять дипсик или т.п. и использовать его прям в IDE.Больше добавить пока нечего, всё нравится. Буду тыкать, а там уже посмотрим. 🛠 #windows #ide #dev — ✅ @bashdays ✅ @linuxfactory ✅ @blog
➡️ что такое резервное копирование и аварийное восстановление; ➡️ в чем между ними разница и когда они нужны; ➡️ как использовать облако для непрерывности данных; ➡️ как еще можно защитить вашу информацию.А еще в прямом эфире эксперты проведут демо: настроят резервное копирование и аварийное восстановление в облаке. Зарегистрироваться 👈
curl я заебался.
ㅤ
Тем более хотелось что-то организованное и визуально приятное.
Postman сразу мимо, это гавно сделали настолько перегруженным, что им пользоваться уже нереально, да и под чистым терминалом его не запустишь.
Выбор пал на Posting. Это TUI клиент со всем необходимым функционалом.
Так он и прижился, сейчас если что-то нужно отладить или потестить у меня есть эта замечательная тулза. Не перегружена хуйнёй и дружелюбная. Есть все самое необходимое, даже мышкой можно тыкать. Ну и сессии сохраняет со всеми запросами.
Ставится элементарно:
curl -LsSf https://astral.sh/uv/install.sh | sh
uv tool install --python 3.13 posting
uv — это современный инструмент для Python, который объединяет в себе функционал менеджера пакетов и виртуальных окружений, задумывается как замена pip + venv/virtualenv + pip-tools.Для хакерменов прям мастхев. Забирай в копилку, годнота! 🛠 #linux #utilites — ✅ @bashdays ✅ @linuxfactory ✅ @blog
Дополнительно установлены 10 кодов на два бесплатных месяца обучения в Linux Factory.Поиск кодов это не основное, можно банально встретиться 1x1 и набить друг другу ебальник. Ну или просто почилить, отгрохать себе подземную базу или построить личный дата-центр. Если будут лаги и т.п. пиши сюда @linuxfactorybot, бум разбираться. Я нашел код, что дальше? 1. Делаешь скрин кода и координат XYZ (нажать F3) 2. Скидываешь эту инфу Максу 3. Забираешь приз Что бы не было соблазна схитрить, предприняты меры, все ходы записаны, так что будь честен.
Учти, что за тобой будут охотиться специально обученные боты-вжопуебаки.Как начать? Качаешь клиент отсюда или берешь официальный. Версия сервера
1.21.8 Подключаешься к mc.bashdays.ru и погружаешься в приключения.
Регистрация
/reg <пароль> <пароль>
/log <пароль>
Время работы сервера: c 05:00 МСК до 19:00 МСК
😀😃😄😁😅😂🤣😊
😇🙂🙃😉😌😍🥰😘
😗😙😚😋😛😝😜🤪
🤨🧐🤓😎🤩🥳😏😒
Что дальше?
А дальше посмотрим, если сервак переживет эту неделю и не будет уничтожен письками, то таблички с промокодами будут пополняться каждую неделю. Ну и время работы сервера будет увеличено. А по пятницам можно сходки устраивать, голосовой чатик замутить, пиво, все дела.
На этом пока всё. Хорошей тебе рабочей недели.
🛠 #островсокровищ
—
✅ @bashdays ✅ @linuxfactory ✅ @blogbegin 644 bashdays.txt MT)_1@-"XT++0M=&"+"#1@="ZT+[0N]&,T+K0OB#0L=&#T+30M=&"(#$P,"\P M+C4L(-"]T+#0O]"XT8C0N"#0OM&"T++0M=&"(-"R(-"ZT+[0O-"\T+70O=&" MT+#1@-"XT8_1A2#0NB#0O]"^T8'1@M&#(-"X(-"RT+[0M]"\T+[0MM"]T+X@ IT8$@T8+0OM"QT+[0N2#1@="RT8_0MM"UT8+1@=&/(-"<T+#0NM&!+@H` ` end😀😃😄😁😅😂🤣😊 😇🙂🙃😉😌😍🥰😘 😗😙😚😋😛😝😜🤪 🤨🧐🤓😎🤩🥳😏😒 🛠 #xfiles — ✅ @bashdays ✅ @linuxfactory ✅ @blog
Самое главное в ходе дебага, не выйти на самого себя.Да всё просто. После блокировок появилось много тикетов от клиентов, в которых говорилось - хочу GPT чат ёпта и чтобы блядь как раньше, нажал кнопочку и пошел работать. Да, без GPT уже никто не работает, деградировали все сука в зеленые сопли. Тут даже не «вайб-кодинг», а прям массовая истерия и осмысленный слив корпоративных данных. Нужно проверить договор? Так этож его читать нужно, нахуй надо, заливаем в GPT, а он пусть анализирует риски и неточности. Ну и всё в таком духе. 😀😃😄😁😅😂🤣😊 😇🙂🙃😉😌😍🥰😘 😗😙😚😋😛😝😜🤪 🤨🧐🤓😎🤩🥳😏😒/ Левой дрочу, правой жопу щекочу! Короче спрос есть, тем более я умею настраивать
openconnect да и сам им пользуюсь в личных целях.
Хуль, пошел настраивать на серваки клиентов, настроил, пытаюсь подключиться с локальной машины. ХУЙ ТАМ ПЛАВАЛ! Сервер нотфаунд. Пробую курлы, телнеты, меняю порты — ничего!
Ладно, думаю у клиента сервак с плохим айпишником, пошел настраивать другому клиенту. Такая же история.
Хм… уже закономерность какая-то. Иду к третьему клиенту, переношу полностью образ своего сервера на его сервер. Ну теперь 100% заработает!
Ага, история повторяется… Сервер нотфаунд.
Ну не может же такого быть. У меня с моим сервером все работает, а с клиентскими не работает. Даж не курлит и не телнетит ничего. Однако.
Как говорится:
Лох этот тот, кто пытается понять что вокруг происходит, хотя все кругом уже это понимают.Утро вечера мудренее. Если что-то не получается, нужно это дело отложить и вернуться к нему позже. Так и сделал. На утро вернулся и подумал иначе. А что если проблема — во мне? Нужно проверить эту гипотезу. Беру ноут для созвонов, ставлю
openconnect клиента и без проблем подключаюсь ко всем 3м серверам которые вчера настраивал.
Хм… иду за комп на котором все вчера настраивал — сервер нотфаунд.
Да ёбтавоюмать! Это как в nginx с редиректами, ебешься 5 часов, а потом понимаешь что дело не в nginx, а в твоём браузере. Оно закешировало запросы и похуй ему, редиректит по умолчанию, даже если меняешь конфиг nginx.
Что было?
😀😃😄😁😅😂🤣😊
😇🙂🙃😉😌😍🥰😘
😗😙😚😋😛😝😜🤪
🤨🧐🤓😎🤩🥳😏😒
Антивирус блядь! Какой не скажу, а то опять придут люди из 90х и начнут в меня письками тыкать и угрожать. Мыж с вами достаточно медийные, обсирать никого нельзя.
В антивирусе есть галка — Блокировать нерекомендуемые сайты.
Методом подбора эта галка была определена, она и блочила все мои попытки подключения. Это даже не фаервол, фаервол я отключал, когда настраивал openconnect. Всегда фаер отключаю когда работы подобного плана делаю.
Это чисто хуйня, которая блядь неочевидно скрыта в другом разделе. И до сих пор непонятно, почему айпишники моих серверов это рекомендуемые, а айпишники клиентов это не рекомендуемые.
ㅤ
Так и живем. Один лишний пробел, одна не поставленная запятая, забытый таб, вполне может уничтожить твой день.
Но опять же опыт. Теперь при настройке подобного гавна, буду иметь это ввиду. Но это не точно. Я люблю по 5 раз наступать на грабли. Говорят на ошибках учатся, но это не про меня.
Век живи, век учись!
🛠 #рабочиебудни
—
✅ @bashdays ✅ @linuxfactory ✅ @blogsystemd-cat. Она отправляет логи прямиком в journald.
🔤🔤🔥🔤 🔤🔤🔤🔤🔤🔤
Например:
echo "Successful backup" | systemd-cat -t my-backup
Просмотреть логи можно по тегу:
journalctl -t my-backup
Можно указать приоритет сообщения текстом или числом, как в syslog:
echo "Шеф, усё пропало!" | systemd-cat -t my-backup -p 1
А можно и префиксом в начале сообщения (число в угловых скобках):
echo "<1>Шеф, усё пропало!" | systemd-cat -t my-backup
В случаях отправки через pipe в journald попадет только то, что вывелось в stdout.
Для логирования stderr можно либо отправить stderr в stdout, либо запускать команду как аргумент systemd-cat:
ls non-exists 2>&1 | systemd-cat -t my-log
systemd-cat -t my-log ls non-exists
Во втором случае можно задать отдельный приоритет для сообщений из stderr: --stderr-priority.
😀😃😄😁😅😂🤣
😇🙂🙃😉😌😍🥰
😗😙😚😋😛😝😜
🤨🧐🤓😎🤩🥳😏
🛠 #балансбатл
—
✅ @bashdays ✅ @linuxfactory ✅ @blogdef respond_to_telnet_commands(sock, data):
"""Отвечает на IAC-команды, отправляя WONT на все DO и DONT на все WILL."""
i = 0
while i < len(data):
if data[i] == 0xff and i + 2 < len(data): # IAC
command, option = data[i + 1], data[i + 2]
if command == 0xfd: # DO
sock.send(bytes([0xff, 0xfc, option])) # WONT
elif command == 0xfb: # WILL
sock.send(bytes([0xff, 0xfe, option])) # DONT
i += 3
else:
i += 1
respond_to_telnet_commands - функция понадобится только если в ответе от сервера получаем такое b"\xff\xfb%\xff\xfb&\xff\xfd\x18\xff\xfd \xff\xfd#\xff\xfd'\xff\xfd$".
Если же в конце этой кишки будет login то всё ок можно сразу отправлять логин sock.send(b'login\r\n')
Подключение через ipython:
import socket
sock = socket.socket()
sock.connect(('192.168.1.100', 5000))
data = sock.recv(1024)
print(data)
respond_to_telnet_commands(sock, data)
data = sock.recv(1024)
print(data)
respond_to_telnet_commands(sock, data)
data = sock.recv(1024)
print(data)
sock.send(b'<login>\r\n')
data = sock.recv(1024)
print(data)
sock.send(b'<pass>\r\n')
data = sock.recv(1024)
print(data)
sock.send(b'<command>\r\n')
data = sock.recv(1024)
print(data.decode())
Подключение к telnet без аутентификации
ㅤ
В /etc/inetd.conf добавить:
5000 stream tcp nowait root /usr/local/bin/telnet_noauth
telnet_noauth - 5000 можно заменить на любой порт или написать просто telnet будет использоваться для подключения порт 23
<service_name>: имя службы (например, telnet), соответствует записи в /etc/services.
<socket_type>: обычно stream (для TCP) или dgram (для UDP).
<protocol>: протокол, например, tcp или udp.
<wait/nowait>: wait (ждёт завершения процесса) или nowait (многопоточный).
<user>: пользователь, от имени которого запускается служба (например, root).
<server_program>: путь к исполняемому файлу службы (например, /usr/sbin/in.telnetd).
<server_args>: аргументы для программы (обычно имя программы).
Добавить скрипт telnet_noauth с содержимым:
#!/bin/bash
/bin/bash -i
Дать права на исполнения:
chmod +x /usr/local/bin/**telnet_noauth**
Подключение через ipython:
import socket
sock = socket.socket()
sock.connect(('192.168.1.100', 5000))
data = sock.recv(1024)
print(data)
sock.send(b'<command>\r\n')
data = sock.recv(1024)
print(data.decode())
Такие дела!
🛠 #балансбатл
—
✅ @bashdays ✅ @linuxfactory ✅ @blog🤖 AI&ML — узнаете, как устроены RAG-системы и мультиагентные системы и как начать их использовать. ☁️ Cloud Infrastructure — нюансы сетевой архитектуры, проектирование IaaS‑кластеров на K8s, возможности балансировщиков и производительность SDN. 📈 Data&Analytics — про современные подходы к Big Data: тренды, интеграцию с AI-агентами и инструменты для хранения, обработки и анализа. ⚙️ Dev Platform Services — заглянем «под капот» решений, чтобы облегчить повседневную рутину разработки и настройки сервисов.А еще вас ждут демо, воркшопы, карьерные консультации, кастомный мерч и яркое afterparty. Не пропустите🖱
¡Ya disponible! Investigación de Telegram 2025 — los principales insights del año 
