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

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
⚙️ Homeshick

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

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

▶️Благодаря возможностям Git, Homeshick позволяет вам переносить на удаленные компьютеры симфонию настроек, в которую вы вложили всю свою душу.

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

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотите научиться программировать на одном из самых мощных и востребованных языков? Запишитесь на бесплатный мини-курс Skillbox по разработке на C++ и создайте своё первое приложение всего за 5 дней: https://epic.st/rkQ-iw?erid=2VtzqwQRW48

На мини-курсе вас ждут:
— Погружение в C++: даже если вы никогда не занимались программированием, всё равно поймёте основы языка и напишете своё первое финансовое приложение
— Доступ к материалам навсегда: смотрите видео в удобное время и повторяйте пройденный материал, когда потребуется
— Поддержка эксперта: общение со спикером и разбор ваших практических работ на вебинаре

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

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
⚙️ Несколько способов ускорить bash-скрипты

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Внутри:
275 часов интенсивной практики
видеолекции и живые встречи с экспертами курса
2 сертификации и 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
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
Лучше, выгоднее, удобнее: нашли отечественный аналог Cloudflare.

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

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

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

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

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

🐙 Перейти на Github

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

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

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

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

Теперь обучиться Java может каждый: @java_secrets
⚙️ Ресурс, описывающий самые популярные инструменты 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
Курс "Профессия Пентестер" стартует 21 октября!

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

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

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

Пишите нам @Codeby_Academy
Узнать подробнее
⚙️ Фейковый 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
14 октября (пн) приглашаем вас на встречу потенциальных докладчиков с Программным комитетом DevOpsConf 2025. 
Собираемся в 19.00 Мск

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

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

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

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

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

Реклама. ООО "КОНФЕРЕНЦИИ ОЛЕГА БУНИНА". ИНН 7733863233.
⚙️ Пять терминальных программ для вывода информации о дистрибутиве 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
Скидка 35% раз, скидка 35% два, ПРОДАНО: аукцион выделенных серверов от Selectel
 
Если вам нужны вычислительные мощности для ваших проектов, сейчас самое время арендовать сервер в Selectel по выгодной цене. Аукцион выделенных серверов — акция от Selectel, когда цена не растет, а снижается каждую секунду.
 
Ежедневно к заказу доступно более десятка готовых конфигураций с отличными скидками. Список серверов на аукционе и размер скидки постоянно обновляются, так что не упустите выгодное предложение, их быстро разбирают.
 
Почему стоит арендовать выделенный сервер в Selectel?
- Серверы на базе процессоров Intel и AMD справятся с любыми нагрузками
- Скидка аукциона закрепляется за вами и сохраняется навсегда
- Безлимитный бесплатный интернет со скоростью 1 Гбит/сек
- Защита от DDos атак входит в стоимость аренды
- Полное соответствие стандартам 152-ФЗ
 
Все конфигурации протестированы и готовы к работе, на их запуск потребуется от 2 минут. Заказать инфраструктуру и управлять ею можно в одном окне браузера — через удобную панель.
 
Арендуйте выделенный сервер от Selectel по выгодной цене, пока это не сделал кто-то другой: https://slc.tl/06fgf

Реклама АО «Селектел». ИНН: 7810962785 Erid: 2VtzqxgUA7L
⚙️ Объектно-ориентированное программирование на 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
⚙️ 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
📚Библиотека промптов для самых разных задач и профессий

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

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

Сохраняй и пользуйся!💾
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Некоторые приемы защиты программ на 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
Вебинар QoS в ESR

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

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

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

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

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

#eltex #eltexcm #webinar #esr 

@eltexcm

Реклама. ООО "ЭЛТЕКС КОММУНИКАЦИИ". ИНН 7714966730.