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

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
⚙️ Несколько способов ускорить bash-скрипты

✔️Думаю, не сделаю открытия, если скажу, что в принципе bash-скрипты штука довольно медленная. Но это обычно не критично, потому что все-таки главная задача bash-скриптов — это автоматизация тех действий, которые выполняются руками. Так что по сравнению с ручным выполнением скорость просто фантастическая. Тем не менее, бывает необходимо ускорить скрипты, если обрабатываются какие-то большие объемы данных.

➡️ Скорость выполнения скриптов
Есть определенные факторы, которые влияют на скорость выполнения скриптов. К ним можно отнести:
▶️Использование внешних команд
▶️Использование излишне сложных или просто неоптимальных регулярных выражений
▶️Вывод в консоль каких-то данных
▶️Использование лишних команд
▶️Использование круглых или фигурных скобок
▶️и т.д.

➡️ И, соответственно, хороший скрипт
▶️Не использует специфические программы, которые есть не везде (требуют установки дополнительных пакетов)
▶️Использует минимум внешних команд
▶️Использует оптимизированные регулярные выражения (которые, как ни печально, многие вообще не используют), например, с минимальным использование захватывающих квантификаторов. Регулярки — это вообще отдельная интересная тема, по поводу которой могу порекомендовать книгу Джеффри Фридла «Регулярные выражения» (если ваш английский позволяет, то лучше в оригинале) и много практики.
▶️Не использует переменные для хранения данных, когда можно использовать пайп и запускать два процесса параллельно вместо последовательного запуска

Кроме скорости, естественно, есть еще такой фактор как совместимость. Если вы уверены, что в других оболочках скрипт выполняться не будет, или будет работать медленно, лучше откажитесь от совместимости в пользу скорости. Какой смысл писать скрипты, которые будут в 99% случаев выполняться в bash, но работать будут в 100% случаев медленно? Тем более что bash есть буквально везде, даже на смартфонах и роутерах. В наше время написание совместимых скриптов — это чаще вопрос предпочтений, чем реальной необходимости. Не очень приятного бывает осознавать, что скрипт может работать под разными оболочками, но работает 100% в баше, и, в связи с отсутствием «заточки» под баш, работает он заметно медленнее, чем мог бы.

➡️ Поэтому давайте рассмотрим некоторые моменты, касающиеся скорости скриптов на примерах
▶️Использование внешних команд
▶️Использование регулярных выражений
▶️Вывод в консоль данных
▶️Использование лишних команд

🖼️ Дочитать статью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥3
⚙️ Руководство по использованию команды ulimit в Linux с примерами

✔️Команда ulimit в Linux позволяет ограничивать ресурсы, доступные для оболочки и её дочерних процессов. Эти ограничения включают максимальное количество открытых файлов, максимальный объём виртуальной памяти, размер файла дампа памяти и многое другое.

▶️Команда ulimit является важным инструментом для управления доступными ресурсами, предотвращая ситуации, когда один процесс может заблокировать все ресурсы системы. Она также помогает поддерживать стабильность системы, ограничивая ресурсы для каждого пользователя и процесса.

▶️В этой статье мы рассмотрим команду ulimit и приведём примеры её использования. Также будут рассмотрены практические аспекты её применения.

➡️ Виды ограничений
Ограничения, управляемые командой ulimit, можно разделить на два типа: жёсткие и мягкие ограничения. Рассмотрим их подробнее.

▶️Мягкие ограничения
Мягкие ограничения — это значения, которые можно изменить в пределах жёстких ограничений. Они позволяют временно менять пределы ресурсов для конкретного процесса.

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

➡️ Содержание статьи:
▶️Использование
▶️▶️Установка предела размера файла
▶️▶️Увеличение числа открытых файловых дескрипторов
▶️▶️Ограничение времени работы процессора
▶️Практическое применение
▶️▶️Предотвращение перегрузки системы
▶️▶️Улучшение безопасности
▶️▶️Разработка и тестирование
▶️▶️Оптимизация производительности системы
▶️Сохранение ограничений
▶️Заключение

🖼️ Дочитать статью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥53
Есть ли жизнь DevOps после 40? 🚩

Признайтесь, кто тоже боится войти в новую профессию, потому что думает, что возраст — помеха?

В Слёрме знают, как избавиться от этого страха.

До 6 октября приглашаем вас присоединиться к курсу-профессии «DevOps Upgrade» с карьерной поддержкой.

Внутри:
275 часов интенсивной практики
видеолекции и живые встречи с экспертами курса
2 сертификации и 1 большой финальный проект (можно добавить в портфолио!)
диплом государственного образца

🔗 карьерная консультация от наставника
🔗 подготовка к собеседованию
🔗 рекомендательное письмо

Вы сможете не только освоить новую профессию, но и подготовиться к старту в ней и выгодно подсветить своё резюме.

Переходите на сайт, выбирайте тариф «Комфорт Карьера», и начните учиться уже сегодня 🏃‍♂️
👍3🔥1
⚙️ Команда exit в Bash и коды выхода

✔️Часто при написании сценариев Bash вам необходимо завершить сценарий при выполнении определенного условия или выполнить действие на основе кода выхода команды.

➡️ Статус выхода
▶️Каждая команда оболочки возвращает код выхода, когда она завершается успешно или безуспешно.

▶️По соглашению нулевой код выхода указывает, что команда завершилась успешно, а ненулевое значение означает, что произошла ошибка.

▶️Специальная переменная $? возвращает статус выхода последней выполненной команды:
date &> /dev/null
echo $?

▶️Команда date завершена успешно, код выхода равен 0
Если вы попытаетесь запустить ls в несуществующем каталоге, код выхода будет отличным от нуля:
ls /nonexisting_dir &> /dev/null
echo $?

2

▶️Код состояния можно использовать для выяснения причины сбоя команды. На странице руководства каждой команды содержится информация о кодах выхода.

▶️При выполнении многокомандного конвейера статус выхода конвейера соответствует состоянию последней команды:
sudo tcpdump -n -l | tee file.out
echo $?

▶️В приведенном выше примере echo $? напечатает код выхода команды tee .

➡️ Команда exit
Команда exit закрывает оболочку со статусом N Он имеет следующий синтаксис:
exit N

▶️Если N не задано, код состояния выхода — это код последней выполненной команды.

▶️При использовании в сценариях оболочки значение, указанное в качестве аргумента команды exit возвращается оболочке как код выхода.

➡️ Примеры
▶️Статус выхода команд может использоваться в условных командах, таких как if . В следующем примере grep завершит работу с нулем (что означает истину в сценариях оболочки), если «строка поиска» найдена в filename :
if grep -q "search-string" filename then
echo "String found."
else
echo "String not found."
fi

▶️При запуске списка команд, разделенных && (И) или || (ИЛИ), статус выхода команды определяет, будет ли выполнена следующая команда в списке. Здесь команда mkdir будет выполнена, только если cd вернет ноль:
cd /opt/code && mkdir project

▶️Если сценарий завершается exit без указания параметра, код выхода из сценария — это код последней команды, выполненной в сценарии.
#!/bin/bash

echo "doing stuff..."

exit

▶️Использование только exit — это то же самое, что и exit $? или пропуская exit .

▶️Вот пример, показывающий, как завершить сценарий, если он запущен пользователем без полномочий root:
#!/bin/bash

if [[ "$(whoami)" != root ]]; then
echo "Only user root can run this script."
exit 1
fi

echo "doing stuff..."

exit 0

▶️Если вы запустите сценарий как root, код выхода будет нулевым. В противном случае скрипт выйдет со статусом 1 .

➡️ Выводы
▶️Каждая команда оболочки возвращает код выхода при завершении. Команда exit используется для выхода из оболочки с заданным статусом.

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥43
Forwarded from Видеоуроки IT
🎬 Docker и Docker Compose - Полный Курс Docker Для Начинающих с Нуля

🔴Описание:
00
:00 Интро в курс
01:26 Что вошло в курс для начинающих на YouTube
02:43 Что в расширенном курсе на Udemy
04:43 Что нужно для прохождения курса
06:16 Зачем нужен Docker - проблемы разработки и деплоймента
13:22 VM (виртуальная машина) разница с Docker
17:38 Принцип работы Docker
23:22 Docker образ и Docker контейнер
28:19 Слои образа (теория о принципе)
32:49 Начало установки и нюансы о Docker-Desktop
37:24 Установка Docker на Mac
38:56 Установка Docker на Windows
46:32 Установка Docker на Linux
50:40 Проверка работоспособности Docker Desktop
55:15 Базовые команды Docker с образами и контейнерами
1:16:19 Настройка потребления ресурсов Docker-Desktop
1:17:17 Работаем с образом Ubuntu
1:26:35 Интерактивный терминал контейнера Ubuntu
1:27:39 О файловой системе контейнеров
1:32:21 Установка компонентов в контейнер
1:35:33 Dockerfile. Сборка своего образа и установка компонентов
1:45:31 Уменьшаем количество слоев в образе
1:51:46 Потребление ресурсов контейнерами Live stats
1:57:06 Слои контейнера и сборка образа! из контейнера
2:01:20 Образ Python
2:02:34 Упаковка файлов(проекта) в образ (на простом примере)
2:11:06 О буферизации потока вывода
2:15:01 Разница между RUN и CMD
2:15:37 Очистка системы Docker от кеша, ненужных образов и прочего мусора
2:18:43 Установка доп библиотек в образ из requirements.txt или package.json...
2:19:41 Обзор кода (чекаем пару BTC/USDT)))
2:23:03 Правило структуры Dockerfile (правильной очередности слоев)
2:26:20 Образ Nginx
2:31:22 Монтирование портов и ip адреса хоста к контейнеру Docker
2:38:32 Поработаем в Linux терминале контейнера, редактор Nano
2:51:43 Монтирование директорий хоста к контейнеру
3:00:46 Docker Compose (первый пример с Nginx, портами и директориями)
3:10:13 Сборка руками 4 контейнера Mongo + Mongo-Express + Flask + API Checker
3:12:18 Создание сетей
3:28:05 Онлайн график стоимости (смотрим что получилось))
3:30:03 Compose сборка 4 контейнера Mongo + Mongo-Express + Flask + API Checker

▶️ Смотреть на YouTube

🔻Канал: Python Hub Studio
🔴#docker
Please open Telegram to view this post
VIEW IN TELEGRAM
👍236🔥4😐1
Лучше, выгоднее, удобнее: нашли отечественный аналог Cloudflare.

Более 10 лет DDoS-Guard защищает бизнес любых масштабов и обеспечивает отказоустойчивость даже при самых интенсивных нагрузках.

Также DDoS Guard:
- Сертификация ФСТЭК
- Фиксированные цены без сюрпризов
- Бесплатный пробный период
- Интуитивно понятный личный кабинет

Проверьте защиту в действии. Подключитесь к бесплатному пробному периоду и убедитесь, что DDoS-Guard — самая надежная защита от DDoS-атак для вашего бизнеса

#реклама
О рекламодателе
3😐2
⚙️ Introduction to Bash scripting — бесплатная электронная книга

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

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥2
This media is not supported in your browser
VIEW IN TELEGRAM
Cамый простой способ изучить Java — залезть в голову профи

Один из лучших айтишников России учит базе кодинга в Telegram. Даже гуманитарий поймёт, как создавать приложения, сайты, игры и чат-боты.

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

И всё это бесплатно — вместо сотен тысяч рублей за курсы. Стартовать в прибыльной профессии с нуля вы сможете гораздо проще!

Теперь обучиться Java может каждый: @java_secrets
2👍2🔥1
⚙️ Ресурс, описывающий самые популярные инструменты DevOps

✔️Здесь описывается Docker, GitHub Actions, k8s, Go, Helm, Prometheus, ArgoCD, Jenkins.

▶️Помимо инструментов, внимание здесь уделяется таким методологиям как GitOps, DevSecOps, описываются базовые команды Linux, основы написания Bash-скриптов и много всего другого.

🖼️ Перейти на сайт

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥43😐1
Курс "Профессия Пентестер" стартует 21 октября!

- Научитесь атаковать сети, WEB-сайты, операционные системы и локальные устройства и проводить внутренний и внешний пентест
- Участвуйте в BugBounty программах или постройте карьеру в сфере информационной безопасности

Полный цикл обучения:
- от освоения Kali Linux и администрирования, до написания эксплойтов и обхода антивирусных решений
- от сетевой разведки до эксплуатации уязвимостей, повышения привилегий и закрепления в сети

Хотите стать пентестером? Присоединяйтесь к нам – защищайте мир от угроз, находя уязвимости и предотвращая кибератаки!

Пишите нам @Codeby_Academy
Узнать подробнее
👍32
⚙️ Фейковый SMTP-сервер на bash

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

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

➡️ Требования
Каким требованиям должен удовлетворять такой сервер:
▶️Слушать порт 25/tcp, на котором работает обычно SMTP-сервер
▶️Принимать само письмо и записывать его в файл, либо на терминал
▶️Поддерживать команды протокола SMTP

➡️ Протокол SMTP
Сам по себе протокол SMTP очень простой, но реализовывать его целиком мы не будем. Нам нужны будут только следующие команды:

HELO имя/IP-адрес — Начало сессии
MAIL FROM: отправитель — Отправитель письма
RCPT TO: получатель — Может быть несколько таких заголовков
DATA — Начало ввода данных
. (точка) — Окончание ввода данных (Строка, состоящая из одного символа)
QUIT — Окончание сессии

➡️ Фейковый SMTP-сервер
Это будет достаточно небольшой скрипт. Его первая задача — открыть порт 25/tcp и слушать его. Как только на этом порту будет введена команда, ее надо обработать и соответствующим образом прореагировать.

▶️Для того, чтобы запустить скрипт, нам понадобятся права пользователя root, поскольку порт 25 является привелегированным, а также установленный пакет netcat.

#!/bin/bash

# Адрес, на котором будет слушаться порт
LISTEN="192.168.0.6"

S=./tmp
[ -p $S ] || mkfifo $S

start_smtp(){
(tail -f $S) | ( netcat -l -p 25 $LISTEN ) | (
# Баннер почтового сервера
echo "220 fake smtp server" > $S
# Разделителем значений будет перевод строки
# Это нужно для считывания текста целыми строками
IFS='
'
# Флаг режима ввода данных
DATA_INPUT=0
while read
do
echo $REPLY
if [ $DATA_INPUT -eq 0 ]
then
case $REPLY in
HELO*)
# Здесь и далее ответ на команды клиента
echo "250 bash SMTP stub" > $S
;;
DATA*)
# После ввода команды DATA включаем режим ввода данных
echo "354 Start mail input; end with ." > $S
DATA_INPUT=1
;;
QUIT*)
# Окончание сессии
echo "221 2.0.0 Bye" > $S
# Находим запущенные нами процессы tail и netstat и убиваем их
# Без окончания этих процессов следующая сессия не запустится
TAIL_PID=$(ps ax | grep "tail -f $S" | grep -v grep | cut -d' ' -f 1)
NETCAT_PID=$(ps ax | grep "netcat -l -p 25" | grep -v grep | cut -d' ' -f 1)
kill -9 $TAIL_PID $NETCAT_PID
# Выход в главную программу
return
;;
MAIL\ FROM*)
echo "250 2.1.0 OK" > $S
;;
RCPT\ TO*)
echo "250 2.1.0 OK" > $S
;;
*)
echo "502 5.5.2 Error: command not recognized" > $S
;;
esac
else
# Ввод данных пока не встретится "."
case $REPLY in
.*)
echo "250 2.1.0 OK" > $S
DATA_INPUT=0
;;
esac
fi
done
)

}

while true
do
echo "*** Starting session"
start_smtp
done


▶️Информация, которую передает клиент, выводится на экран терминала, в котором запущен скрипт. При желании ее можно перенаправить в файл лога.

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥85
14 октября (пн) приглашаем вас на встречу потенциальных докладчиков с Программным комитетом DevOpsConf 2025. 
Собираемся в 19.00 Мск

📌 Форматы:
Офлайн. Москва, офис Газпромбанк, Коровий Вал 5, БЦ «Оазис».
Онлайн. Ссылка придёт после регистрации на встречу, участие свободное.

😎 От Программного комитета во встрече будут участвовать:
Дмитрий Зайцев (Flocktory) — руководитель Программного комитета DevOpsConf, Александр Коротков (Т-Банк), Игорь Курочкин (Enabling.team). 

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

Зарегистрироваться на встречу и подать заявку на доклад можно на сайте

До встречи 14 октября! Ждём вас 🤝

Реклама. ООО "КОНФЕРЕНЦИИ ОЛЕГА БУНИНА". ИНН 7733863233.
👍1
⚙️ Пять терминальных программ для вывода информации о дистрибутиве Linux

➡️ Neofetch
Простая утилита, написанная на Bash и предназначенная для вывода информации о программном и аппаратном обеспечении вашего дистрибутива. «Выхлоп» приятен взгляду: выводится логотип вашего дистрибутива в формат ASCII и краткая информация о дистрибутиве. После первого запуска утилиты создается конфигурационный файл, в котором можно поменять логотип и вывод информации. «Выхлоп» утилит прост и понятен для любого пользователя.

➡️ Screenfetch
Полезная консольная утилита также написанная на Bash, позволяющая выводить информацию о процессоре, видеокарте, потребляемой оперативной памяти, типе дистрибутива, версии ядра и иную информацию.

В отличие от предыдущей утилиты Screenfetch не создает конфигурационный файл, содержание выводимой информации управляется посредством использования ключей. Чтобы посмотреть какие ключи можно использовать, введите команду с ключом -h (help).

➡️ Nerdfetch
В отличие от предыдущих двух утилит, эта отличается минимализмом в плане выводимой информации. Она более для красоты «выхлопа», чем для его пользы и содержательности. Перед тем как использовать Nerdfetch необходимо установить в дистрибутив шрифты Nerd. Скачать нужные шрифты вы можете с официального сайта или использовать встроенный в систему пакетный менеджер.

➡️ Macchina
Еще одна минималистичная утилита, выводящая информацию о дистрибутиве. В отличие от всех предыдущих она имеет встроенную поддержку тем и поддерживает кастомизацию через конфигурационный файл (прям как у Neofetch). С одной стороны это является преимуществом утилиты, но новичку нужно будет время, чтобы разобраться (при желании) в конфиге и настроить его под себя.

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

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥4
Скидка 35% раз, скидка 35% два, ПРОДАНО: аукцион выделенных серверов от Selectel
 
Если вам нужны вычислительные мощности для ваших проектов, сейчас самое время арендовать сервер в Selectel по выгодной цене. Аукцион выделенных серверов — акция от Selectel, когда цена не растет, а снижается каждую секунду.
 
Ежедневно к заказу доступно более десятка готовых конфигураций с отличными скидками. Список серверов на аукционе и размер скидки постоянно обновляются, так что не упустите выгодное предложение, их быстро разбирают.
 
Почему стоит арендовать выделенный сервер в Selectel?
- Серверы на базе процессоров Intel и AMD справятся с любыми нагрузками
- Скидка аукциона закрепляется за вами и сохраняется навсегда
- Безлимитный бесплатный интернет со скоростью 1 Гбит/сек
- Защита от DDos атак входит в стоимость аренды
- Полное соответствие стандартам 152-ФЗ
 
Все конфигурации протестированы и готовы к работе, на их запуск потребуется от 2 минут. Заказать инфраструктуру и управлять ею можно в одном окне браузера — через удобную панель.
 
Арендуйте выделенный сервер от Selectel по выгодной цене, пока это не сделал кто-то другой: https://slc.tl/06fgf

Реклама АО «Селектел». ИНН: 7810962785 Erid: 2VtzqxgUA7L
👍3😐2
⚙️ Объектно-ориентированное программирование на bash

✔️Оболочка bash не имеет возможностей создания объектов и работы с ними. Тем не менее, можно написать скрипты таким образом, чтобы скрипт был достаточно сильно похож на объектно-ориентированную программу, и реализовать таким образом объектно-ориентированное программирование на bash.

➡️ Давайте посмотрим, как можно написать скрипты, которые похожи на программу с объектами. Для этого нам надо сэмулировать методы и свойства объектов. И единственная возможность это сделать — это использование функций.

▶️В первую очередь надо определиться с названием класса. Пусть это будет класс «obj». А объект мы назовем «myobject». В скрипте объект будет создаваться следующим образом:
obj myobject

▶️Это чем-то похоже на другие языки, где вы сначала пишете название типа переменной, а затем название переменной. Пусть в нашем скрипте это будет тоже так же, чтобы было больше похоже на другие языки.

▶️При создании объекта нам по логике вещей необходимо вызвать конструктор экземпляра объекта. И этим конструктором будем именно функция obj. Для лучшего вида программы сделаем следующее: вынесем obj в отдельный файл, и для сходства с другими языками назовем его «obj.h». Это будет заголовочный файл, мы будем его подключать. Этот заголовочный файл будет иметь всего одну функцию: obj
obj(){

}

▶️И пока отложим эту функцию. Наша программа тем временем выглядит вот так:
. obj.h
obj myobject

Давайте добавим в программу работу с методами и свойствами объекта.
. obj.h
obj myobject

# вызов метода
myobject.sayHello

# работа со свойствами объекта
myobject.fileName = "file1"

▶️И добавим для красоты еще один объект — stdout, это будет объект, реализующий вывод на экран.
stdout.printString "Property value is:"
stdout.printValue myobject.fileName

▶️Для него нам тоже понадобится заголовочный файл, назовем его «system.h». Теперь наша программа выглядит так:
. obj.h
. system.h

obj myobject

myobject.sayHello

myobject.fileName = "file1"

stdout.printString "value is"
stdout.printValue myobject.fileName

▶️Теперь надо всё это заставить корректно работать.

🖼️ Дочитать статью в источнике

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥43
⚙️ 18 отборных однострочных команд Linux

✔️В этой статье описан ряд функциональных, полезных, а порой и опасных команд, чтобы продемонстрировать потенциал использования оболочки Bash в Linux. Некоторые из них, действительно, потребуют соблюдения осторожности, так как иначе можно потерять все свои данные. Другие же, наоборот, окажутся очень покладистыми и полезными для повышения эффективности работы.

▶️Опасные команды! Выполняйте их, только если уверены в своих действиях. В начало и конец каждой добавлены символы - - , чтобы их нельзя было просто скопировать и вставить.

➡️ fork-бомба
▶️Эта «команда» при выполнении на ПК не представляет особой угрозы, но вот ее запуск на сервере может привести к отказу в обслуживании.

▶️Выглядит она как странный набор символов, хотя на деле это реальное определение функции bash.

▶️В bash допускается использовать в качестве имени функции — :
И в случае выполнения команды :(){ :|:& };:, именно такую функцию мы и создаем. Внутренне она рекурсивно вызывает сама себя, то есть выполняется бесконечно, а с помощью &
мы инструктируем процесс выполняться фоново.
$ -- :(){ :|: & };: -- 


➡️ Прямая запись на жесткий диск
Вы легко повредите файловую систему, если при выполнении любой команды сохраните ее вывод на диск. Так кому же это может понадобиться?
$ -- "a command" > /dev/sda --

▶️Запись на диск случайных данных
Эта команда может пригодиться, например, для перезаписи секторов диска с целью исключения возможности восстановления данных. Напомню, что при наличии правильного инструмента вернуть данные после форматирования диска трудностей не составит.

▶️Если использовать эту команду в цикле и выполнить ее 3-4 раза, то она в достаточной степени гарантирует невозможность восстановления удаленной информации.
$ -- dd if=/dev/urandom of=/dev/disk --
//for i in {1..10}; do dd if=/dev/urandom of=/dev/disk; done


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

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

▶️Символ / указывает, что начинать нужно с корневого каталога, который содержит все файлы и все смонтированные устройства с данными, включая удаленные файловые ресурсы и съемные диски. (прим. пер.: современные дистрибутивы не дают просто так удалить /, надо либо добавить --no-preserve-root, либо удалять /* (все файлы в корневом каталоге).
$ -- rm -rf / --


🖼️ Дочитать статью

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍74😐1
📚Библиотека промптов для самых разных задач и профессий

Внутри - сотни проверенных запросов для ChatGPT, которые удобно разбиты по категориям (от домашнего обучения до маркетинга и разработки)

Библиотека постоянно обновляется, а доступна она здесь - Нейрон

Сохраняй и пользуйся!💾
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥2
⚙️ Некоторые приемы защиты программ на bash

✔️Сокрытие (шифрование) пароля в теле bash-программы

▶️Для начала необходимо установить пакет xemacs21-bin

▶️Затем получаем хэш пароля, зашифрованный в mime
echo -ne "SecretP@ss" | mmencode
U2VjcmV0UEBzcw==

▶️Подставляем в программе вместо пароля в явном виде (plain-text), его шифрованное значение:
PP=$(echo -ne "U2VjcmV0UEBzcw==" | mmencode -u)
echo $PP
SecretP@ss


✔️Обфускация кода скрипта с помощью base64

▶️Ставим пакет base64
## for FreeBSD
cd /usr/ports/converters/base64
make install clean
## for Linux
apt -y install coreutils

▶️Кодируем файл /home/user/decrypted.sh
base64 decrypted.sh > encrypted.sh

▶️Раскодируем файл скрипта
base64 --decode encrypted.sh > restored.sh

▶️Запуск закодированного шелла без предварительной расшишровки в файл:
base64 --decode encrypted.sh | /bin/bash


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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍62😐2
Вебинар QoS в ESR

🗓 Дата: 18.10.2024
🕒 Время: 14:00 по МСК

Программа вебинара: 
- Базовый и расширенный QoS
- Механизмы классификации трафика
- Доступные алгоритмы организации очередей
- Policing и Shaping

Практичекая часть:
- Практические тесты с применением генератора трафика Cisco TRex

👉 Регистрация

👤 СпикерАлексей Листаров — инженер с многолетним опытом работы в крупном операторе связи. Сертифицированный преподаватель Академии Eltex. 

#eltex #eltexcm #webinar #esr 

@eltexcm

Реклама. ООО "ЭЛТЕКС КОММУНИКАЦИИ". ИНН 7714966730.
👍3🔥21
⚙️ Шифрование файла или каталога Shell Scripts

✔️Bash скрипт ниже предназначенн для создания простого интерфейса для шифрования файла с помощью инструмента шифрования GnuPG (GPG).

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

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

▶️Команда gpg -c filename используется для шифрования файла с помощью GnuPG (GNU Privacy Guard) с симметричным шифрованием, а команда gpg -d filename.gpg > filename используется для расшифровки зашифрованного GPG файла и сохранения расшифрованного содержимого в новый файл.
#!/bin/bash

echo "Welcome! I am ready to encrypt a file/folder for you."
echo "Currently, I have a limitation. Please place me in the same folder where the file to be encrypted is located."
echo "Enter the exact file name with the extension."
read file;

gpg -c "$file"

echo "I have successfully encrypted the file..."

# Ask for confirmation before removing the original file
read -p "Do you want to remove the original file? (y/n): " confirm

if [ "$confirm" == "y" ]; then
rm -rf "$file"
echo "Original file removed."
else
echo "Original file was not removed. Exiting without deletion."
fi


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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3🔥3😐1