bashdays | Unsorted

Telegram-канал bashdays - Bash Days | Linux | DevOps

22119

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

Subscribe to a channel

Bash Days | Linux | DevOps

В bash есть переменная IFS, отвечающая за разделитель полей при чтении stdin, но нет переменной OFS - для выходного разделителя полей.

🔤🔤🔥🔤🔤🔤🔤

Или есть? Для преобразования можно использовать переменную $* в кавычках.

Генерим CSV (comma separated value)

#!/bin/bash

IFS=",$IFS" # добавили запятую
set 1 2 3 4 "5 6" 7 # установили параметры
echo ' $* ='$*
echo '"$*"='"$*"


Обычно IFS содержит символы пробел, табуляция, перевод строки.

Если использовать "$*" (в кавычках обязательно), то в качестве разделителя используется первый символ IFS.

Будьте внимательны, команда set устанавливает параметры командной строки текущего экземпляра bash ($1...$N изменятся).

tags: #bash #linux

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Отлаживал сегодня багу связанную с правами доступа. В суть произошедшего вникать не будем.

Главное, что багу помогла решить утилита — namei. Устанавливать не нужно, идет в коробке.

Утилита namei — разбивает путь до папки/файла на составляющие и выводит права доступа для каждой из них.


Из этого нихуя не понятно, давай просмотрим на практике.

У меня php работает под юзером bashdays. Но при открытии админки, нихуя не работает.

Проверяю путь до админки:

namei -l /var/www/bashdays/htdocs/wp-admin/index.php

f: /var/www/bashdays/htdocs/wp-admin/index.php
drwxr-xr-x root root /
drwxr-xr-x root root var
drwxr-xr-x bashdays bashdays www
drwxr-xr-x bashdays bashdays bashdays
drwx--x--x bashdays bashdays htdocs
drwx------ root root wp-admin
-rw-r--r-- bashdays bashdays index.php


Хм… и вижу, что с правами каталога wp-admin что-то совсем не так.

Но почему не использовать ls -la?

ls -la  /var/www/bashdays/htdocs/wp-admin/index.php

-rw-r--r-- bashdays bashdays /var/www/bashdays/htdocs/wp-admin/index.php


Вот и ответ.

Ключи для namei:

l — показывает подробный вывод (long listing) для каждого компонента пути.
m — показывает права доступа (в виде числового значения, как ls -l).
o — показывает владельца и группу каждого компонента.
v — детализирует информацию о путях и ошибках.
x — показывает права доступа в виде rwx (читаемо).


Давай сравним

namei

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

ls

- показывает только содержимое текущего каталога
- показывает права только конечного узла
- показывает права доступа в текущем каталоге
- не показывает цепочку ссылок (только сами ссылки)
- меньше подходит для цепочек узлов.

Я namei пользуюсь достаточно редко, но метко. В основном руки заточены на ввод именно ls -la. Тут уж как привык. Возможно namei тебе зайдет.

Изучай.

tags: #utilites #linux

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Привет. Я устал от сложностей написания Bash курса и решил отдохнуть и написать статью.

🔤🔤🔥🔤🔤🔤🔤

Если кто-то не пьет на Новый Год - читайте эту статью. Голова кружится не хуже, чем от алкоголя.


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

Представляю Вашему вниманию тернарный (троичной) оператор.

В мануале он выглядит так:

expr1 ? expr2 : expr3


Работает оператор так: если expr1 истина, то результат expr2, иначе expr3.

Для исследования я написал небольшую тестовую программу

#!/bin/bash
declare -i c=033 #27
declare -i d=044 #36
declare -i k=0 #counter

function wait2sec(){
sleep 2
echo $1
}

SECONDS=0
a=$((1 == 2?$(wait2sec c):$(wait2sec d))) #0
echo $((k++)) sec=$SECONDS a=$a

SECONDS=0
((a=1==2?$(wait2sec c):$(wait2sec d))) #1
echo $((k++)) sec=$SECONDS a=$a

SECONDS=0
a=$((1==2?$(wait2sec c):$(wait2sec d))) #2
echo $((k++)) sec=$SECONDS a=$a

SECONDS=0
[[ 1 == 2 ]] && a=$(wait2sec c) || a=$(wait2sec d) #3
echo $((k++)) sec=$SECONDS a=$a

SECONDS=0
[[ 1==2 ]] && a=$(wait2sec c) || a=$(wait2sec d) #4
echo $((k++)) sec=$SECONDS a=$a

####### result #############
# 0 sec=4 a=36
# 1 sec=4 a=36
# 2 sec=4 a=36
# 3 sec=2 a=d
# 4 sec=2 a=c


Функция wait2sec ждет 2 секунды и печатает первый параметр. Дальше идут пять как бы одинаковых блоков.

1 == 2 - expr1 (false) 
wait2sec c - expr2
wait2sec d - expr3


Анализируем результаты:

1. переменные d и с описаны как целые, но начинаются с 0, поэтому bash интерпретирует их как восьмеричные.

2. Тернарный оператор может использоваться только внутри арифметической подсистемы ((...)), в которой переменные допускается извлекать(получать значение) без знака $, поэтому c и d интерпретируются как переменные.

3. У тернарного оператора допустима даже "упоротая" форма (блок 1)

4. В математической подсистеме при сравнении пробелы вокруг знака сравнения на влияют на результат.

5. В блоке 4 допущена ошибка (нет пробелов вокруг знака сравнения, поэтому 1==2 - интерпретируется не как результат сравнения, а как не пустая строка, поэтому результат (истина) не верный. Такие ошибки очень трудно отлаживать.

6. В отличие от классического, башевского, сравнения при использовании тернарного оператора expr2 и expr3 вычисляются вне зависимости от условия. Об этом говорит удвоенное время выполнения блока.

🔤🔤🔤🔤🔤🔤
🅰️🅰️

Всех приглашаю на БЕСПЛАТНЫЙ курс BASH. 👇

➡️ Записаться: /channel/+0j3ugyfKJH1iYzg6

Начало курса 11 января. До окончания записи 25 дней.

Ссылку на группу для общения по курсу сообщу после начала курса. Заходите и проходите опросы.

tags: #bash #linux

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Изба архитектурных костылей

Вспомнил тут приколюху при создании нового пользователя в Linux. Ща расскажу.

Короче при создании нового юзера, создается папка /home/user и в ней минимальный набор файлов, типа .bashrc, .profile. И все, больше в ней ничего нет.

Про различия .profile/.bashrc и т.п. я писал в этом посте.


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

Например:

/home/user/www/htdocs
/home/user/www/logs
/home/user/www/tmp


Ну тут логично, триггерим какой-нибудь bash скрипт который через mkdir создаст эти папки.

НО так не интересно! 😲

В коробке линукса для этого есть /etc/skel. Эта папка служит шаблоном для домашнего каталога нового пользователя.

Вот это нихуясе? Ага!

Работает это так:

sudo mkdir -p /etc/skel/www/htdocs /etc/skel/www/logs /etc/skel/www/tmp


Создаём необходимый шаблон со структурой папок.

Так-же можешь добавить шаблонные файлы .bashrc и .profile

Теперь создаем нового пользователя:

sudo useradd -m bashdays


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

Ну красота же!

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

sudo useradd -m -k /custom/skel bashdays


И да, все права на папки и файлы автоматически установятся на те что нужно.


Ну и на закуску:

Не обязательно хостить пользователей в папке /home, можно сделать так:

sudo useradd -m -d /var/www/bashdays bashdays


В этом случае домашняя папка юзера будет расположена в /var/www/, а в /etc/passwd будет такое:

bashdays:x:1000:1000::/var/www/bashdays:/bin/sh


Вот так вот и живем. Изучай.

А какие приколюхи знаешь ты? Камон в комменты.

tags: #linux

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Так вот

🔤🔤🔥🔤🔤🔤🔤

Эта музыка будет вечной, если я заменю батарейки


#!/bin/bash
declare -i a=9223372036854775803
for i in {1..10};do
echo $((a++))
done


Нука бармалеи, чо будет?

+ прикол

#!/bin/bash
declare -i a=1
for i in {1..64};do
a=a*2
[[ $i -gt 60 ]] && echo $i,$a
done

Читать полностью…

Bash Days | Linux | DevOps

Набрёл сегодня на мануал по установке ack, а там такое:

curl https://beyondgrep.com/ack-2.28-single-file > ~/bin/ack && chmod 0755 !#:3


ack — инструмент для поиска текста в файлах, который часто используется разработчиками как более удобная и современная альтернатива `grep`. Он написан на Perl и ориентирован на работу с кодом.


В строке, в конце есть непонятности: !#:3

Опять какая-то магия, а магию мы с тобой любим.

Давай разберемся.

В данном случае !#:3 — это конструкция, связанная с историей команд в оболочке Bash/Zsh.

! = Используется для доступа к истории команд.

Например, !! повторит последнюю команду, а !123 выполнит команду с номером 123 в истории.

# = Ссылается на текущую команду, которая в данный момент пишется.

Вместо доступа к уже выполненной команде из истории, мы ссылаемся на текст текущей строки.

:3 = Указывает, что нужно взять третий аргумент в текущей строке.

Соответственно:

:1 — первый аргумент
:2 — второй аргумент
:3 — третий аргумент


Как это работает?

Сначала выполняется команда curl, которая скачает файл ack-2.28-single-file и сохранит его в ~/bin/ack.

После этого, команда chmod изменяет права доступа для файла.

А !#:3 подставляет третий аргумент текущей команды, то есть ~/bin/ack.

И по итогу команда превращается в chmod 0755 ~/bin/ack

 curl http://beyondgrep.com/ack-2.28-single-file > ~/bin/ack && chmod 0755 ~/bin/ack


Вот и вся магия. Упорото? Аще!

А зачем это нужно?

- удобно для автоматизации и избежания дублирования ввода
- снижает вероятность ошибок, если накосячил в путях

Короче эта хреновина делает команду более динамичной и минимизирует рукоблудие.

Штука прикольная, как говорится — век живи, век учись.

🔥 Ну и с пятницей друзья! Еще пару недель и каникулы.

tags: #bash

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Пули закончатся раньше чем ноги

Откапал сегодня в одном коммерческом интерпрайзе такую конструкцию:

while [ $(pgrep process_name)>'0' ]  
do
sleep 5
done


Смотрю я в неё и понять не могу, а нахуя?

Давай разберемся что тут не так.

«[» = это аналог или синоним встроенной команды «test». Если не задавать оператор, то на пустой строке вернется FALSE. Ну и логично что вернется TRUE если срока не пустая.

«while» — ежу понятно, условный цикл. Будем вертеть на хуй, пока команда заданная в условие возвращаешь истину. В нашем случае эта команда «test».

«pgrep» — ищем процесс с именем process_name. Эта штука выводит на стандартный вывод PID процесса. Если процесс не найден, код возврата отличный от нуля и нуль в противном случае.

«$(command)» — Command запускается в подоболочке. Результат выполнения, подставляется в текущую позицию.

«>» — Перенаправляет результат работы команды в файл (в нашем случае файл 0). Существующий файл, перезаписывается. Несуществующий, будет создан.

Понял в чем дело? Нет? Давай дальше…

Вопрос — нахуя здесь «test»? Цикл и так является условным и сам проверяет что вернула команда. Получается избыточность.

Команда test — Предназначена для проверки типа файла и сравнения чисел и строк. Возвращает код возврата 0 (истина) или 1 (ложь) в зависимости от вычисления выражения. Выражения могут быть как унарными, так и бинарными.


Такое обычно херачат, либо по привычке, либо когда нужно быстрое решение, а времени на ресерч нет. Работает да и хрен с ним.

Вся эта конструкция могла бы выглядеть так:

while pgrep process_name &> /dev/null  
do
sleep 5
done


Цикл будет шуршать, пока команда pgrep отрабатывает без ошибок и находит процесс.

Вот такая вот романтика, на хую два бантика… Изучай!

tags: #bash

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Про эстетику и терминал

Записывал я тут какое-то видео и заметил, что меня пиздец бесит такое поведение:

1. Открываю терминал
2. Запускаю к примеру sleep 10
3. Курсор перескакивает на новую строку


Но команда sleep еще не завершилась, а курсор уже выпрыгнул из штанов.

Хочу, чтобы курсор после запуска команды не перескакивал на новую строку, а ждал завершения команды.

Люблю я себе головняк создать на ровном месте. Поехали решать чо!

cursor_killer() {

echo -ne '\e[?25h'
trap 'echo -ne "\e[?25l"; trap DEBUG' DEBUG
}

PROMPT_COMMAND='cursor_killer'


Получилась такая упоротая и непонятная функция.

Что происходит?

Инициализируем переменную PROMPT_COMMAND. Это команда выполняется перед выводом строки приглашения (prompt).

Дальше делаем курсор видимым с помощью echo. А следом скрываем курсор перед выполнением каждой команды с помощью trap.

В trap мы установили обработчик для псевдо-сигнала DEBUG.

➡️ help trap

If a SIGNAL_SPEC is DEBUG, ARG is executed before every simple command.


\e[?25h = включает отображение курсора (h = "show")

\e[?25l = отключает отображение курсора (l = "low visibility" или "hide")

Получилось так:

1. Первая команда делает курсор видимым.
2. Вторая команда установит обработчик на сигнал DEBUG.
3. Обработчик скрывает курсор и сбрасывается обработчик для сигнала DEBUG в дефолт.

Сохраняем эту поделку в cur_killer.sh и запускаем когда нам это нужно. Либо делаем source cur_killer.sh.

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

К примеру будем выводить команду, перед её выполнением:

trap 'echo "RUN: $BASH_COMMAND"' DEBUG


Теперь позапускай sleep, ls или что-то еще, перед выполнением команды, на экран будет выводиться команда. К примеру так:

trap 'echo "RUN: $BASH_COMMAND"' DEBUG

ls

RUN: ls --color=auto -la


Вот такой фигнёй я порой занимаюсь, а не сериальчики смотрю.

Покеда! Вечером еще увидимся, декабрь прям шепчет на контент и интеграции. В январе уж отдохнем.

tags: #bash

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Про процессоры

Привет, знаю что несколько не формат, но давно хотел написать да и в личке довольно много просили, потому полагаю некоторым пригодится.

🔤🔤🔥🔤🔤🔤🔤🔤🔤🔤

Автор поста 👆👆👆 А я лишь утащил в телеграф, получился длинно-пост, сюда не влезло. Лайки и комментарии приветствуются.

👉 Читаем и проникаемся

tags: #hardware

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Сегодня настроение ныть почему-то нет, поэтому научимся открывать файл на нужной строке в разных редакторах.

А нахуя это нужно? Ну ХЗ, я обычно этим не пользуюсь, открываю полностью файл и ищу нужную мне строку. Но это вкусовщина, кто как привык.

Вообще я встречал людей, которые так открывают файлы, когда видят нечто подобное:

Error in file "script.py" on line 42: NameError: name 'variable' is not defined


Хуяк и открыл script.py сразу на 42 строке.

Короче давай посмотрим как это сделать.

Создаем файл для теста:

( printf '%s\n' {A..Z}-$[++I] > /tmp/bashdays.txt )


Получаем такое содержимое:

A-1
B-2
C-3
D-4
E-5
F-6
G-7
H-8
I-9
...


Ну и теперь давай открывать это:

➡️ mcedit

mcedit +7 /tmp/bashdays.txt


➡️ less

less -w +11 /tmp/bashdays.txt


➡️ nano

nano +14 /tmp/bashdays.txt


➡️ vim

vim +4 /tmp/bashdays.txt


Вот такие пироги. А какие еще редакторы ты знаешь в которых можно открыть файл на определенной строке? Камон в комменты!

tags: #linux #tricks #bash

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

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

Я тут как-то пост в стол написал, показываю, выж просили ничего от вас не скрывать, ловите! Такие посты буду помечать тэгом #memories.


❄️ Насчет годовой премии.

Когда только я пришел в компанию и в конце года получил премию (или тринадцатую зарплату) в размере оклада, я конечно прихуел.

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

Так и было. А еще у меня родился ребенок, ну и там плюшек тоже подогнали + 2 недели отпуска + еще каждый год можно на недельку в отгулы сходить за счет компании. Короче этакая компания мечты.

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

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

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

Ну и сейчас кожа помогает не делать хуиту, которую я делать не хочу. Меня можно заставить, но результатом никто доволен не останется.

Прошел еще один год и годовую премию вообще не дали. План снова был перевыполнен. Не, ну чо за херня. Да еще и за дежурства не заплатили (хотя ссали в уши что будет x2). Мотивация работать хорошо, вообще пропала.

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

А если не дадут? Получается я зря поработал неделю? А если дадут? Что будет? Ну деньги будут. И чо? Но не всем? А как все? Они же будут знать, что тебе дали, а им не дали? Они посчитают, что бизнес повел себя не объективно и будут хуёва работать.

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

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

Собака получила кость и рада, в другой раз не получила и насрала на стену.

Хочешь сделать хорошо? Не давай вообще никому премий, а если хочешь дать, дай ее никак не привязывая к какой-то дате.

Вот дали мне премию в апреле, ну заебись, но я точно знаю что в апреле 2025 мне хуй чо дадут. Тут у меня есть прозрачность и понимание. А вот в прозрачности тринадцатой разплаты у меня нет.

Может быть, может не быть, может половина, а может 0.58 процента. ЭТО ЕБАЛА!

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

Хуль тут еще скажешь, с предстоящим вас Новым Годом, господа и дамы!

Чо там у тебя с премией-то?

tags: #рабочиебудни #memories

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Тут меня попросили подробнее рассказать про права 330 на каталог.

🔤🔤🔥🔤🔤🔤🔤

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

Конкретно дело касается права "X". Это то же самое, что "x" но касается только каталогов.

То есть chmod -R +X ./ установит возможность поиска во всех подкаталогах текущего, но не сделает все файлы исполняемыми!

Ну, ладно, я отвлекся. 330.

Тут в чате Alex (генератор идей) правильно назвал права «черной комнатой». Клаcсная аналогия.

Короче, я баню зловредов, которые ломятся ко мне на ssh. Баню в разных филиалах. И филиалы сваливают ежедневные отчеты мне, в головной по sftp.

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

Но и паранойю никто не отменял. А если ломанут один филиал, и как начнут данные отравлять... :-)

В общем принял решение, что все работают под одной учеткой. Поставил права на папку 330 (-wx-wx---).

Эти права разрешают файл открыть, записать, удалить. Только нужно точно указать какой конкретно файл. Потому что список получить нельзя.

Файлы сваливаются с суффиксом, например filXXX_Ohd1Ul.txt Имя файла для каждого филиала всегда одно и то же, префикс - название филиала, суффикс набор букв (защита от перебора).

То есть на сервере в головном от root я вижу все файлы, а филиалы не видят не то что соседние файлы, но даже свой.

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

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

А что там сравнивать... они всегда разные. Блин, опять скатился на больное... В общем, при одной учетке, формально можно считать sftp сервер анонимным, но с кругом пользователей, ограниченным ключами :-).

Применение прав 330 позволяет упростить заливку файлов с обеспечением некоторой секьюрности.

Для освежения памяти очень рекомендую статью chmod в википедии.

tags: #security #linux

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Интересно, но часто получаю вопрос: чем vi отличается от vim?

Если коротко, то все форки vi это стероидные штуки, со своими свистоперделками, обвесами и т.п. А vi давно уже в деприкейтед.

VIM = VI iMproved, то есть — «VI Улучшенный»

Прям готовое погоняло для викинга.


Сейчас в современных дистрибутивах предустановлен именно vim. Даже в CentOS 7 был предустановлен vim вместо vi (без симлинков).

Так что ничего тут такого нет. Отличия — в функциональности.

Банально открой какой-нибудь index.py в vi и потом в vim, сразу увидишь что в vi отсутствует подсветка синтаксиса + в vi если память не изменяет — не было визуального режима.

Но если будешь проверять, убедись что открывается именно vi, потому что в 99999% у тебя отроется vim.

Такие дела. Вечерком залетит пост попизже от Tagd про права.

Хорошей всем рабочий недели!

tags: #linux

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Привет. Такссс ребят, у нас нативочка. Короче Tagd Tagd пилит пиздатый интенсив по Bash’у для самых маленьких.

Собственно изучаем вопрос, на сколько это будет кому интересно.

Интенсив полностью халява, то есть бесплатный! Я сам его в глаза еще не видел, но думаю Tagd заебись сделает.

Ниже щас закину голосовалку. Потратьте, пожалуйста, секунду и клик, это нам очень важно! Заранее спасибо! Вы супер!

👇👇 👇

Читать полностью…

Bash Days | Linux | DevOps

SuperHardio Bros*. Часть 2: Миссия по харденингу zVirt 4.2

Команда SuperHardio расширяет поле зрения на виртуализацию. В очередной серии спецпроекта 12 декабря в 17:00 мск эксперты прокачают одну из наиболее популярных в России платформ виртуализации — zVirt.

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

Регистрируйтесь и присоединяйтесь к вебинару 12 декабря в 17:00!

* SuperHardio Вros — герои-эксперты харденинга

Читать полностью…

Bash Days | Linux | DevOps

Тренинги

🎓 Zabbix Сертифицированный Специалист 7.0

🎓 Zabbix Сертифицированный
Профессионал

🎓 Zabbix Сертифицированный Эксперт 7.0

— ответ на вопрос «как быстро получить самые полные знания по Zabbix 7.0».

Приглашаем на официальные тренинги Zabbix в январе-феврале и марте 2025 года


Официальные тренинги Zabbix — лучшая инвестиция, которую вы можете сделать для себя или своих коллег. По итогам прохождения тренингов вы получаете сертификаты от компании Zabbix.

Мы опросили участников предыдущих потоков и сформулировали основные преимущества от прохождения тренингов:

📖 устранить пробелы. Часто знания Zabbix ограничиваются эпизодическим изучением документации и фрагментарны. Курс поможет систематизировать знания и откроет для вас новые возможности уже знакомой системы мониторинга.

📖 делать своими силами. Участие подрядчиков в проектах внедрения подразумевает предоставление доступа в ваше окружение. Прохождение официальных курсов Zabbix на русском языке позволит вам выполнять работы своими силами.

📖 распространять знания. Сотрудники, получившие сертификат Zabbix, не просто совершенствуют свои собственные технические навыки — они привносят полученные знания в коллектив и делятся ими со своими коллегами.

📖 получить сертификат. Это официальный вендорский курс Zabbix, переведенный на русский язык. После прохождения курса у вас будет возможность сдать экзамен и получить сертификат. Сертификат подтверждает знания и дает дивиденды компании и мотивацию сотрудникам.

📅 Zabbix сертифицированный специалист 7.0 (ZCS 7.0) 27-31 января 2025

📅 Zabbix сертифицированный профессионал 7.0 (ZCP 7.0) 17-19 февраля 2025

📅 Zabbix сертифицированный эксперт 7.0 (ZCE 7.0) 24-28 марта 2025

Подробную информацию вы можете запросить, написав @galssoftware или через почту welcome@gals.software.

Подписывайтесь на наши телеграм-каналы:

🚀 @zabbix_ru — канал о Zabbix и ничего кроме Zabbix

🚀 @usr_bin_linux — канал о лайфхаках по работе с Linux-системами

🚀 @monitorim_it — канал о мониторинге ИТ-систем

Реклама. ООО "ГАЛС СОФТВЭР", ИНН: 5047195298, erid: 2Vtzqwnoh2h

Читать полностью…

Bash Days | Linux | DevOps

Учимся разворачивать отказоустойчивые кластеры по ценам 2024 года 🔥

27 января стартует курс «Kubernetes Мега» от учебного центра Слёрм: повышайте устойчивость, безопасность и производительность своих приложений, не ломая кластеры и не роняя прод.

За 7 недель вы научитесь:
🔵переносить продукт на платформу k8s
разворачивать отказоустойчивые кластеры
🔵ускорять траблшуттинг
🔵повышать отказоустойчивость продукта
🔵разворачивать и обслуживать кластер с автоматической ротацией сертификатов, автодеплоем и правильным хранением секретов

ОБНОВИЛИ ВЕСЬ КУРС в сентябре 2024 ⭐️
- Старт 27 января
- 7 недель обучения
- 78 часов практики
- 7 встреч со спикерами

Стоимость:
▶️до 31 декабря 2024: 90 000 ₽
▶️с 1 января 2025: 110 000 ₽

Забронировать скидку или полностью оплатить обучение — на сайте 👈

Реклама ООО «Слёрм» ИНН 3652901451

Читать полностью…

Bash Days | Linux | DevOps

Идеальное IT-оборудование в 2024 году — миф?

Новые серверы теперь найти в разы сложнее, а вендоры ушли из-за санкций.

Поэтому стоит обратить внимание на ребят из ITTELO, которые поставляют IT-оборудование для ЛитРес, ЦИАН и других компаний и помогают найти его в условиях санкций.

Они уже 10 лет обеспечивают клиентов качественным оборудованием, на которое дают гарантию 5 лет, а их техподдержка надежна как швейцарские часы.

Все проблемы с подбором IT-оборудования решают они 👉 ITTELO.RU

Реклама. ООО «АйТитело.ру». ИНН 6678087320.

Читать полностью…

Bash Days | Linux | DevOps

⁉️Хотите понять, как Kubernetes управляет контейнерами?

🔥Узнайте всё о его ключевых компонентах: Control Plane, Worker Nodes, Pods, Namespaces. На открытом вебинаре мы разберём архитектуру Kubernetes и покажем, как настроить систему для масштабирования и отказоустойчивости.

📗Этот урок — ваш первый шаг к созданию инфраструктурной платформы. После вебинара вы поймёте, как управлять контейнерами, их взаимодействием и хранением данных.

🔗Регистрируйтесь на вебинар 17 декабря в 20:00 мск. Участники получат скидку 🎁 на обучение на курсе «Инфраструктурная платформа на основе Kubernetes»: https://vk.cc/cG3oHu

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576

Читать полностью…

Bash Days | Linux | DevOps

🎄 Моя! 🎄

Ну чо, кто на ёлку богат уже? Кидайте в комменты ёлки и своё пятничное настроение, пиво там, вискарь или чо там у вас.

Читать полностью…

Bash Days | Linux | DevOps

есom.teсh Infrastructure meetup — online

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

🔥 Инфраструктура ecom.teсh: что под капотом мини-рюкзачков Самоката — Дарья Джудис, Enable Team Lead в ecom.tech

🔥 Управляй и властвуй! Управление изменениями как процесс и как инструмент — Антон Егорушков, Директор эксплуатации и ИТ-инфраструктуры в Купере

Доклады ориентированы в первую очередь на DevOps, SRE инженеров и тимлидов, однако будем рады всем, кто интересуется вопросами инфраструктуры, независимо от специализации!

➖➖➖

🗓 17 декабря, 17:00–18:30 мск, Вторник

🌐 ОНЛАЙН

👉 Регистрация https://click.wowblogger.ru/XzmYBNEdOJVGKr3?erid=2VSb5weW3U4

Erid: 2VSb5weW3U4

Читать полностью…

Bash Days | Linux | DevOps

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

🌐 Чтобы бизнес работал стабильно, сотрудники должны без сбоев подключаться к разным корпоративным системам.

▶️ MTC Web Services проводит вебинар, где эксперты расскажут о SD-WAN — облачном решении, которое поможет снизить затраты на организацию сетевой инфраструктуры. В прямом эфире спикеры обсудят, как управлять корпоративными сетями и быстро подключать новые филиалы с помощью сервиса Cloud SD-WAN от MWS.

Дмитрий Шемякин, владелец продукта SD-WAN, MWS и Павел Брагин, руководитель Центра «Вычисление, хранение и кибербезопасность», MWS
обсудят:

🔴Что такое технология SD-WAN

🔴В каких случаях бизнесу выгодно её использовать

🔴Ключевые особенности SD-WAN: экономическая эффективность, гибкость и безопасность

🔴Какие преимущества вашему бизнесу даёт сервис Cloud SD-WAN: персональный подход MWS

🎉 Приходите! И готовьте вопросы, за лучший — будет подарок от команды!

Читать полностью…

Bash Days | Linux | DevOps

❗️💾 Храните данные правильно: освоите репликацию в MySQL!

Надёжная репликация в MySQL — это не просто красивое слово. Это ваш шанс защитить данные, улучшить производительность и быть готовым к любым нагрузкам!

Что ждет вас на открытом уроке:
- пошаговая настройка репликации MySQL с использованием GTID;
- запуск репликации на новых серверах;
- расширение возможностей уже существующих серверов с БД.

Вебинар для системных администраторов Linux, веб-разработчиков и тех, кто хочет разобраться в работе MySQL.

⭐️ Спикер Николай Лавлинский — PhD Economic Sciences, опытный разработчик, автор курсов по администрированию и оптимизации веб-приложений, ведущий каналов «Ускорение сайтов» и «Поддержка сайтов».

16 декабря в 19:00 мск. Урок проводится перед стартом курса «Administrator Linux. Professional». Только участники вебинара получат скидку на обучение.

Для участия зарегистрируйтесь: https://vk.cc/cFSNIH

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru

Читать полностью…

Bash Days | Linux | DevOps

Какие инструменты для разработки выбирает ИТ-сообщество

Решение Platform V Works компании СберТех отмечено национальной наградой в сфере информационных технологий TAdviser IT Prize 2024. Победа присуждена в номинации «Платформа года для повышения продуктивности команд разработки».

Platform V Works позволяет ускорить цикл разработки и повысить производительность команд: быстрее писать код за счет AI-ассистентов, настраивать конвейеры DevOps по шаблонам, готовить синтетические данные и нагрузочные тесты.

В Platform V Works входит 4 набора инструментов:

• Управление проектами, задачами и знаниями.
• Написание кода и контроль его качества.
• Построение DevOps-конвейера.
• Тестирование ПО.

Продукты Platform V Works от СберТеха подходят для задач импортозамещения и могут быть использованы как в средних, так и в крупных компаниях.

Выберите набор или отдельный инструмент — улучшайте процессы и ускоряйте выход отдельных фич или продуктов.

Узнать больше и запросить демонстрацию

Читать полностью…

Bash Days | Linux | DevOps

Создайте мультиоблако со скидкой 50% от VK Cloud

До 20 декабря можно выгодно перейти в VK Cloud. Переходите в отказоустойчивое облако VK Cloud и используйте его как основную платформу для размещения сервисов. Или создайте себе резервную площадку для аварийного восстановления. Миграция по методу Lift-and-Shift будет бесплатной.

Оставляйте заявку на участие в программе «Облачный старт» от VK Cloud.

Бонусы

🔹 Скидка 50% на сервисы VK Cloud в течение трех месяцев. Максимальный размер поддержки для одного нового клиента VK Cloud — 2 000 000 рублей.
🔹 Бесплатная консультация архитектора VK Cloud.

Как стать участником программы
🔹 Подайте заявку до 20 декабря 2024.
🔹 Убедитесь, что ваш бизнес зарегистрирован как ИП или российское юридическое лицо не менее 1 года назад.
🔹 Пройдите короткое интервью для оценки потребностей вашего бизнеса.
🔹 Начните использовать облако VK Cloud по акции до 1 января 2025.

Предложение распространяется на новых клиентов VK Cloud или не использующих платформу на коммерческой основе с 1 января 2024 года по настоящее время.

Читать полностью…

Bash Days | Linux | DevOps

Пишите код быстрее и оставляйте больше времени на творчество вместе с AI-ассистентом разработчика

Устали от рутины? Отдайте ее AI!
Заходите на платформу GitVerse и пишите код вместе с AI-ассистентом GigaCode. Он поддерживает более 35 языков, умеет анализировать контекст, дописывать строки и функции в автоматическом и ручном режимах, а еще — писать код по комментариям и делать рефакторинг с помощью коротких команд. Всего за пару минут AI-помощник может оценить проект и трудозатраты на его создание.

Внутри AI есть функция CodeChat — с ней можно оптимизировать или отрефакторить имеющийся код, сгенерировать тесты и документацию, а также объяснить фрагмент кода. Задавать вопросы можно и по всему открытому файлу, и по конкретному фрагменту — просто выделите его в редакторе и сформулируйте запрос к CodeChat.

Хорошие новости — недавно GigaCode обновился и стал еще лучше справляться с задачами разработки: теперь наиболее вероятные продолжения кода будут генерироваться с учётом контекста всего проекта. Не забудьте обновить плагин GigaCode :)

Зарегистрироваться на GitVerse.

Читать полностью…

Bash Days | Linux | DevOps

Масштабирование Kubernetes: когда триггеры не CPU и память

Что делать, если кластер Kubernetes нужно масштабировать не по утилизации ресурсов, а по внешним событиям? Например, сообщениям из Kafka или задачам CI/CD.

На вебинаре от Cloud․ru расскажут:
- как использовать KEDA (Kubernetes-based Event Driven Autoscaler) для событийного масштабирования;
- какие есть подходы к запуску приложений, завязанных на внешние системы;
- примеры работы с нестандартными триггерами.

📅 Когда: 12 декабря
👥 Для кого: разработчиков, DevOps-инженеров и архитекторов.

👉 Подключайтесь, будет интересно!

Читать полностью…

Bash Days | Linux | DevOps

Храните секреты в открытом виде в Git? Есть альтернатива!

Приглашаем на вебинар «Эволюция Secrets Management», где DevOps Lead Hilbert Team Михаил Кажемский расскажет, как безопасно хранить и управлять секретами в вашей инфраструктуре.

О чем поговорим:
Почему хранить пароли и ключи в Git — плохая идея
Какие есть альтернативы: от простых решений до HashiCorp Vault
Как интегрировать секреты в CI/CD и GitOps-процессы
Как подружить Hashicorp Vault c Kubernetes

Для кого вебинар: DevOps-инженеры уровня Junior и выше, разработчики, архитекторы

Не пропусти! Регистрируйся и задавай вопросы спикеру

Когда? 12 декабря в 12:00

Читать полностью…

Bash Days | Linux | DevOps

Верной дорогой идёте товарищи...

Уровень статьи средне-сложный. Я не буду объяснять, как завести пользователя, как прописать ему оболочку, как настроить аутентификацию по ключам. Информации об этом валом.

Сегодня мы рассмотрим как сделать «тупиковую машину». Под ней я понимаю машину, попасть на которую можно через интернет по ssh, но на самой этой машине интернета нет.

Заинтриговал? Мозг немного взорвался? Короче, делаем ssh-прокси.

⁉️ Для чего это нужно?

Это можно использовать для раздачи доступа сторонним пользователям для управления ресурсами внутри сети, для студентов, работающих на удалёнке. (студенты IT - самые агрессивные пользователи).

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

Поехали!

Понадобится 2 машины: Бастионная (Jump-сервер, ssh-прокси) - машина, которая торчит открытым портом ssh в интернет.

И Тупиковая - машина (возможно виртуалка), с открытым в локалку портом ssh, на которой будет работать пользователь. И у которой нет доступа в инет (закрыт на периметровом маршрутизаторе. Или не прописаны шлюзы.

Основное условие у пользователя не должно быть root, а то сменит IP/MAC, пропишет шлюзы...). (допустим ее локальный ip 10.10.10.10).

С Бастионной машины должен быть доступ к Тупиковой по ssh, внутри локалки.

НА БАСТИОННОЙ МАШИНЕ. (аутентификация по ключам уже настроена, ssh защищена от быстрого перебора)

1. Заводим пользователя, например, Tagd83j6 с паролем >=20 символов (не пригодится)

2. Добавляем публичный ключ Пользователя. (Он обычно с парольной фразой) в ~/.ssh/authorized_keys

3. Генерим ключ без пароля для доступа к Тупиковой машине. (лучше ed25519).

4. Домашней папке Tagd83j6 создаем файл типа shell10.sh (666 root:root)


#!/bin/bash
set -o errexit
set -o nounset
set -o pipefail
ssh $USER@10.10.10.10 2>/dev/null

sudo usermod -s /home/Tagd83j6/shell10.sh Tagd83j6


НА ТУПИКОВОЙ МАШИНЕ (аутентификация по ключам уже настроена)

1. Заводим пользователя Tagd83j6 с паролем >=20 символов (не пригодится)

2. добавляем публичный ключ(с Бастионной машины. п3) в ~/.ssh/authorized_keys

Все. Теперь, если на Бастионной машине от root набрать

su Tagd83j6


Сразу должны попасть на Тупиковую машину.

Собственно все.

Аутентификация пользователя производится на Бастионной машине!!!

При подключении к Бастионной машине нас сразу перебрасывает на Тупиковую. На ней есть локалка, но нет интернета.

Вопросы, критика, плюсики приветствуется.

tags: #networks #linux © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Читать полностью…

Bash Days | Linux | DevOps

Сегодня 1с начала ругаться на нехватку лицензий. Дело не мое, но начали проверять, и увидели подключение с IP, которого нет в нормативных документах.

🔥 Инцидент. Я немного офигел. Что, откуда? Нужно искать, кто тут такой умный.

Начинаем исследование:

на сервере 1c

ss|grep ip - Видно, машина работает с 1с.
ping ip - машина не пингуется.
nmap -Pn ip - все порты < 1000 закрыты.

Ага, скорее всего windows 10 после обновления переключила сеть в "общедоступные".

arp ip - показывает mac

По mac определили, что это ASUS. Но может ноут, может комп или wi-fi роутер вредители воткнули в сеть.

sudo arping -I enp3s4 ip - машина пингуется.

Но как ее найти? Сетка не большая, меньше 100 ip, но не будешь же каждый комп и каждое устройство проверять...

Короче, на серваке 1с:

sudo iptables -I INPUT -s ip -j REJECT


Через 5 минут пользователь звонит, "у меня 1с не работает".

Проверил - точно. Ip не правильно задали. Восстановил, перевел сеть в режим "Частные".

А проблему нехватки лицензий так и не решили. Конец года, вся бухгалтерия пашет. Вот лицензий на всех и не хватает.

Народ, а вы сталкивались с появлением в сети незарегистрированных ip? Как решали проблему?

tags: #networks #рабочиебудни © by Tagd Tagd

🔔 @bashdays➡️ @gitgate

Читать полностью…
Subscribe to a channel