ch
Feedback
BashMaster

BashMaster

前往频道在 Telegram

Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Реклама: @Kone4noVasya Канал на бирже: https://telega.in/c/bash_help

显示更多
8 730
订阅者
-224 小时
+27
+21030
帖子存档
Расширить свой стек — легко! ⚡️ Приглашаем разработчиков на обучение: PostgreSQL, Apache Kafka, Docker, Gitlub CI/CD, Java Sc
Расширить свой стек — легко! ⚡️ Приглашаем разработчиков на обучение: PostgreSQL, Apache Kafka, Docker, Gitlub CI/CD, Java Script, Python-разработчик и еще более 10 востребованных направлений ждут вас в формате видеокурсов в учебном центре Слёрм. Учёба в Слёрм — это: ✔️ старт в любое время: вы не привязаны к расписанию и проходите курс в комфортном для вас темпе; ✔️ фокус на практику: она занимает около 80% обучения; ✔️ гибкие условия оплаты: рассрочка, налоговый вычет, оплата зарубежной картой и даже оформление оплаты от работодателя; ✔️ передача знаний от ведущих экспертов современного IT рынка. Цените свое время и приходите осваивать best practices и прокачивать свои навыки вместе с нами! Подробнее — на сайте 😉 Реклама ООО «Слёрм» ИНН 3652901451

⚙️ Генератор паролей на bash ✔️Время от времени приходится менять пароли. Все знают, что хороший пароль должен включать больш
⚙️ Генератор паролей на bash ✔️Время от времени приходится менять пароли. Все знают, что хороший пароль должен включать большие и малые латинские буквы, цифры и специальные символы. При этом они не должны быть слишком короткими. И каждый раз придумывать их все труднее и труднее, особенно если использовать разные пароли на разных сервисах. Можно для этого использовать, например, программу pwgen или генератор, встроенный в keepassx. А можно написать простой генератор паролей на bash. ➡️ Используемые символы ▶️Будем использовать следующие символы: Большие и малые буквы латинского алфавита (A-Z и a-z), цифры (0-9) и символы «!@#$%^&*()?/\[]{}-+_=<>.,». Такое сочетание обеспечит максимальную надежность. ➡️ Длина пароля ▶️Длина пароля будет 16 символов. Если вам нужен более короткий пароль, то вы можете указать меньшую длину в скрипте, либо добавить опцию командной строки. ➡️ Скрипт-генератор паролей на bash ▶️Самое первое, что нам необходимо — это переменная, содержащая все символы, которые мы будем использовать. Также нужна будет переменная, содержащая длину пароля и переменная для хранения самого пароля.
SYMBOLS=""
for symbol in {A..Z} {a..z} {0..9}; do SYMBOLS=$SYMBOLS$symbol; done
SYMBOLS=$SYMBOLS'!@#$%&*()?/\[]{}-+_=<>.,'
# Строка со всеми символами создана.
# Теперь нам надо в цикле с количеством итераций равным длине пароля
# случайным образом взять один символ и добавить его в строку, содержащую пароль.
PWD_LENGTH=16  # длина пароля
PASSWORD=""    # переменная для хранения пароля
RANDOM=256     # инициализация генератора случайных чисел
for i in `seq 1 $PWD_LENGTH`
do
PASSWORD=$PASSWORD${SYMBOLS:$(expr $RANDOM % ${#SYMBOLS}):1}
done
echo $PASSWORD
▶️Вот и всё. Это весь скрипт. И с его помощью мы можем получить пароль, который удовлетворяет всем распространенным требованиям безопасности. Осталась только одна проблема — запомнить его. 🖼️ Ссылка на источник 🔨 bash_help

Хотели бы присоединиться к проекту, который приносит пользу миллионам пользователей? 🚀 В Авито актуальна вакансия в команду,
Хотели бы присоединиться к проекту, который приносит пользу миллионам пользователей? 🚀 В Авито актуальна вакансия в команду, которая занимается разработкой продукта по управлению виртуальной инфраструктурой: 1️⃣ SRE инженер в команду Dev Также в поиске инженера команда инфраструктуры, которая обеспечивает весь фундамент Авито (от серверов до внутреннего облака): 2️⃣ Системный инженер HPC кластеров А ещё есть вакансия в команде, которая занимается развитием и администрированием систем, повышающих безопасность компании, на основе Infrastructure as Code подхода: 3️⃣ DevOps Engineer Вас будут ждать: – достойная зарплата, размер которой обсуждается на собеседовании; – прозрачная система премий; – интересные и важные задачи на очень большом проекте; – передовые технологии и подходы, возможность пробовать новое; – опытные и заинтересованные коллеги, готовые оказать поддержку; – мощное железо, дополнительные мониторы и всё, что нужно для продуктивной работы; – личный бюджет на обучение, который можно тратить на книги, курсы и конференции; – забота о здоровье: ДМС со стоматологией с первого дня, в офисе принимают терапевт и массажист; – возможность работать удалённо и по желанию посещать комфортный офис в Москве или Санкт-Петербурге. Скорее откликайтесь!

⚙️ Bash Reference Manual ✔️Фундаментальное руководство от GNU, которое поможет освоить Bash или подтянуть свои знания, если В
⚙️ Bash Reference Manual ✔️Фундаментальное руководство от GNU, которое поможет освоить Bash или подтянуть свои знания, если Вы ранее уже приступали к изучению. 🖼️ Перейти на сайт 🔨 bash_help

🚀 Только 48 часов! Получите лучшие IT-ресурсы абсолютно БЕСПЛАТНО TechVibe временно открывает доступ к уникальным материалам
🚀 Только 48 часов! Получите лучшие IT-ресурсы абсолютно БЕСПЛАТНО TechVibe временно открывает доступ к уникальным материалам. Не упустите свой шанс! Что вас ждет: 👇🏻 1️⃣ Эксклюзивные курсы и книги 2⃣ Удобные шпаргалки для эффективного кодирования 3⃣ 100 разобранных вопросов с собеседований 4⃣ Готовые скрипты для ваших проектов ⏰ Материалы будут удалены через 48 часов! Действуйте сейчас, чтобы не пропустить эту уникальную возможность Подписывайтесь на ➡️ TechVibe и получите доступ к лучшим IT-ресурсам прямо сейчас P.S.: Вся нужная инфа уже в закрепе канала. Не стесняйся, сделай первый шаг!

⚙️ Как ускорить работу в командной оболочке Bash ✔️10 команд Bash, которые помогут вам ускорить работу в терминале. ▶️1. Испо
⚙️ Как ускорить работу в командной оболочке Bash ✔️10 команд Bash, которые помогут вам ускорить работу в терминале. ▶️1. Используйте Control + L для очистки экрана и Control + D для выхода Для очистки экрана терминала мы вводим в командной строке clear, для выхода вводим exit. Удобнее же очищать экран нажатием Ctrl + l ( ⌘ + l ), а закрывать терминал сочетанием Ctrl + d (⌘ + d). ▶️2. Используйте nohup для порождения процессов, не завершающихся с сеансом терминала Иногда я запускаю Firefox из командной строки:
firefox https://freecodecamp.org
Но в таком случае при выходе из терминала браузер вылетает. Избежать этого помогает команда nohup
nohup firefox https://freecodecamp.org
Теперь при закрытии терминала Firefox не вылетает, но вылетает моя вкладка. Лечится это запуском Firefox в качестве фонового процесса с помощью флага &:
nohup firefox https://freecodecamp.org &
Теперь при выходе из терминала вкладки не страдают. ▶️3. Используйте для завершения процессов pkill С помощью команды killall можно завершать процесс по его имени:
killall firefox
Но удобнее использовать для этого pkill, которая позволяет вводить лишь часть имени:
pkill fire*
▶️4. Добавляйте команду time, чтобы узнать скорость выполнения программы Хотите узнать, как долго выполняется некая программа в оболочке? Просто добавьте в начале команды запуска time:
time gcc -g *.c
▶️5. Просматривайте имя дистрибутива Linux с помощью cat /etc/*rel* Выполнение uname -a выводит информацию о системе. Хотите перепроверить, в каком дистрибутиве работаете? Просто наберите в оболочке cat /etc/*rel* ▶️6. Для поиска и замены в текстовых файлах используйте sed Нужно заменить множественные вхождения слова в текстовом файле? Используйте команду sed:
sed s'/apples/oranges/g' myfile.txt
В этом случае все вхождения слова apples будут заменены на oranges. Если нужно заменить лишь первое вхождение в каждой строке, просто уберите суффикс g в конце команды:
sed s'/apples/oranges/' myfile.txt
Символ g означает «глобально». В качестве разделителя выступает прямой слэш, хотя по факту можно использовать любой другой символ
sed s'_apples_oranges_'g ` myfile.txt
Простое использование sed производит замену только при выводе, оставляя исходный файл незатронутым. Для изменения самого файла используйте -i
sed -i s'_apples_oranges_g' myfile.txt
▶️7. Просматривайте публичный IP компьютера с помощью curl Существует два типа IP-адресов: закрытые и публичные. Закрытый IP присваивается системой, и его можно уточнить с помощью команды ifconfig. Если же вы хотите узнать публичный IP вашего ПК, который провайдер присваивает вашему интерфейсу, то при подключённом интернете просто выполните в командной строке: curl ifconfig.me ; echo или curl ifconfig.co ; echo ▶️8. Используйте для обратного поиска Ctrl + R (⌘ + R) При нажатии клавиши «вверх» отображается последняя введённая команда. При выполнении history выводятся все введённые команды из истории Bash. Однако удобнее нажать Ctrl + r (⌘ + r) и начать набирать команду, на что оболочка начнёт предлагать автозаполнение из истории, и вам останется нажать «Ввод», когда будет найдена искомая команда. 🖼️ Дочитать статью 🔨 bash_help

Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человек
Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает? Психолог взрослого человека - канал для айтишников, у которых периодически опускаются руки и отключается мозг, ибо переработки и постоянная тревожность не приводят к другим исходам. ✔️ Как научиться отвлекаться от работы и отдыхать? ✔️ Как совместить кучу рабочих задач и время с семьей? ✔️ Как справиться с прокрастинацией? ✔️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит? Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни! 👨🏻‍💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс.

👉 Подборка видеокурсов по Bash для новичков ✔️Всё еще испытываете трудности с написанием скриптов, потому что изучение было
👉 Подборка видеокурсов по Bash для новичков ✔️Всё еще испытываете трудности с написанием скриптов, потому что изучение было неструктурированным или же просто хотели бы освежить знания и восполнить недостающие пробелы? ➡️ Собрали вам в одном месте видеокурсы с канала, чтоб каждый мог выбрать то, что придется по душе. 👉 Linux Bash. Курс для начинающих 👉 Bash для тестировщика 👉 Основы работы с терминалом и BASH 👉 Уроки по Bash скриптам 👉 Bash Basics 👉 Bash от канала РЕД ОС 👉 Bash от канала dmdev 🔨 bash_help

🔥 Свежие вакансии для разработчиков, которых нет на hh Выбери своё направление и подпишись 🔽 1. Python 2. Java 3. React 4.
🔥 Свежие вакансии для разработчиков, которых нет на hh Выбери своё направление и подпишись 🔽 1. Python 2. Java 3. React 4. JavaScript 5. Web 3.0 6. Back end 7. Data Engineer 8. IT продажи 9. IT поддержка 10. PHP 11. 1С  12. GO 13. QA 14. Flutter Полный список каналов IT-вакансий: @best_itjob и @it_rab

⚙️ Шифрование файла или каталога Shell Scripts ✔️Bash скрипт ниже предназначенн для создания простого интерфейса для шифрован
⚙️ Шифрование файла или каталога 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

Вебинар QoS в ESR 🗓 Дата: 18.10.2024 🕒 Время: 14:00 по МСК Программа вебинара: - Базовый и расширенный QoS - Механизмы клас
Вебинар QoS в ESR 🗓 Дата: 18.10.2024 🕒 Время: 14:00 по МСК Программа вебинара:  - Базовый и расширенный QoS - Механизмы классификации трафика - Доступные алгоритмы организации очередей - Policing и Shaping Практичекая часть: - Практические тесты с применением генератора трафика Cisco TRex 👉 Регистрация 👤 СпикерАлексей Листаров — инженер с многолетним опытом работы в крупном операторе связи. Сертифицированный преподаватель Академии Eltex.  #eltex #eltexcm #webinar #esr  @eltexcm Реклама. ООО "ЭЛТЕКС КОММУНИКАЦИИ". ИНН 7714966730.

⚙️ Некоторые приемы защиты программ на bash ✔️Сокрытие (шифрование) пароля в теле bash-программы ▶️Для начала необходимо уста
⚙️ Некоторые приемы защиты программ на 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

📚Библиотека промптов для самых разных задач и профессий Внутри - сотни проверенных запросов для ChatGPT, которые удобно разб
📚Библиотека промптов для самых разных задач и профессий Внутри - сотни проверенных запросов для ChatGPT, которые удобно разбиты по категориям (от домашнего обучения до маркетинга и разработки) Библиотека постоянно обновляется, а доступна она здесь - Нейрон Сохраняй и пользуйся!💾

⚙️ 18 отборных однострочных команд Linux ✔️В этой статье описан ряд функциональных, полезных, а порой и опасных команд, чтобы
⚙️ 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

Большинство разработчиков стремится повысить свой грейд, но как и куда расти, если ты амбициозный мидл или уже синьор? Откуда
Большинство разработчиков стремится повысить свой грейд, но как и куда расти, если ты амбициозный мидл или уже синьор? Откуда брать насмотренность и опыт, если ты ограничен задачами своей компании, а одними статьями на Хабре проблему не решить? Чтобы расти в профессии и получать крутые офферы, разработчик может прокачать навык построения архитектуры. Он может собрать библиотеку из каналов, статей и видео или пройти полноценный курс. Курс «Архитектор ПО» от Практикума поможет развить навык решения архитектурных задач. Техлиды Яндекса и других компаний покажут противоположные архитектурные подходы. Благодаря этому разработчику не придётся учиться на своих ошибках — он научится на опыте коллег. За 6 месяцев курса он разработает и добавит в портфолио 5 архитектур. Курс подойдёт бэкенд-разработчикам, которые: — работают 2+ лет; — хотят развиваться на текущей позиции и повышать свой грейд; — хотят получить должность лида или архитектора ПО. Успейте записаться на ближайший поток по ссылке

⚙️ Объектно-ориентированное программирование на bash ✔️Оболочка bash не имеет возможностей создания объектов и работы с ними.
⚙️ Объектно-ориентированное программирование на 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

Скидка 35% раз, скидка 35% два, ПРОДАНО: аукцион выделенных серверов от Selectel Если вам нужны вычислительные мощности для в
Скидка 35% раз, скидка 35% два, ПРОДАНО: аукцион выделенных серверов от Selectel   Если вам нужны вычислительные мощности для ваших проектов, сейчас самое время арендовать сервер в Selectel по выгодной цене. Аукцион выделенных серверов — акция от Selectel, когда цена не растет, а снижается каждую секунду.   Ежедневно к заказу доступно более десятка готовых конфигураций с отличными скидками. Список серверов на аукционе и размер скидки постоянно обновляются, так что не упустите выгодное предложение, их быстро разбирают.   Почему стоит арендовать выделенный сервер в Selectel? - Серверы на базе процессоров Intel и AMD справятся с любыми нагрузками - Скидка аукциона закрепляется за вами и сохраняется навсегда - Безлимитный бесплатный интернет со скоростью 1 Гбит/сек - Защита от DDos атак входит в стоимость аренды - Полное соответствие стандартам 152-ФЗ   Все конфигурации протестированы и готовы к работе, на их запуск потребуется от 2 минут. Заказать инфраструктуру и управлять ею можно в одном окне браузера — через удобную панель.   Арендуйте выделенный сервер от Selectel по выгодной цене, пока это не сделал кто-то другой: https://slc.tl/06fgf Реклама АО «Селектел». ИНН: 7810962785 Erid: 2VtzqxgUA7L

⚙️ Пять терминальных программ для вывода информации о дистрибутиве Linux ➡️ Neofetch Простая утилита, написанная на Bash и пр
⚙️ Пять терминальных программ для вывода информации о дистрибутиве Linux ➡️ Neofetch Простая утилита, написанная на Bash и предназначенная для вывода информации о программном и аппаратном обеспечении вашего дистрибутива. «Выхлоп» приятен взгляду: выводится логотип вашего дистрибутива в формат ASCII и краткая информация о дистрибутиве. После первого запуска утилиты создается конфигурационный файл, в котором можно поменять логотип и вывод информации. «Выхлоп» утилит прост и понятен для любого пользователя. ➡️ Screenfetch Полезная консольная утилита также написанная на Bash, позволяющая выводить информацию о процессоре, видеокарте, потребляемой оперативной памяти, типе дистрибутива, версии ядра и иную информацию. В отличие от предыдущей утилиты Screenfetch не создает конфигурационный файл, содержание выводимой информации управляется посредством использования ключей. Чтобы посмотреть какие ключи можно использовать, введите команду с ключом -h (help). ➡️ Nerdfetch В отличие от предыдущих двух утилит, эта отличается минимализмом в плане выводимой информации. Она более для красоты «выхлопа», чем для его пользы и содержательности. Перед тем как использовать Nerdfetch необходимо установить в дистрибутив шрифты Nerd. Скачать нужные шрифты вы можете с официального сайта или использовать встроенный в систему пакетный менеджер. ➡️ Macchina Еще одна минималистичная утилита, выводящая информацию о дистрибутиве. В отличие от всех предыдущих она имеет встроенную поддержку тем и поддерживает кастомизацию через конфигурационный файл (прям как у Neofetch). С одной стороны это является преимуществом утилиты, но новичку нужно будет время, чтобы разобраться (при желании) в конфиге и настроить его под себя. ➡️ Pfetch Еще одна минималистичная утилитка, выводящая информацию о дистрибутиве. Настраивать вывод можно посредством изменения переменных окружения. Примеры конфигурирования разработчики приводят на официальной странице проекта в Github. 🖼️ Ссылка на источник 🔨 bash_help

✋ 14 октября (пн) приглашаем вас на встречу потенциальных докладчиков с Программным комитетом DevOpsConf 2025. Собираемся в 1
14 октября (пн) приглашаем вас на встречу потенциальных докладчиков с Программным комитетом DevOpsConf 2025.  Собираемся в 19.00 Мск.  📌 Форматы: Офлайн. Москва, офис Газпромбанк, Коровий Вал 5, БЦ «Оазис». Онлайн. Ссылка придёт после регистрации на встречу, участие свободное. 😎 От Программного комитета во встрече будут участвовать: Дмитрий Зайцев (Flocktory) — руководитель Программного комитета DevOpsConf, Александр Коротков (Т-Банк), Игорь Курочкин (Enabling.team).  ✍ Обсудим новости и планы, поговорим о том, что болит и волнует, обменяемся идеями. Вы узнаете актуальна ли ваша тема и нет ли похожих докладов от других спикеров, а также мы расскажем, как проходит процесс отбора заявок в программу и подготовка принятых докладов к выступлению. Зарегистрироваться на встречу и подать заявку на доклад можно на сайте.  До встречи 14 октября! Ждём вас 🤝 Реклама. ООО "КОНФЕРЕНЦИИ ОЛЕГА БУНИНА". ИНН 7733863233.

⚙️ Фейковый SMTP-сервер на bash ✔️Когда вы разрабатываете веб-приложение, вам, возможно, надо будет отправлять какую-то элект
⚙️ Фейковый 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