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

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
⚙️ Ресурс, описывающий самые популярные инструменты 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.
⚙️ Шифрование файла или каталога 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
🔥 Свежие вакансии для разработчиков, которых нет на 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👉 Подборка видеокурсов по Bash для новичков

✔️Всё еще испытываете трудности с написанием скриптов, потому что изучение было неструктурированным или же просто хотели бы освежить знания и восполнить недостающие пробелы?

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

👉 Linux Bash. Курс для начинающих

👉 Bash для тестировщика

👉 Основы работы с терминалом и BASH

👉 Уроки по Bash скриптам

👉 Bash Basics

👉 Bash от канала РЕД ОС

👉 Bash от канала dmdev

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

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

✔️ Как научиться отвлекаться от работы и отдыхать?
✔️ Как совместить кучу рабочих задач и время с семьей?
✔️ Как справиться с прокрастинацией?
✔️ Как не растерять запал, даже если начальник и коллеги 💩 и кажется, что ничего не выходит?

Подписывайтесь на канал @vadimpetrov_psy и научитесь работать без упахивания, выгорания и ущерба для личной жизни!

👨🏻‍💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс.
⚙️ Как ускорить работу в командной оболочке 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
Please open Telegram to view this post
VIEW IN TELEGRAM
🚀 Только 48 часов! Получите лучшие IT-ресурсы абсолютно БЕСПЛАТНО

TechVibe временно открывает доступ к уникальным материалам. Не упустите свой шанс!

Что вас ждет: 👇🏻

1️⃣ Эксклюзивные курсы и книги

2⃣ Удобные шпаргалки для эффективного кодирования

3⃣ 100 разобранных вопросов с собеседований

4⃣ Готовые скрипты для ваших проектов

Материалы будут удалены через 48 часов!

Действуйте сейчас,
чтобы не пропустить эту уникальную возможность

Подписывайтесь на ➡️ TechVibe и получите доступ к лучшим IT-ресурсам прямо сейчас

P.S.: Вся нужная инфа уже в закрепе канала. Не стесняйся, сделай первый шаг!
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Bash Reference Manual

✔️Фундаментальное руководство от GNU, которое поможет освоить Bash или подтянуть свои знания, если Вы ранее уже приступали к изучению.

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Хотели бы присоединиться к проекту, который приносит пользу миллионам пользователей? 🚀

В Авито актуальна вакансия в команду, которая занимается разработкой продукта по управлению виртуальной инфраструктурой:

1️⃣ SRE инженер в команду Dev

Также в поиске инженера команда инфраструктуры, которая обеспечивает весь фундамент Авито (от серверов до внутреннего облака):

2️⃣ Системный инженер HPC кластеров

А ещё есть вакансия в команде, которая занимается развитием и администрированием систем, повышающих безопасность компании, на основе Infrastructure as Code подхода:

3️⃣ DevOps Engineer

Вас будут ждать:

– достойная зарплата, размер которой обсуждается на собеседовании;
– прозрачная система премий;
– интересные и важные задачи на очень большом проекте;
– передовые технологии и подходы, возможность пробовать новое;
– опытные и заинтересованные коллеги, готовые оказать поддержку;
– мощное железо, дополнительные мониторы и всё, что нужно для продуктивной работы;
– личный бюджет на обучение, который можно тратить на книги, курсы и конференции;
– забота о здоровье: ДМС со стоматологией с первого дня, в офисе принимают терапевт и массажист;
– возможность работать удалённо и по желанию посещать комфортный офис в Москве или Санкт-Петербурге.

Скорее откликайтесь!
⚙️ Генератор паролей на 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
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ 5 вариантов генерации конфигурационных файлов Shell-скриптами

✔️Подготовка конфигурационных файлов из шаблонов — весьма распространённая задача системного администрирования. Решать её можно разными способами, каждый из которых хорош по-своему, здесь же мы рассмотрим, как это сделать с помощью Shell-скриптов.

▶️Наше исследование проведём в виде решения типовой задачи, в которой необходимо создать Shell-скрипт, генерирующий конфигурационный файл с настройками сетевого стека узла. Формат конфигурационного файла соответствует /etc/network/interfaces. Примем, что настраиваемый узел обладает только одним сетевым интерфейсом с именем «ens33». Скрипт должен обеспечивать возможность указания статического IP-адреса, маски подсети и шлюза по умолчанию.

▶️С учётом вышесказанного получаем следующий шаблон конфигурационного файла:
auto ens33
iface ens33 inet static
address ЗНАЧЕНИЕ_IP_АДРЕСА
netmask ЗНАЧЕНИЕ_МАСКИ_СЕТИ
gateway ЗНАЧЕНИЕ_ШЛЮЗА_ПО_УМОЛЧАНИЮ

▶️Для дальнейших примеров договоримся, что IP адрес установим в 192.168.0.10, маску подсети 255.255.255.0, а шлюз по умолчанию 192.168.0.1.

➡️ Размещение шаблона внутри скрипта, формирование вывода стандартными средствами

Самый простой вариант решения задачи, которым обычно пользуются начинающие разработчики, — это поместить шаблон в тело скрипта и использовать локальные переменные в качестве подстановочных значений.
#!/bin/bash

IP="192.168.0.10"
NETMASK="255.255.255.0"
GATEWAY="192.168.0.1"

TEMPLATE="$(
cat << EOF
auto ens33
iface ens33 inet static
address $IP
netmask $NETMASK
gateway $GATEWAY
EOF
)"

echo -e "$TEMPLATE"

▶️Результат работы скрипта (как и всех следующих) будет выглядеть так:
auto ens33
iface ens33 inet static
address 192.168.0.10
netmask 255.255.255.0
gateway 192.168.0.1

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

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

➡️ Размещение шаблона во внешнем файле и его заполнение с помощью envsubst
Создадим файл шаблон «template.txt» следующего содержания:
auto ens33
iface ens33 inet static
address $IP
netmask $NETMASK
gateway $GATEWAY

▶️Для заполнения шаблона воспользуемся утилитой envsubst, которая ищет во входящем потоке строки вида $имя_переменной или ${имя_переменной} и заменяет их на значение соответствующих переменных. Важно отметить, что для работы этой утилиты переменные должны быть отмечены ключевым словом export. С учётом всего вышесказанного наш скрипт будет выглядеть следующим образом:
#!/bin/bash

export IP="192.168.0.10"
export NETMASK="255.255.255.0"
export GATEWAY="192.168.0.1"

envsubst < template.txt


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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM