BashMaster
8.23K subscribers
682 photos
14 videos
1 file
705 links
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов.

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
Курс “Компьютерные сети” стартует 2 декабря!

Успейте записаться на курс по старой цене до конца ноября - 39.990 руб. 49.990 руб.

Содержание курса:
- Изучение топологии сетей, видов сетевого оборудования
- Маршрутизация данных и управление доступом к среде
- Протокол IP, транспортный и прикладной уровни
- Система имен DNS, безопасность в сетях и противодействие атакам

Кому полезен курс?
- Junior IT-специалистам, системным администраторам, Web-разработчикам, сетевым инженерам, которые хотят досконально освоить архитектуру сетей

Вы получите:
- Сертификат/удостоверение о повышении квалификации
- Сопровождение и поддержку Академии Кодебай
- Возможности трудоустройства/стажировки

@Codeby_Academy
Узнайте подробнее о курсе здесь
⚙️ MOULTI

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

▶️Moulti изменяет способ отображения вывода ваших shell-скриптов (bash, zsh и т.д.) в терминале. Он позволяет назначать многочисленные строки, выдаваемые вашими скриптами, "шагами", то есть визуальными, сворачиваемыми блоками, имеющими свой заголовок и цвет.

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Как с помощью простой шаблонизации выстроить гибкий CI/CD-пайплайн с самого начала?

Расскажем на открытом уроке как эффективно использовать шаблоны:
1. Для минимизации времени на создание
2. Чтобы избежать переделки в будущем 

Практика: Создание адаптируемых пайплайнов с использованием шаблонов

👉 Регистрация и подробности о курсе CI/CD на основе GitLab
https://otus.pw/kAvIa/?erid=LjN8KVcVM

#реклама
О рекламодателе
⚙️ Bash-скрипт, содержащий обрабатываемые данные

✔️Давайте на примере простого скрипта рассмотрим, как написать скрипт, хранящий данные внутри самого себя. Это будет список задач, хранимый в том же самом скрипте, который добавляет задачи, удаляет их и выводит список задач в его текущем состоянии. Итоговый скрипт будет за вычетом самого списка задач занимать менее 750 байт. Его удобно использовать, например, с Dropbox’ом, Яндекс.Диском или Copy для синхронизации задач между несколькими компьютерами

➡️ Самое первое, что нужно сделать — это определить команды, используемые в скрипте и написать обработку параметров командной строки.
case $1 in
add|del|show)
ACTION=$1
shift
TASK=$@
${ACTION}_task
;;
*)
show_help
;;
esac

▶️У нас есть три команды: add, del, show. Самое первое, что сделаем — запомним действие, которое указано в командной строке, в переменную ACTION. Затем сдвинем позиционные параметры скрипта, чтобы удалить из этого списка само действие. Переменной TASK приравняем содержимое командной строки, которое в итоге получится. После этого запустим функцию с именем ДЕЙСТВИЕ_task, которая выполняет соответствующее действие. Если же в качестве первого параметра указано что-то иное или ничего не указано, будет вызвана функция show_help, отображающая краткую помощь.
show_help(){
cat << EOF

Description: script which keeps tasks list (or any other list) inside itself
Usage: $0 [add|show|del]'

Commands:
add [task description]
del [task description part (will delete any tasks that include entered string)]
show

EOF
exit
}

▶️Теперь создадим функции, необходимые для выполнения указанных действий. Начнем с простого, с вывода списка задач.
show_task(){
echo "----------TASK LIST--------"
cat << TASKLISTEND
TASKLISTEND
}

▶️Эта функция просто выводит всё, что находится между строкой cat << TASKLISTEND и строкой TASKLISTEND
Именно между этими строками мы и будем хранить список задач. Теперь осталось написать еще две функции: добавление и удаление задачи. Добавлять задачу будем так:
get_task(){
if [ "$TASK" == "" ]
then
echo -n "Enter task description: "
read TASK
fi
}

add_task(){
get_task
sed -i $0 -re "s/(^TASKLISTEND$)/$TASK\n\1/"
$0 show
}

▶️Непосредственно добавлением задачи занимается функция add_task, а функция get_task просто запрашивает с клавиатуры задачу, если она не была указана в командной строке. Добавление осуществляется потоковым редактором sed. Он находит в файле $0 (сам файл скрипта) строку, в которой содержится слово "TASKLISTEND" и вставляет перед ним еще одну строку, содержащую описание задачи, и перевод строки.

▶️Удаление реализуется похожим образом:
del_task(){
get_task
sed -i $0 -e "/ TASKLISTEND$/,/^TASKLISTEND$/ {/$TASK/d}"
$0 show
}

▶️Как видите, здесь мы тоже получаем описание задачи при помощи функции get_task, а затем выполняем удаление строки из списка, в которой находится часть описания задачи, попадающей в интервал между двумя строками. Строка начала интервала строк содержит пробел и слово TASKLISTEND в конце строки, а строка конца интервала содержит одно единственное слово TASKLISTEND. Между этими двумя строками мы и удаляем найденную строку, если такая есть.

▶️Вот, собственно, и всё. Полный текст скрипта tsklst.sh:

#!/bin/bash

get_task(){
if [ "$TASK" == "" ]
then
echo -n "Enter task description: "
read TASK
fi
}

add_task(){
get_task
sed -i $0 -re "s/(^TASKLISTEND$)/$TASK\n\1/"
$0 show
}

del_task(){
get_task
sed -i $0 -e "/ TASKLISTEND$/,/^TASKLISTEND$/ {/$TASK/d}"
$0 show
}

show_task(){
echo "----------TASK LIST--------"
cat << TASKLISTEND
TASKLISTEND
}

show_help(){
cat << EOF

Description: script which keeps tasks list (or any other list) inside itself
Usage: $0 [add|show|del]'

Commands:
add [task description]
del [task description part (will delete any tasks that include entered string)]
show

EOF
exit
}

case $1 in
add|del|show)
ACTION=$1
shift
TASK=$@
${ACTION}_task
;;
*)
show_help
;;
esac


🖼️ Ссылка на источник

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Linux-Commands

✔️Шпаргалка основных команд Git Bash, терминала OSX, терминала linux.

➡️ Файловая система
▶️Просмотр содержимого папки
▶️Перемещение по файловой системе
▶️Создание папок и файлов
▶️Копирование файлов
▶️Переименование или перемещение файлов
▶️Удаление папок и файлов
➡️ Алиасы
➡️ Разное
➡️ Использование переменных
➡️ Подстановка команд в переменные
➡️ Математические операции
➡️ Управляющая конструкция if-then
➡️ Управляющая конструкция if-then-else
➡️ Конструкция CASE
➡️ Циклы
➡️ Сравнение чисел
➡️ Сравнение строк
➡️ Проверки файлов
➡️ Операторы

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
На счету каждая секунда загрузки сайта?
 
Ускорить доставку контента поможет CDN — Content Delivery Network.
Как работает технология, каким проектам подходит и как защищает инфраструктуру от DDoS-атак — рассказываем в новой полезной подборке.
 
Вы научитесь:
🔹 подключать и настраивать CDN,
🔹 снижать нагрузку на серверы веб-проектов,
🔹 повышать производительность онлайн-сервисов,
🔹 оптимизировать изображения с помощью Image Stack.
 
Переходите в Академию Selectel, чтобы познакомиться с базовыми принципами работы сети → https://slc.tl/6z171

Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqurTRD9
⚙️ bash_backup — скрипт резервного копирования на Bash

✔️Чтобы начать работать со скриптом, необходимо перейти в папку где находится скрипт backup.sh через команду перехода между директориями cd.

▶️Далее необходимо дать права на исполнение, чтобы не писать каждый раз bash backup.sh ... Если выдать такие права, то не будет необходимости в написании слова bash для выполнение скрипта. Используйте chmod +x backup.sh, чтобы выдать права на исполнение.

▶️Теперь мы готовы к запуску скрипта. Чтобы проверить запускается ли скрипт, введите ./backup.sh. В ответ на этот запрос, у вас должно появиться следующее сообщение:
Use -h or --help to see how to work with script


➡️Для вывода помощи на экран используйте команду ./backup.sh -h/--help:
Usage for creating backup: ./backup.sh <source directory> <backup directory>  
Usage for getting version of manager: ./backup.sh -v/--version
Usage for recover backup: ./backup.sh -r/--recover <backup filename> <recover directory>

▶️Чтобы увидеть версию скрипта, выполните: ./backup.sh -v/--version:
Backup manager v1.0.1

▶️Для создания резервной копии используйте следующую команду:
./backup.sh <source directory> <backup directory>

Если директория, которую Вы хотите зарезервировать, не существует, то произойдет выход из программы. Если папки куда Вы хотите сохранить бэкап не существует, то она создастся. Так как архив защищается, то он потребует установить пароль на этот архив, чтобы его не смог восстановить левый человек. "source directory" - директория, которую нужно зарезервировать. "backup directory" - директория, куда сохранится копия.

▶️Чтобы восстановить бэкап, нужно ввести команду:
./backup.sh -r/--recover <backup filename> <recover directory>

▶️У вас потребуется пароль, поставленный на эту копию, чтобы пошел процесс восстановления. Если пароль неверный, то ничего не восстановится. Здесь "backup filename" - это имя бэкапа, а "recover directory" - директория в которую нужно восстановить бэкап.

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Ansible: Какой тип инвентаря применяется в Ansible по умолчанию? 🤔

a) База данных
b) Динамический инвентарь
c) Инвентарь в формате JSON
d) Файл инвентаря

Пройдите тест и получите скидку на курс «Ansible: Infrastructure as Code».

На курсе мы:
систематизируем знания по Ansible и изучаем подход IaC;
учимся писать плейбуки и роли;
деплоим Flask-приложение;
настраиваем IaC в Gitlab;
обеспечиваем поддержку наших решений вдолгую.

5 вопросов по Ansible ждут вас внутри бота.
Проверяйте себя и до встречи на обучении! 🔥

Реклама ООО «Слёрм» ИНН 3652901451
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
⚙️ Сравнение SHELLs: BASH vs ZSH vs FISH. Делаем красочный и удобный терминал

✔️В этом видео автор показывает и сравнивает три популярных оболочки для терминала: Bash, Zsh и Fish. Он рассказывает о их особенностях, функционале, удобстве использования и отличиях в настройках.

📹 Смотреть на YouTube

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Почему /31 префикс — новая эра в настройке сетей?

Вечером 3 декабря на открытом вебинаре разберемся, почему и как появился /31 префикс и сравним его с классическим /30 : 👉 https://tglink.io/bdc47ff9b38c 👈

💬Что обсудим на занятии:
•  Почему появилась возможность использования сетей с маской /31.
•  Как настраивается линк с такой адресацией и какие особенности нужно учитывать.
•  Чем /31 префикс отличается от классического подхода с /30

Дальнейшее освоение тонкостей профессии сетевого инженера вас ждёт на онлайн-курсе «Специализация Network Engineer». 

👉Проводит вебинар преподаватель курса в Отус, сертифицированный инструктор Сетевой академии CISCO по направлениям SECURITY и R&SW. Эксперт WorldSkills и Abilympics по компетенции «Сетевое и системное администрирование».

Регистрируйтесь на урок 3.12 в 20:00 (мск) и получите спец.цену на курс: 👉 https://tglink.io/bdc47ff9b38c?erid=LjN8KN9ry 👈

#реклама
О рекламодателе
⚙️ Оболочка Bash — шпаргалка для начинающих

✔️В данной шпаргалке затрагиваются следующие темы: введение в оболочку, навигация, основные команды, переменные окружения, коннекторы, конвейеры, перенаправление ввода/вывода, права доступа и комбинации клавиш.

🖼️ Ссылка на шпаргалку

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡️ 1000+ ГБ IT-контента уже ждут вашего внимания!

Каналы, которые собрали всё самое полезное для IT-специалистов:

😎 PyLinux — для тех, кто совмещает Python и Linux: готовые bash наработки, гайды и другие полезности...

🐍 Ghostly Python — разбери Python по косточкам: уроки, советы, библиотеки и тонны практики.

⚙️ IToolBox — мощный арсенал инструментов и готовых решений для разработчиков.

😎 IT Syndicate — топовые курсы и материалы по Backend, Frontend, DevOps и не только.

👻 Ghostly Coder — бесценная библиотека книг и статей для IT-специалистов.

➡️ Ссылки действительны всего 48 часов, успей подписаться!
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ SSHClick — SSH Config manager

✔️Менеджер файлов конфигурации SSH, который помогает управлять ими через терминал. Перед использованием программы рекомендуется создать резервную копию файлов конфигурации SSH, так как есть риск случайно потерять некоторые настройки.

➡️ SSHClick можно использовать с командами show и list для хостов, не изменяя при этом файл конфигурации SSH. Только команды, которые изменяют конфигурацию, будут редактировать и переписывать/реструктурировать файл SSH Config. В этом случае любые добавленные комментарии или информация, которые не в форме, понятной SSHClick, будут отброшены, а конфигурация будет отформатирована в стиле SSHClick.

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
AMD vs Intel: какой процессор лучше? Ищите ответ в Железном обзоре
 
Вы увидите противостояние суперпроцессоров AMD 9004 и Intel Xeon Scalable5,  поймете особенности каждого. И главное — узнаете лидера серверного сегмента в 2024 году.
 
В выпусках Железного обзора ребята из @Selectel разбирают серверы и их комплектующие до последней микросхемы и обсуждают все характеристики (даже те, о которых вы не знали). В этом команде помогает 15-летний опыт собственной сборки серверов.
 
А на какой процессор ставите вы? Пишите в комментариях под видео и подписывайтесь на YouTube-канал, чтобы не пропустить новые выпуски Железного обзора.
 
Смотреть видео  

Реклама, АО «Селектел», ИНН: 7810962785
⚙️ Как проверить загрузку процессора в командной строке Linux

✔️Статья рассказывает о том, как проверять использование процессора (CPU) в операционной системе Linux.

▶️Для этого существуют несколько командных инструментов:

1. top – классическая утилита для мониторинга процессов и нагрузки на CPU в реальном времени.
2. htop – усовершенствованная версия top с удобным интерфейсом и возможностью управления процессами.
3. mpstat – инструмент для получения подробной статистики использования CPU, включая показатели для отдельных ядер.
4. pidstat – аналог mpstat, позволяющий отслеживать использование CPU конкретными процессами.
5. sar – утилита для сбора и анализа различных системных метрик, включая историю использования CPU.

➡️ Эти инструменты помогают выявить проблемы с нагрузкой на процессор и оптимизировать работу системы.

🖼️ Прочитать статью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Что означает двойной дефис (--) в Bash?

✔️Двойной дефис -- используется в командных интерпретаторах Unix-подобных систем, таких как Bash, для обозначения конца списка параметров. Это позволяет отделить параметры от аргументов команды.

➡️ Когда вы используете команду с параметрами, иногда возникает необходимость передать команде аргументы, которые могут выглядеть как параметры. Например, предположим, что у вас есть команда ls, которая принимает параметры вроде -l (для подробного вывода), а также имена файлов. Если имя файла начинается с дефиса, то ls может попытаться обработать его как параметр вместо имени файла.

▶️Для решения такой проблемы можно использовать двойной дефис. Он указывает командному интерпретатору, что все последующие символы следует рассматривать как аргументы, даже если они начинаются с дефисов.

Пример:
$ ls -l -- -file.txt

▶️В этом примере -file.txt будет обработан как аргумент, а не как параметр, благодаря использованию --.

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚠️ Проверьте эффективность IT-поддержки за 15 минут

Как понять, где теряются ресурсы в IT-процессах?
Заполните бесплатный чек-лист, который за 15 минут поможет:

• Выявить слабые места в процессах и оборудовании;
• Проверить скорость обработки запросов;
• Получить рекомендации по оптимизации.


☑️ Получите чек-лист и узнайте, как сделать IT-поддержку вашей компании прозрачной и эффективной.

⬇️ Получить чек-лист
@desnol_itiliumbot
⚙️ Осторожнее с редактированием bash-скриптов

✔️Предположим, я написал такой bash-скрипт с названием delay.sh. Как думаете, что он делает?

#!/bin/bash
sleep 30
#rm -rf --no-preserve-root /
echo "Time's up!


▶️Похоже, он ожидает 30 секунд, а затем выводит сообщение на экран. Здесь никаких фокусов — он делает именно это. Там есть опасная команда в середине, но она закомментирована и не выполняется.

▶️Представьте, что я снова запускаю этот скрипт, но теперь мне не хочется ждать 30 секунд — это слишком долго. Я открываю вторую консоль, меняю sleep 30 на sleep 3, затем сохраняю файл. Как думаете, что будет теперь? Ну, через 30 секунд скрипт удалит все мои файлы.

▶️Так происходит потому, что bash считывает содержимое скрипта фрагментами по мере выполнения, отслеживая смещение в байтах. Когда я удаляю один символ из строки sleep, смещение для начала следующей команды указывает на r в #rm вместо #. С точки зрения интерпретатора, # смещается на предыдущую строку, поэтому он выполняет команду начиная с rm.

▶️Это можно подтвердить, наблюдая за системными вызовами bash в Linux. Вот выдача strace bash delay.sh, с комментариями и в сокращении.

# Открытие скрипта
openat(AT_FDCWD, "delay.sh", O_RDONLY) = 3

# Парсинг первой строчки (до 80 символов)
read(3, "#!/bin/bash\nsleep 30\n#echo \"Don'"..., 80) = 64

# Возврат к началу
lseek(3, 0, SEEK_SET) = 0

# Переключение на на файловый дескриптор 255
dup2(3, 255) = 255

# Чтение 64-байтового куска файла, чтобы получить команду
read(255, "#!/bin/bash\nsleep 30\n#echo \"Don'"..., 64) = 64

# Поместить курсор обратно в конец команды, которую мы собираемся выполнить
# Offset 21 is the `#`
lseek(255, -43, SEEK_CUR) = 21

# Приостановка выполнения, уход в sleep
wait4(-1, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], 0, NULL) = 2072

# До возвращения wait4 файл редактируется с `30` на `3`

# Чтение 64-байтового куска файла, чтобы получить следующую команду
# В этом демо я заменил опасную команду на echo
read(255, "echo \"Don't execute me\"\necho \"Ti"..., 64) = 42

# Bash решает выполнить оба echo одновременно без нового чтения
# Очевидно, что-то идёт не так
write(1, "Don't execute me\n", 17) = 17
write(1, "Time's up!\n", 11) = 11

# Чтение следующего фрагмента и обнаружение конца файла
read(255, "", 64) = 0


➡️ Поэтому будьте осторожны при запуске редактировании bash-скрипта, который выполняется в данный момент. Он может выполнить неверную команду или сделать что-то очень неожиданное.

🖼️ Прочитать статью на Habr'e

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Безопасность цифровой инфраструктуры бизнеса — настоящая суперсила! В 2025 году желаем безупречной работы систем, кода, который компилируется с первого раза, вдохновляющих проектов и, конечно, выгодных решений.

Получайте до 500 ₽ за каждую установку
Яндекс Браузера и выигрывайте призы!

Каждое 27-е число с декабря по февраль мы разыгрываем по 30 призов. Среди них: Станция Дуо, Станция Мини, светодиодные ленты Яндекс и другие брендированные подарки.

Как стать участником розыгрыша:
✔️ Оставьте заявку.
✔️ Зарегистрируйтесь в реферальной программе.
✔️ Рекомендуйте Яндекс Браузер или устанавливайте его на компьютеры.

Все подробности на странице, там же опубликуем результаты. Участвуйте в розыгрыше и начните год с позитивных эмоций и подарков!
⚙️ bash-video

✔️Скрипт для редактирования видео при помощи bash, который помогает с ffmpeg.

➡️ Скрипт облегчает такие операции, как вырезание, соединение, изменение скорости воспроизведения, оптимизация размера видео, обрезка, извлечение аудио, добавление звука, изменение размера, поворот, запись экрана, добавление субтитров, применение видеофильтров и многое другое.

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Это на 100% практический курс по пентесту, где вы попробуете изученные техники взлома. Курс содержит 65 рабочих и 16 экзаменационных тасков в лаборатории

Запись до 12 декабря! 🎄

Получите практические навыки как в рабочих задачах, так и в Bug Bounty. Промодоступ 7 дней бесплатно!

Программа курса:
- эксплуатация всех актуальных типов уязвимостей, активный / пассивный фаззинг
- SQL Injection и CMD Injection, Cross Site Scripting, PHP injection, Server Side Template injection
- техники повышения привилегий, Client-side атаки (XSS, CSRF)

@Codeby_Academy
Узнать подробнее о курсе