BashMaster @bash_help Channel on Telegram

BashMaster

@bash_help


Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов.

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help

BashMaster (Russian)

BashMaster - канал под названием @bash_help предоставляет удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Если вы ищете полезные советы, трюки и решения проблем, связанных с работой в терминале, то этот канал идеально подходит для вас. Здесь вы найдете актуальные инструменты и рекомендации, которые помогут вам улучшить свои навыки в области консольного взаимодействия. Кроме того, канал предлагает рекламные возможности для тех, кто хочет продвигать свои продукты или услуги среди целевой аудитории разработчиков, девопсов и системных администраторов. Для размещения рекламы обращайтесь к @Kone4noVasya. Присоединяйтесь к каналу BashMaster и узнавайте новое о консольных наработках каждый день! Канал также доступен на бирже: https://telega.in/c/bash_help

BashMaster

10 Jan, 15:49


⚙️ Inshellisense

✔️Инструмент, обеспечивающий автозаполнение оболочек в стиле IDE

▶️Он поддерживает более 600 инструментов командной строки. Его можно установить с помощью npm.

➡️ Поддерживает такие оболочки, как bash, zsh, fish, pwsh и powershell.

🐙 Перейти на Github

🔨 bash_help

BashMaster

08 Jan, 10:10


⚙️ Скрипт для очистки кэша оперативной памяти

✔️Скрипт проверяет объём кэша в оперативной памяти и при превышении в 1Gb предлагает запустить очистку.

#!/bin/bash
# Скрипт проверяет объём кэша в оперативной памяти и при превышении в 1Gb предлагает запустить очистку

cache=$(free -m | grep Mem | awk '{print $6}')

echo "Кэшированно $cacheМб"

if [ $cache -ge 1000 ]
then
echo "Кэш более одного гигабайта"
echo ""
read -p "Почистить кэш? Y/n: " ansver
case $ansver in
[y,Y])
echo "Для запуска скрипта очистки, введите пароль SUDO пользователя"
sudo echo "Было занято в кеше ОЗУ"
free -m
sync
echo 1 | sudo tee -a /proc/sys/vm/drop_caches
sync
echo 2 | sudo tee -a /proc/sys/vm/drop_caches
sync
echo 3 | sudo tee -a /proc/sys/vm/drop_caches
echo "Стало свободно в ОЗУ"
free -m;;
[n,N])
echo "Вы отказались от чистки кэша";;
esac
else
echo "Достаточно свободной памяти"
fi


🐙 Перейти на Github

🔨 bash_help

BashMaster

07 Jan, 16:09


⚙️ Перенос дампа таблицы с одного mysql сервера на другой

✔️Возникла небольшая прикладная задача. Нужно было периодически с одного mysql сервера перекидывать дамп одной таблицы из базы на другой сервер в такую же базу. Решений этой задачи может быть много. Я взял и решил в лоб набором простых команд на bash. Делюсь с вами итоговым скриптом. Даже если он вам не нужен в рамках этой задачи, то можете взять какие-то моменты для использования в другой.
#!/bin/bash

# Дамп базы с заменой общего комплексного параметра --opt, где используется ключ --lock-tables на набор отдельных ключей, где вместо lock-tables используется --single-transaction
/usr/bin/mysqldump --add-drop-database --add-locks --create-options --disable-keys --extended-insert --single-transaction --quick --set-charset --routines --events --triggers --comments --quote-names --order-by-primary --hex-blob --databases database01 -u'userdb' -p'password' > /mnt/backup/sql/"$(date +%Y-%m-%d)"-database01.sql

# Из общего дампа вырезаю дамп только данных таблицы table01. Общий дамп тоже оставляю, потому что он нужен для других задач
/usr/bin/cat /mnt/backup/sql/"$(date +%Y-%m-%d)"-database01.sql | /usr/bin/awk '/LOCK TABLES `table01`/,/UNLOCK TABLES/' > /mnt/backup/sql/"$(date +%Y-%m-%d)"-table01.sql

# Сжимаю оба дампа
/usr/bin/gzip /mnt/backup/sql/"$(date +%Y-%m-%d)"-database01.sql
/usr/bin/gzip /mnt/backup/sql/"$(date +%Y-%m-%d)"-table01.sql

# Копирую дамп таблицы на второй сервер, аутентификация по ключам
/usr/bin/scp /mnt/backup/sql/"$(date +%Y-%m-%d)"-table01.sql.gz [email protected]:/tmp

# Выполняю на втором сервере ряд заданий в рамках ssh сессии: распаковываю дамп таблицы, очищаю таблицу на этом сервере, заливаю туда данные из дампа
/usr/bin/ssh [email protected] '/usr/bin/gunzip /tmp/"$(date +%Y-%m-%d)"-table01.sql.gz && /usr/bin/mysql -e "delete from database01.table01; use database01; source /tmp/"$(date +%Y-%m-%d)"-table01.sql;"'

# Удаляю дамп
/usr/bin/ssh [email protected] 'rm /tmp/"$(date +%Y-%m-%d)"-table01.sql'

▶️Скрипт простой, можно легко подогнать под свои задачи.

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

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

🔨 bash_help

BashMaster

07 Jan, 12:51


Освой сети и командную строку с лучшими обучающими каналами

🤩 Network Admin - обучающий канал по сетевым технологиям

🤩 Network Admin | Guides - канал, где рассказывают полезную информацию про Windows/Linux

📱 BashTex - обучение работе с командной строкой

BashMaster

06 Jan, 10:17


⚙️ Управление Linux-сервером — самая ценная инвестиция

✔️ В эпоху облаков настройка Linux-сервера своими руками кажется неким вымирающим искусством. Для непосвящённого человека даже bash-скрипты выглядят как заклинания, а коллеги проникаются уважением к сисадмину, как древние индейцы к своему шаману…

▶️Сейчас это «древнее искусство» вновь стало актуальным. История идёт по кругу — всё старое возвращается в новом виде. Запуск сервера на своём хостинге стал хорошей альтернативой облакам. Этому есть ряд причин, которые мы не будем подробно разбирать, только повторим вкратце: безопасность, свобода, контроль над своими данными, экономия финансов.

➡️ Содержание статьи:
▶️Старое или новое. Контроль или зависимость
▶️Сисадмины превратились в девопсов
▶️Потеря компетенций
▶️Базовые знания

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

🔨 bash_help

BashMaster

06 Jan, 07:04


👎🏼 Все время просиживать за работой, общаться только с коллегами и начальником

👍🏼 Посещать IT-мероприятия, перенимать опыт гигантов индустрии, попасть в комьюнити лучших спецов

Все твои коллеги уже давно подписались на канал IT-мероприятия России и получают самые актуальные анонсы онлайн и оффлайн событий.

— Форумы и конференции
— Митапы и вебинары
— Хакатоны и олимпиады

Присоединяйся и выбирай, что тебе интересно - в канале https://t.me/iteventsrus собраны только лучшие мероприятия для тех, кто хочет быть лучшим из лучших.

IT мероприятия России / ITMeeting / IT events

BashMaster

03 Jan, 14:24


⚙️ HestiaCP — бесплатная панель управления сервером с открытым исходным кодом

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

➡️ Некоторые возможности HestiaCP:
▶️добавление пользователей панели с определённым набором прав
▶️добавление доменов и управление DNS-записями
▶️поддержка SSL-сертификатов от Let`s Encrypt
▶️создание почтовых ящиков
▶️управление базами данных
▶️работа с файлами во встроенном файловом менеджере
▶️создание CRON-задач
▶️резервное копирование данных
▶️ежемесячная статистика панели

➡️ Чтобы запустить установку HestiaCP с помощью Bash, нужно выполнить команду:
bash hst-install.sh. 

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

▶️Пример команды для автоматической установки:
bash hst-install.sh -f -y no -e [email protected] -p p4ssw0rd -s hostname.domain.tld

▶️Для просмотра списка доступных опций можно запустить команду:
 bash hst-install.sh -h

▶️Установщик нужно запускать от имени пользователя root, прямо из терминала или удалённо, через SSH

🐙 Перейти на Github

🔨 bash_help

BashMaster

03 Jan, 07:29


✔️ Научим писать плейбуки и модули ✔️

Один пропущенный шаг — и конфигурация ломается. Члены команды выполняют задачи по-своему, документация не помогает. Добавление новых серверов — это боль и часы работы.

Как этого избежать? Мы научим вас работать с Ansible, чтобы вы смогли:

Настроить автоматизацию: один playbook — и ваши сервера настраиваются в считаные минуты.

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

Масштабировать в одно касание: развёртывание сотен серверов — больше не головная боль.

Экономить время: больше времени на стратегические задачи, меньше — на рутину.

Освоить лучшие практики на курсе «Ansible: Infrastructure as Code» –
по ссылке.
Старт 20 января.

erid: 2W5zFJNU7Xv

BashMaster

31 Dec, 14:08


⚙️ Используй новогодние выходные наилучшим образом!

Изучай новые технологии или закрой пробелы в знаниях по своему стеку.

🤩 Admin Books – техническая литература для сетевых и системных администраторов и ИБ специалистов.

Ссылка для своих: https://t.me/+uZU9Jq_qa_djOTcy

BashMaster

31 Dec, 09:05


⚙️ Список действий, если подозреваете, что ваш сервер был взломан

✔️Небольшой список действий, которые имеет смысл выполнить, если у вас есть подозрения на то, что ваш сервер был взломан тем или иным способом. То есть на нём исполняется вредоносный код. Чаще всего это нужно не для восстановления работоспособности, а для расследования, чтобы понять, что конкретно случилось. Если сервер был скомпрометирован, лучше его полностью переустановить, перенеся полезную нагрузку.

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

▶️Можно посмотреть список изменённых файлов за последнее время. Не факт, что поможет, так как изменить дату модификации файла не сложно, но тем не менее, это может помочь:
# find /var/www/site -type f -mtime -30 ! -mtime -1 -printf '%TY-%Tm-%Td %TT %p\n' | sort -r

Тут мы выводим все изменённые файлы за последние 30 дней, кроме сегодняшнего и сортируем их по дате изменения от более свежей к старой. Если список большой, лучше сразу его в файл отправить и анализировать там. Это, кстати, полезная команда именно в таком виде и выводе.

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

▶️Не часто, но иногда можно что-то увидеть в истории shell команд или истории команд клиентов СУБД:
➡️ # cat ~/.bash_history
➡️ # cat ~/.mysql_history
➡️ # sudo -u postgres psql
➡️ # \s

▶️Имеет смысл проверить целостность исполняемых файлов согласно эталонным хеш-значениям из DEB и RPM пакетов.
➡️ # dpkg —verify
➡️ # rpm -Va

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

▶️Проверяем прослушиваемые приложениями порты и исходящие подключения:
➡️ # ss -tulnp | column -t
➡️ # ss -ntu

▶️На всякий случай можно посмотреть и список процессов. Иногда там и вручную глаз за что-то зацепится. Майнеров сразу будет видно.
➡️ # ps axf

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

🔨 bash_help

BashMaster

31 Dec, 05:59


🔥 Ты готов к РЕВОЛЮЦИИ? Тогда тебе точно сюда!

В этом канале не просто обсуждают Web3/4/5, блокчейн и крипту — здесь строят будущее! 🌐 Ты не только узнаешь, как создать смарт-контракт на Solidity, но и получишь реальные инструменты для работы с блокчейном, DeFi и DAO. Мы не рассказываем, как это делать, а показываем! 🚀

🚨 Что будет на канале?

Пошаговые инструкции по созданию смарт-контрактов и их деплою. Без воды, только полезная информация.

Как сделать безопасный криптокошелёк и работать с токенами.

Реальные проекты и решения для DeFi.

Всё, что нужно знать о DAO и их развитии.

И многое другое, что поможет тебе стать мастером Web3.

Забудь все скучные теории — здесь ты получишь только практику и реальные навыки! В следующем посте будем разбирать, как настроить свой первый смарт-контракт на блокчейне!

Присоединяйся, и вместе создадим БУДУЩЕЕ!

BashMaster

30 Dec, 16:25


⚙️ ️1000+ Bash скриптов для DevOps

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

➡️ Это большая подборка из скриптов, связанных с настройкой и управлением AWS, GCP, Kubernetes, Docker, PostgreSQL, MySQL, Hive, Impala, Kafka, Hadoop, Jenkins, GitHub, GitLab, BitBucket, Azure TeamCity, Spotify, LDAP, Python и это далеко не полный список.

▶️Есть здесь даже скрипты для конфигурирования .bashrc, .vimrc, .gitconfig, .screenrc, tmux.

🐙 Перейти на Github

🔨 bash_help

BashMaster

30 Dec, 12:45


В России можно посещать бесплатные IT-мероприятия хоть каждый день: как оффлайн, так и онлайн.

Чтобы не пропустить полезные — сохраните канал @FreeItEvent.

Анонсы вебинаров, хакатонов, конференций, мастер-классов и других событий в IT. Ивенты от гигантов индустрии и лучших специалистов в сфере IT.

Всё публикуют здесь.

BashMaster

28 Dec, 16:05


⚙️ Шпаргалка по Bash — инфографика от sysexplore.com

✔️Это тщательно составленный и визуально приятный материал, который станет полезным как новичкам, так и опытным пользователям Bash.

➡️ Шпаргалка охватывает основы скриптинга, включая базовую терминологию, чтение параметров из файлов, обработку сигналов (например, SIGTERM) и многое другое.

🔨 bash_help

BashMaster

26 Dec, 11:45


⚙️ Fast cd menu

✔️ Скрипт на Bash, который поддерживает команду «c» в Bash и показывает историю cd в виде меню.

➡️ Пример использования:
▶️показать меню истории cdc
▶️перейти на вторую папку в истории cdc 2
▶️перейти в папку, имя которой содержит строку test, где «name» — имя папки, а не полный путь — c test.

🐙 Перейти на Github

🔨 bash_help

BashMaster

26 Dec, 08:30


infosec - один из самых ламповых каналов по информационной безопасности, где говорят об истории ИТ, публикуют актуальные новости и пишут технический материал по разным темам:

- Как зарождалась Флибуста?
- Сервисы для обеспечения безопасности в сети;
- Каким образом "компьютерные мастера" обманывают своих клиентов?
- Бесплатный бот, который проверит файлы на предмет угроз более чем 70 антивирусами одновременно.

А еще у нас часто проходят розыгрыши самых актуальных и новых книг по ИБ. Так что присоединяйся, у нас интересно!

BashMaster

25 Dec, 13:35


⚙️ Как настроить цвета и содержимое Bash в командной строке терминала Linux

✔️Сегодня Bash является оболочкой по умолчанию в большинстве (если не всех) современных дистрибутивов Linux. Однако вы могли заметить, что цвет текста в терминале и содержимое Bash запроса могут отличаться в зависимости от дистрибутива.

Если вам интересно, как настроить этот параметр для лучшей читабельности или просто у вас появилось такая прихоть, дочитайте до конца — в этой статье мы объясним, как это сделать.

➡️ Переменная окружения PS_ Bash
▶️Командная строка и внешний вид терминала определяются переменной среды PS1. Согласно странице man Bash, PS1 представляет собой основную строку, которая отображается, когда оболочка готова к чтению команды.

▶️Допустимый контент в PS1 состоит из нескольких специальных символов с обратным слэшем, значение которых указано в разделе PROMPTING на странице руководства.

▶️Чтобы стало яснее, давайте выведем текущее содержимое PS1 в нашей системе (в вашем случае результат может выглядеть иначе):
$ echo $PS1

➡️ Настройка формата PS1
▶️Согласно разделу PROMPTING на странице руководства, ниже приведено значение каждого специального символа:
\u: имя пользователя (текущего пользователя).
\h: имя хоста до первой точки (.).
\W: базовое имя текущего рабочего каталога, с $HOME (сокращенно тильдой ~).
\$: если текущий пользователь root, пропишите «#», в противном случае «$«.

▶️Например, мы можем захотеть добавить \! если мы хотим отобразить номер истории текущей команды или \H, если мы хотим отобразить полное доменное имя вместо короткого имени сервера.

▶️В следующем примере мы импортируем обе опции в нашу текущую среду, выполнив следующую команду:
PS1="[\u@\H \W \!]\$"

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

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

▶️Мы будем использовать специальный символ \e в начале и m в конце, чтобы указать, что далее прописана последовательность цветов.

▶️В этой последовательности три значения (фон, формат и передний план) разделяются запятыми (если значение не задано по умолчанию).

▶️Кроме того, поскольку диапазоны значений отличаются друг от друга, не имеет значения, какой из них (фон, формат или передний план) вы указываете первым.
PS1="\e[40;11;32m[\u@\h \W]$ "


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

▶️Чтобы сделать эти изменения постоянными, вам нужно будет добавить следующую строку ~/.bashrc или
~/.bash_profile в зависимости от вашего дистрибутива:
PS1="\e[40;11;32m[\u@\h \W]$ "


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

🔨 bash_help

BashMaster

25 Dec, 10:31


Мало разработать хороший продукт — важно защитить его от кибератак

Регуляторы требуют повышения киберустойчивости ПО, так что навыки информационной безопасности — маст хэв для развития карьеры в разработке. Получить их можно на совместном курсе ВШЭ и Нетологии «DevSecOps: практика безопасной разработки» За 5 месяцев вы научитесь:

🛡Понимать принципы безопасной разработки, внедрять подходы SSDLC, DevSecOps.
🛡Моделировать угрозы и оценивать риски.
🛡Применять в работе инструменты безопасности — GitLab CI и ArgoCD.
🛡Разбираться в нормативных требованиях и стандартах: ISO, NIST, OWASP и других.

Вы сможете выстраивать защиту от угроз на всех этапах и получите диплом ВШЭ. Для обучения понадобятся базовые знания Linux и Python, на старте вам предложат тест и, при необходимости, выравнивающий модуль.

Используйте промокод DEVSECOPSHSE на скидку 10 000 рублей до 29 декабря ➡️ https://netolo.gy/dLXi

Реклама. ООО "Нетология". ИНН 7726464125 Erid 2SDnjcLV22w

BashMaster

24 Dec, 10:15


⚙️ Классификация команд оболочки bash в Linux

✔️В Linux существует огромное количество различных утилит, которые можно разделить на несколько типов.

➡️ Внешние команды
Это те, которые не встроены в оболочку Linux. Такие утилиты можно назвать небольшими отдельными программами, которые расположены в файловой системе. Зачастую, такие команды находятся в каталогах /bin или /usr/bin. Также к внешним командам можно отнести и исполняемые файлы.

▶️В Linux переменная $PATH содержит перечень путей, разделенных двоеточиями, по которым хранятся команды этого типа. Чтобы найти нужную утилиту, ОС ищет исполняемый файл в каталогах в порядке, установленном переменной. Если находит, запускает на выполнение. Если нет — проверяет следующие директории. Чтобы просмотреть текущее значение $PATH:
echo $PATH

▶️Чтобы узнать, какие команды содержатся в директории /bin:
ls /bin/

▶️К внешним командам можно отнести apt, awk, mount, mkdir и т. п.

➡️ Псевдонимы
▶️Это ярлык, ссылающийся на команду. Псевдоним заменяет строку, вызывающую команду в Linux, другой строкой, заданной пользователем. По умолчанию в системе существует несколько автоматически созданных псевдонимов. Чтобы узнать список всех псевдонимов, введите команду alias

▶️Разберем один из псевдонимов — alias la='ls -A':

alias — указывает, что команда является псевдонимом;
la — название псевдонима;
ls -A — полная команда, которую заменяют псевдонимом.

▶️Псевдонимы бывают двух видов:
временные — те, которые будут действовать только в текущей сессии терминала;
постоянные — те, которыми можно пользоваться на постоянной основе.
▶️Чтобы создать новый временный псевдоним:
alias name='full_command'

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

➡️ Зарезервированные слова
▶️Это комбинации символов, которые имеют особое значение для оболочки. Они используются для составления больших и сложных команд в терминале:
! — логическое НЕ;
case, esac — используются для создания многосторонних условных конструкций;
coproc — создает со-процесс;
do, done — используются для построения циклов;
elif — часть конструкции if-else;
if, else — составные части конструкции if-else;
for, in — используются для создания цикла for;
function — объявляет функции в скриптах;
fi — указывает на конец внутреннего оператора if;
select — генерирует меню из списка элементов;
then — используется для разделения условия и команд, которые будут выполнены, если условие окажется истинным;
until — используется для создания цикла, который продолжает выполняться до тех пор, пока не будет выполнено определенное условие;
while — создает цикл while;
{, } — группируют команды вместе и создают командный блок;
time — используется для определения времени выполнения команды;
[[, ]] — используются для проверки условных выражений.

➡️ Функции оболочки
▶️Это способ группировки команд для последующего их выполнения. Они выполняются так же, как и обычные команды. Функции активно используются для создания различных скриптов. Структура функции оболочки bash в скрипте выглядит следующим образом:
function_name() {
command1
command2
...
}
function_name

▶️Создадим скрипт 123.sh, в котором напишем функцию для выполнения команд ls и ls -a. С помощью утилиты chmod разрешим выполнение файла для его владельца (u+x)

Чтобы запустить созданный скрипт, выполним команду:
./123.sh

Или:
sh 123.sh


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

▶️Самые известные:
pwd — выводит на экран название текущего каталога;
cd — позволяет переходить между каталогами;
echo — выводит на экран заданную строку текста.
Чтобы вывести на экран все встроенные в оболочку команды:
help

▶️Чтобы выяснить, является ли команда внутренней, используйте утилиту type с ее названием в качестве аргумента. К примеру — type pwd

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

🔨 bash_help

BashMaster

24 Dec, 07:15


Устали от ограничений и долгой настройки серверов? HSVDS поможет в работе!

Мы предлагаем быстрые VDS для разработчиков с безлимитным интернетом и удобной панелью управления.

А чтобы вы могли начать максимально быстро, мы подготовили предустановленный образ GitLab:

 Управление репозиториями кода для Git
 Система отслеживания задач
 Удобная Wiki для документации
 Мощный CI/CD пайплайн
 И многое другое для продуктивной работы всей команды!

HSVDS — это стабильность, готовые решения и свобода для ваших идей 💻

BashMaster

23 Dec, 09:54


⚙️ Тестирование канала с помощью Iperf

✔️Iperf - это инструмент для измерения и настройки производительности сети. Это кроссплатформенный инструмент, который может производить стандартизированные измерения производительности для любой сети. Iperf обладает клиентскими и серверными функциями и может создавать потоки данных для измерения пропускной способности между двумя концами в одном или обоих направлениях. Он был разработан командой поддержки распределенных приложений (DAST) Национальной лаборатории прикладных сетевых исследований (NLANR). Актуальная версия на сегодня - третья.

➡️ Описание Iperf
▶️Iperf мультиплатформенная программа, работающая в режиме клиент-сервер. Вы можете запустить сервер на Linux, а тестировать скорость, подключаясь к нему с Windows или Android. И наоборот. Достаточно при запуске выбрать режим, в котором он будет работать: сервер или клиент.

▶️Iperf - это программное обеспечение с открытым исходным кодом, написанное на C, и оно работает на различных платформах, включая Linux, Unix, Windows (либо изначально, либо внутри Cygwin), OpenBSD, NetBSD, Android, Solaris и другие дистрибутивы Linux.
Доступность исходного кода позволяет пользователю тщательно изучить методологию измерения.

▶️Iperf3 - это написанная с нуля программа, целью которой является создание меньшей и более простой базы кода и библиотечной версии функциональности, которую можно использовать в других программах. Он также включает в себя ряд функций, найденных в других инструментах, таких как nuttcp и netperf, но отсутствовавших в исходном iperf. К ним относятся, например, режим нулевого копирования и необязательный вывод в формате JSON. Обратите внимание, что iperf3 не имеет обратной совместимости с оригинальным iperf.
▶️Iperf - это широко используемый инструмент тестирования сети, который может создавать потоки данных TCP и UDP и измерять пропускную способность сети, доступной между клиентом и сервером. Он поддерживает настройку различных параметров, связанных с синхронизацией, буферами и протоколами (TCP, UDP, SCTP с IPv4 и IPv6). Для каждого теста он сообщает о пропускной способности, потерях и других параметрах.

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

🔨 bash_help

BashMaster

18 Dec, 16:55


⚙️ Бот для Telegram, предупреждающий о входе по SSH на сервер

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

➡️ Предварительные замечания
▶️Будем считать, что новый бот в Telegram уже создан, а его токен нам известен
▶️Считаем, что уже есть группа с оригинальным названием, в которую добавлен новый бот
Данная методика проверена на операционных системах Debian 11, Ubuntu 22.04. Также работает на Rocky 8.7 (а значит, и на AlmaLinux и RHEL).

➡️ Установка
▶️В случае, если установлена утилита git, установка проходит в одну команду
cd /opt/ && git clone https://github.com/MyTheValentinus/ssh-login-alert-telegram

▶️Если же у нас нет git, и его нельзя установить (да, бывает и такое), самостоятельно создаём три файла.
cd /opt

mkdir ssh-login-alert-telegram && cd ssh-login-alert-telegram/

touch alert.sh credentials.config deploy.sh

▶️Вставляем в alert.sh:

#!/usr/bin/env bash

. /opt/ssh-login-alert-telegram/credentials.config
for i in "${USERID[@]}"
do
URL="https://api.telegram.org/bot${KEY}/sendMessage"
DATE="$(date "+%d %b %Y %H:%M")"

if [ -n "$SSH_CLIENT" ]; then
CLIENT_IP=$(echo $SSH_CLIENT | awk '{print $1}')

SRV_HOSTNAME=$(hostname -f)
SRV_IP=$(hostname -I | awk '{print $1}')

IPINFO="https://ipinfo.io/${CLIENT_IP}"

TEXT="Connection from *${CLIENT_IP}* as ${USER} on *${SRV_HOSTNAME}* (*${SRV_IP}*)
Date: ${DATE}
More informations: [${IPINFO}](${IPINFO})"

curl -s -d "chat_id=$i&text=${TEXT}&disable_web_page_preview=true&parse_mode=markdown" $URL > /dev/null
fi
done


▶️Вставляем в deploy.sh:
#!/usr/bin/env bash

add_profiled(){
cat <<EOF > /etc/profile.d/telegram-alert.sh

bash $ALERTSCRIPT_PATH
EOF
}

add_zsh () {
cat <<EOF >> /etc/zsh/zshrc

bash $ALERTSCRIPT_PATH
EOF
}

ALERTSCRIPT_PATH="/opt/ssh-login-alert-telegram/alert.sh"

echo "Deploying alerts..."
add_profiled

echo "Check if ZSH is installed.."

HAS_ZSH=$(grep -o -m 1 "zsh" /etc/shells)
if [ ! -z $HAS_ZSH ]; then
echo "ZSH is installed, deploy alerts to zshrc"
add_zsh
else
echo "No zsh detected"
fi

echo "Success!"

▶️Вставляем в credentials.config:
USERID=(-97160441299)
KEY="573414141899:AAFxoC51krUaLEInlPGJwEEQICUp8QvVs99"

▶️Здесь USERID - это ID пользователя в Телеграм или ID канала; KEY - это токен нашего нового бота.

➡️ Внедрение
▶️Делаем файлы скриптов выполнимыми:
chmod 700 deploy.sh && chmod 700 alert.sh

▶️Одной командой единовременно проводим внедрение
bash deploy.sh

➡️ Использование
▶️Для проверки попробуем вручную запустить скрипт: ./alert.sh
В Telegram должно появиться сообщение о входе.
Выходит, всё сделано правильно, теперь мы будем всегда предупреждены, если кто-то зашёл на сервер.

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

🔨 bash_help

BashMaster

18 Dec, 13:46


SSH/SFTP/RDP/VNC-клиент МС22 — решение для удалённого управления и конфигурирования сетевого оборудования, сделанное с заботой об админах.
Отечественная замена популярных зарубежных программ (PuTTY, Xshell, KiTTY, SecureCRT, SmarTTY, MobaXterm и др.) и встроенных терминалов ОС.
Есть возможность работы в нескольких вкладках, подсветка синтаксиса, быстрые клавиши и готовые шаблоны, различные инструменты автоматизации и приятные мелочи (типа соблюдение стандарта FHS установочным пакетом).

Посмотреть и бесплатно потестировать можно тут - https://МС22.рф
В процессе обеспечим оперативную поддержку и гарантированно прислушаемся к обратной связи!

#реклама
О рекламодателе

BashMaster

18 Dec, 08:15


⚙️ NetAlertX

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

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

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

18 Dec, 05:01



🚀 Всё для сисадминов и директоров по ИТ – в одном месте!


Полезное:

Книга: Linux на примерах

Топовые репозитории GitHub

Выходим из VIM - 86 способов

Бэкап-инструменты с открытым исходным кодом: часть 1

Бэкап-инструменты с открытым исходным кодом: часть 2

Docker — большая подборка

Курс по Kubernetes

Самоучитель по CI/CD в K8s


Импортозамещение:

Облака на практике и в теории

Российская виртуализация: всё важное в одном посте

Тестирование 6 отечественных СЗИ

Что ждёт ИТ в 2024-2025 гг: софт, железо, инфобез


Инфобез:

Критическая информационная инфраструктура: важное

Защита персданных: полный перечень документов

Проверки по защите ПДн: Роскомнадзор, ФСТЭК, ФСБ

Защита от DDoS. Что делать, если атакуют прямо сейчас?

Почему защита от DDoS на уровне приложения может не сработать?


➡️ Присоединяйтесь к каналу для ДИТов


BashMaster

17 Dec, 10:35


⚙️ Bash: сочетания клавиш для повышения производительности

✔️Работа в среде командной строки, например, в сеансе Bash, может быть гораздо более продуктивной, чем использование графического пользовательского интерфейса. Вот набор сочетаний клавиш.

➡️ Содержание:
▶️Перемещение по командной строке
▶️Использование истории командной строки
▶️Использование аргументов из истории командной строки
▶️Управление историей командной строки
▶️Навигация по каталогам

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

🔨 bash_help

BashMaster

17 Dec, 07:25


🚀 Приглашаем на бесплатный урок "Повторители, мосты, хабы, медиаконвертеры и коммутаторы. Кто из них выжил и почему? И принципы их работы" 18 декабря в 20:00 (мск). https://otus.pw/wBud/

📌 Этот вебинар — часть курса "Специализация Network Engineer". Хотим предоставить вам возможность разобрать важные аспекты работы с сетями от эксперта ТАС вендора!

🤔 Что вас ждет:

- Разбор принципов работы таких устройств: повторители, мосты, хабы, медиаконвертеры и коммутаторы.
- Как эти устройства использовались в прошлом и какие из них актуальны для современных сетей.
- Сравнение разных типов устройств и их применения в реальных сетевых проектах.

👨‍🏫 Урок проведет Николай Колесов, сертифицированный CISCO специалист с богатым опытом работы (>18 лет) с сетевыми решениями. Работает с ведущими проектами и компаниями и обучает специалистов в области сетевых технологий.

Регистрация ограничена! https://otus.pw/wBud/?erid=LjN8K91RF

#реклама
О рекламодателе

BashMaster

16 Dec, 12:27


⚙️ Сканер tcp-портов на bash

✔️Когда вы работаете с серверами, периодически возникает необходимость посмотреть, какие порты открыты. Одно из лучших средств для этого — nmap, но он не всегда есть под рукой. Зато обычно под рукой есть командная оболочка bash. И ей как раз можно воспользоваться, чтобы написать собственный сканер портов. Не такой быстрый, конечно, но вполне пригодный для использования.

▶️В основе этого скрипта возможность bash отправлять на указанный хост и порт данные. Собственно, сам скрипт portscan.sh:
#!/bin/bash

if [ "$1" == "" ]
then
echo
echo This script scans TCP opened ports on IP or hostname
echo Usage : portscan.sh \ \[start-port\] \[end-port\]
echo start-port equals to 1 by default
echo end-port equals 1024 by default
echo
exit
fi

START_PORT=$2;[ -z "$START_PORT" ] && START_PORT=1
END_PORT=$3;[ -z "$END_PORT" ] && END_PORT=1024
echo Scanning $1 \(ports $START_PORT to $END_PORT\)

PORT_PROTOCOL="tcp"

scan_port(){
PORT_NUMBER=$1
PORT_SCAN_RESULT=`2>&1 echo "" > /dev/$PORT_PROTOCOL/$TARGET_NAME_OR_IP/$PORT_NUMBER | grep connect`
[ "$PORT_SCAN_RESULT" == "" ] && echo $PORT_NUMBER\/$PORT_PROTOCOL' 'open' '`grep $PORT_NUMBER/$PROTOCOL /etc/services | head -n1 | awk '{print $1}'`
}

TARGET_NAME_OR_IP=$1
echo 'PORT STATE SERVICE'

for PORT_NUMBER in `seq $START_PORT $END_PORT`
do
scan_port $PORT_NUMBER
done


▶️В качестве параметров скрипт может принимать от одного до трех параметров. Первый — имя или IP-адрес хоста, второй — начальный порт интервала сканирования, третий — конечный порт интервала сканирования. Если начальный и/или конечный порты не указаны, то выбираются 1 и 1024.

➡️ И результат работы скрипта:
$ ./portscan.sh 192.168.0.9
Scanning 192.168.0.9 (ports 1 to 1024)
PORT STATE SERVICE
21/tcp open ftp
25/tcp open smtp
53/tcp open domain
80/tcp open http
22/tcp open ssh
110/tcp open pop3
111/tcp open sunrpc
139/tcp open netbios-ssn
445/tcp open microsoft-ds


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

🔨 bash_help

BashMaster

16 Dec, 09:17


До сих пор не знаешь как управлять командной строкой?

📱 BashTex - обучающий канал по Linux и Bash с использованием самых лучших и эффективных практик. В канале ты найдешь множество полезной информации:

Быстрое создание пакетов файлов для тестирования
Настройка безопасного SSH-соединения
LDAP: зачем нужен и чем помогает
Мониторинг перебора паролей и блокировка учетных записей
Неочевидно полезные опции команды ls
Углубленное использование find

BashTex поможет прокачать твои скиллы!

Подписывайся - @bashtex

BashMaster

15 Dec, 14:20


Как копировать файлы и папки с исключениями: продвинутые трюки с cp

Иногда нужно скопировать содержимое папки, но исключить определённые файлы или папки. Классический cp это напрямую не поддерживает, но есть несколько хитростей, которые помогут справиться.

#### Пример 1: Копирование всего кроме определённых файлов
Если нужно скопировать всё, кроме файлов с расширением .log, воспользуйся этой командой:

find source_dir -type f ! -name '*.log' -exec cp --parents {} destination_dir/ \;


- find source_dir – ищет файлы в указанной папке.
- **! -name '*.log'** – исключает файлы с расширением .log.
- --parents – сохраняет оригинальную структуру папок.

#### Пример 2: Исключение целой папки
Чтобы пропустить определённую папку, например exclude_dir, используй:

find source_dir -path 'source_dir/exclude_dir' -prune -o -type f -exec cp --parents {} destination_dir/ \;


#### Пример 3: Использование простого скрипта
Вот пример простого скрипта, который копирует файлы и исключает определённые по шаблону:

#!/bin/bash
for file in $(find /путь/к/источнику -type f); do
if [[ "$file" != *исключение* ]]; then
cp --parents "$file" /путь/к/назначению
fi
done


- Заменяешь /путь/к/источнику на папку, откуда копируешь.
- Вместо *исключение* указываешь шаблон для исключения.
- Указываешь /путь/к/назначению, куда копировать.

Запусти этот скрипт, и он разберётся со всеми исключениями.


#### Пример 4: Копирование файлов больше определённого размера
Чтобы выбрать только файлы больше 100 МБ:

find source_dir -type f -size +100M -exec cp --parents {} destination_dir/ \;


На завтра у меня для тебя кое-что интересное: будем разбираться, как настроить KVM и QEMU для виртуализации. Но пока расскажи, что бы ты хотел автоматизировать или оптимизировать в своей работе? Может, я смогу помочь тебе с советом.
____________________

Дополнительный материал:
🧠 - Не трать время на логи! Вот как найти все медленные запросы за 1 минуту
🧠 - Как ускорить MySQL? Простые советы, чтобы твой сервер летал, как на стероидах
🧠 - Поднимем отказоустойчивое хранилище в Proxmox VE с Ceph

#Linux_Commands @LinuxSkill

BashMaster

13 Dec, 17:02


⚙️ Light Articles Technical Library — библиотека статей и заметок для разработчиков

✔️LATL — это сайт, на котором можно найти информацию о программировании на Bash, в том числе примеры программ на этом языке.

➡️ Содержание:
▶️Массивы в bash
▶️Циклы в bash практические примеры
▶️Операции сравнения в Bash
▶️BASH преобразование даты
▶️Условный оператор If/Then в Bash
▶️Удаленное выполнение команд и скриптов
▶️Сборник примеров программ на bash
▶️Некоторые приемы защиты программ на bash
▶️Селектор функций и проверка входных параметров (шаблон)
▶️Маленькие хитрости BASH
▶️Переменные в интерпретаторе bash
▶️BASH: перебор файлов в каталоге
▶️Until в bash
▶️declare и typeset: объявление переменных

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

🔨 bash_help

BashMaster

13 Dec, 13:45


✅️ GitHub теперь в Telegram!

Подписывайтесь: @GitHub

BashMaster

09 Dec, 10:55


⚙️ Осторожнее с редактированием bash-скриптов

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

🔨 bash_help

BashMaster

09 Dec, 07:35


⚠️ Проверьте эффективность IT-поддержки за 15 минут

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

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


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

⬇️ Получить чек-лист
@desnol_itiliumbot

BashMaster

06 Dec, 11:35


⚙️ Что означает двойной дефис (--) в Bash?

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

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

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

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

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

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

🔨 bash_help

BashMaster

06 Dec, 07:15


⚡️Истовый инженер теперь в Telegram!

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

— Что изучить про алгоритмы и структуры данных разработчикам на С++ ( читать )
— CodeChecker: анализируем большой проект на С++ быстро, эффективно и бесплатно ( читать )
— 5 способов писать эффективный код на Go: от нейминга переменных до архитектуры ( читать )
— Ужасно подробные ошибки в API: пишем инструмент для работы с ними на Go ( читать )

📝 и ещё 100+ полезных статей, лекций и кейсов от практиков

Подписываемся, чтобы не потерять полезный канал @ultimate_engineer

BashMaster

04 Dec, 10:45


⚙️ Как проверить загрузку процессора в командной строке Linux

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

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

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

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

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

🔨 bash_help

BashMaster

04 Dec, 07:35


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

Реклама, АО «Селектел», ИНН: 7810962785

BashMaster

03 Dec, 11:15


⚙️ SSHClick — SSH Config manager

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

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

03 Dec, 08:05


⚡️ 1000+ ГБ IT-контента уже ждут вашего внимания!

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

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

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

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

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

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

➡️ Ссылки действительны всего 48 часов, успей подписаться!

BashMaster

02 Dec, 10:45


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

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

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

🔨 bash_help

BashMaster

02 Dec, 07:34


Почему /31 префикс — новая эра в настройке сетей?

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

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

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

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

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

#реклама
О рекламодателе

BashMaster

30 Nov, 06:05


⚙️ Сравнение SHELLs: BASH vs ZSH vs FISH. Делаем красочный и удобный терминал

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

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

🔨 bash_help

BashMaster

29 Nov, 08:47


Ansible: Какой тип инвентаря применяется в Ansible по умолчанию? 🤔

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

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

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

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

Реклама ООО «Слёрм» ИНН 3652901451

BashMaster

28 Nov, 10:55


⚙️ bash_backup — скрипт резервного копирования на Bash

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

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

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


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

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

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

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

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

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

28 Nov, 07:44


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

Реклама, АО «Селектел», ИНН: 7810962785, ERID: 2VtzqurTRD9

BashMaster

27 Nov, 11:31


⚙️ Linux-Commands

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

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

27 Nov, 07:34


Хакатон 2.0: твоя команда, твой код, твой шанс 👾

Готов к вызову? Прокачай свои навыки на новом уровне: проходи отборочный этап, решай реальные финтех-задачи и становись ближе к карьере в IT!

Лучшие участники смогут попасть в команду МТС Финтех ⚡️

Направления:

🔘Frontend-разработка
🔘Backend-разработка
🔘Тестирование
🔘Системная аналитика

🔛 [Пройти регистрацию]

Кто может участвовать?

🔘Жители Москвы/МО. Это важно для очного финала и афтерпати 😎
🔘Студенты любого направления, но с призванием в IT.
🔘3−4 курс бакалавриата, 1−2 курс магистратуры, а также выпускники 2022/2023/2024 года.

Собери команду из 4-5 человек.
«Золотой состав» — 1 системный аналитик, 1 тестировщик, 1 фронтендер, 1-2 бэкендера.

Без команды тоже можно — МТС Финтех распределит не хуже известной шляпы 🎩

Успей зарегистрироваться до 29 ноября 🖥

BashMaster

26 Nov, 16:46


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

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

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

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

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

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

EOF
exit
}

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

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

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

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

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

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

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

#!/bin/bash

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

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

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

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

show_help(){
cat << EOF

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

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

EOF
exit
}

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


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

🔨 bash_help

BashMaster

26 Nov, 13:32


Как с помощью простой шаблонизации выстроить гибкий CI/CD-пайплайн с самого начала?

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

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

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

#реклама
О рекламодателе

BashMaster

26 Nov, 10:14


⚙️ MOULTI

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

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

26 Nov, 07:04


Курс “Компьютерные сети” стартует 2 декабря!

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

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

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

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

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

BashMaster

25 Nov, 11:34


⚙️ UbuntuHardeningFramework — автоматизированная система усиления защиты для Ubuntu

✔️Bash скрипты для автоматического усиления защиты Ubuntu.

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

25 Nov, 08:24


Как повысить свой грейд? План простой: берешь и делаешь 🤌 Но облегчить процесс можно с видеокурсами Слёрма.

Gitlab CI/CD, Docker, RabbitMQ, JavaScript, Python, Linux для разработчиков и другие курсы самых разных востребованных направлений помогут вам сэкономить время, повысить грейд и прокачать навыки.

Видеокурсы — это не только записанные уроки, это еще:

🔵 стенды для практики
🔵 доступ в Git-репозиторий
🔵 помощь техподдержки

➡️ старт в любое время
➡️ обучение в своем темпе: доступ к курсу на 2 года

Начать учиться можно в любое время и бесплатно, активировав демо-доступ. А продолжить обучение с рассрочкой или учиться за счет работодателя.

Подробнее 👉 на сайте

Реклама ООО «Слёрм» ИНН 3652901451

BashMaster

22 Nov, 18:04


⚙️ Tailspin

✔️Логи с подсветкой, которая будет работать одинаково стабильно для разных лог-файлов.

▶️Разбирает строки логов и выделяет различные форматы данных: даты, IP-адреса, UUID, номера, методы HTTP и другие. Правила подсветки настраиваются. Инструмент позволяет следить за файлами в директории и следовать за ними, поддерживает навигацию с помощью клавиатуры, поиск и фильтрацию.

🐙 Перейти на Github

🔨 bash_help

BashMaster

22 Nov, 14:49


Распродажа VPS для ваших задач!
DLine Media предлагает VPS от 100 рублей 😎

Преимущества:
▪️серверное железо
◽️быстрые NVMe диски
▪️ неограниченный трафик
◽️ топовые зарубежные и российские локации
▪️цены в рублях (!)
◽️оплата по договору или картой РФ
▪️собственный ЦОД
◽️выделенный VLAN
▪️поддержка IPv6
◽️VNC доступ из браузера
▪️удобная панель управления
◽️установка любой ОС
▪️низкая стоимость
◽️круглосуточная поддержка

Количество VPS по скидке ограничено, заказ на сайте:

https://tglink.io/f30ce2ed152d?erid=LjN8Ju4FG

BashMaster

22 Nov, 11:22


⚙️ Bash. Как обойтись без goto

✔️Если вы программировали в командой оболочке cmd в Windows, то вы, возможно, использовали оператор goto для того, чтобы выполнять различные блоки операторов. В bash нет оператора goto, и он, в общем, и не нужен. Однако, при переходе от cmd к bash может возникнуть вопрос, как же обойтись без goto в bash. Процесс выполнения скрипта в этих оболочках различается, тем не менее, можно написать в любой из них скрипт, который будет работать точно так же, как и скрипт в другой оболочке.

➡️ Пример 1: Несколько блоков, из которых должен выполниться только один.
Скрипт на cmd:
@echo off
if %1 == 1 goto LABEL1
if %1 == 2 goto LABEL2
if %1 == 3 goto LABEL3
goto END

:LABEL1
echo Parameter: 1
goto END

:LABEL2
echo Parameter: 2
goto END

:LABEL3
echo Parameter: 3
:END

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

▶️Скрипт на bash:
#!/bin/bash

label1(){
echo "Parameter: 1"
}

label2(){
echo "Parameter: 2"
}

label3(){
echo "Parameter: 3"
}

if [ "$1" == "1" ]; then label1; fi
if [ "$1" == "2" ]; then label2; fi
if [ "$1" == "3" ]; then label3; fi

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

▶️А в плане результата данный пример и в cmd, и в bash одинаков. Главное понять, что в cmd сам скрипт является целиком линейным, а в bash за счет возможности создания функций не является, так как сама функция представляется при ее вызове как обычная команда.

➡️ Пример 2: При соблюдении условия будет выполняться дополнительная часть команд.
▶️Скрипт на cmd:
@echo off
if %1 == 1 goto LABEL1
if %1 == 2 goto LABEL2
if %1 == 3 goto LABEL3
goto END

:LABEL1
echo Parameter: 1
:LABEL2
echo Parameter: 1 or 2
goto END

:LABEL3
echo Parameter: 3
:END

▶️Получатся вложенный блок, который можно показательно выделить отступами
:LABEL1
echo Parameter: 1
:LABEL2
echo Parameter: 1 or 2
goto END

▶️Такой вариант в bash будет выглядеть следующим образом:

#!/bin/bash

label2(){
echo "Parameter: 1 or 2"
}

label1(){
echo "Parameter: 1"
label2
}

label3(){
echo "Parameter: 3"
}

if [ "$1" == "1" ]; then label1; fi
if [ "$1" == "2" ]; then label2; fi
if [ "$1" == "3" ]; then label3; fi

▶️Вложенный блок выделяется в отдельную функцию label2, вызов которой осуществляется из label1. НО! Эта функция должна быть УЖЕ ОПРЕДЕЛЕНА к моменту первого вызова, поэтому в скрипте она должна находиться ВЫШЕ функции label1.

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

🔨 bash_help

BashMaster

22 Nov, 07:15


UserGate открывает новую страницу в истории российского NGFW-строения!

Предлагаем вашему вниманию видео с честным нагрузочным тестированием нового решения – UserGate DCFW.

UserGate Data Center Firewall (DCFW) – высокопроизводительный межсетевой экран следующего поколения с широкими функциональными возможностями и высокой отказоустойчивостью для защиты дата-центров и крупных корпоративных сетей.

Это решение для тех, кому требуется защита сетей с трафиком, исчисляемым в десятках гигабит в секунду: корпоративные сервисы крупного бизнеса, государственные информационные системы, ЦОДы, интернет-провайдеры.

➡️ Смотреть запись

*Реклама, ООО «Юзергейт»

BashMaster

21 Nov, 09:15


⚙️ basht

✔️Файловый менеджер терминала, написанный на bash.

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

21 Nov, 05:59


Вебинар
Новая система управления доступом пользователей Eltex NAICE

29.11.2024
14:00 по МСК

План вебинара:
- Общая информация о NAC системах
- Что уже сделано в NAICE
- Демонстрация настроек и работы авторизации пользователей домена AD
- Профилирование устройств

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

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

#eltex #eltexcm #вебинар #naice

 @eltexcm

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

BashMaster

20 Nov, 11:35


⚙️ LazyJournal

✔️Терминальный пользовательский интерфейс (TUI) для journalctl, логов файловой системе и контейнеров Docker для быстрого просмотра и фильтрации, написанный на языке Go с использованием библиотеки gocui.

▶️Простая установка, для запуска достаточно загрузить в систему один исполняемый файл без зависимостей.
▶️Проект вдохновлен работами Jesse Duffield, по этому интерфейс будет знаком всем тем, кто уже использует LazyDocker и LazyGit.
▶️Для всех журналов присутствует возможность динамической фильтрации вывода с поддержкой нечеткого поиска и регулярных выражений (в стиле fzf и grep), а также подсветкой найденных слов.
▶️Позволяет получить список всех доступных журналов юнитов из journalctl (используется для чтения логов из подсистемы systemd).
▶️Возможность просматривать все доступные лог-файлы из каталога /var/log с сортировкой по дате изменения (например, для Apache, Nginx или СУБД), включая доступ к архивным логам.
▶️Поддержка логов контейнеров Docker.
▶️Проект будет полезен в первую очередь для системных администраторов Linux, больше не нужно вручную искать журналы в системе и каждый раз вызывать grep.

🐙 Перейти на Github

🔨 bash_help

BashMaster

20 Nov, 08:25


Я айтишник и я устал!

С годами работы в IT все сильнее напрягает рутина, прокрастинация, куча задач и 0 желания их выполнять. Че делать?

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

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

Подписывайся на канал @remizov_changes - начни работать и жить в кайф, не скатываясь в кризисы и выгорание!

А в закрепе тебя уже ждут бонусы:
👨🏻‍💻 Видео, в котором ты найдёшь ответ на вопрос «Почему у тебя нет энергии и что с этим делать» + гайд как IT-специалисту вернуть энергию, даже если не получается отдохнуть.

BashMaster

19 Nov, 11:35


⚙️ Парсим данные с GisMeteo в bash’е

✔️Если вы вдруг каким-то чудом еще не слышали про сайт gismeteo.ru, то, в двух словах, это сайт, на котором публикуется текущая информация о погоде для различных населенных пунктов. Чтобы посмотреть, что сейчас примерно на улице за погода (с определенной погрешностью, естественно), достаточно открыть сайт и посмотреть. Кроме того, у этого сайта есть возможность получать данные в формате XML.

▶️Но мы не будем пользоваться форматом XML, потому что для корректного разбора xml обычно используются дополнительные программы. Мы воспользуемся другими программами, которые обычно в системе уже присутствуют (за исключением curl, который по умолчанию имеется не во всех системах) — bash, sed и curl. Curl нужен только для получения странички по протоколу https, и вместо него можно воспользоваться любой другой программой, которая может получить страничку по https и вывести ее в терминал (это может сделать и wget, и links), можно использовать ту программу, которая вам больше нравится.

▶️Главная задача этого скрипта — выводить в консоль информацию о погоде в текстовом режиме. Чем этот скрипт может быть еще полезен? Тем что результат его работы можно использовать для отправки себе в качестве SMS, по электронной почте или использовать для отображения на рабочем столе при помощи conky.

➡️ Для настройки скрипта потребуется адрес страницы, на которой находятся данные о погоде в соответствующем городе. У меня это будет Санкт-Петербург. Вы можете свой URL найти просто скопировав из браузера адрес страницы и вставив его в скрипт.
#!/bin/bash

CITY_URL="https://www.gismeteo.ru/city/daily/4079/"
curl $CITY_URL 2>/dev/null \
| sed -nre '/section higher/,/мм рт. ст./p' \
| sed -r '/section higher|cloudness|wicon wind|crumb|scity|\/div|value m_temp f|m_wind mih|m_wind kmh|png|\/dl|class="temp|wicon barp|dt/d' \
| sed -r 's/(.*)class="type(.*)>(.*)<\/h2>/Город: \3/' \
| sed -r 's/(.*)<dd(.*)td>(.*)<\/td(.*)\/dd>/Погода: \3/' \
| sed -r 's/(.*)<dd class=(.*)>(.*)<span class="meas(.*)span><\/dd>/Температура воздуха: \3 C/' \
| sed -r 's/(.*)value m_wind ms(.*)>(.*)<span class="unit">(.*)<\/span><\/dd>/Ветер: \3 \4/' \
| sed -r 's/(.*)value m_press torr(.*)>(.*)<(.*)>(.*)<\/span><\/dd>/Давление: \3 \5/'

▶️Если не совсем понятно, немного поясню, что происходит. Скачиваем curl’ом страничку, выводим ее в стандартный потов вывода, а ошибки в /dev/null. Затем удаляем все ненужные строки, оставляем только те, которые содержатся между строкой с подстрокой «section higher» и «мм рт. ст.» включительно. Таким образом удалится информация о температуре воды, но это в моем случае не страшно, потому что Питер не самый курортный город, и о влажности воздуха, что тоже не страшно, потому что влажность обычно не самая низкая. Затем из оставшихся строк снова удаляем ненужные, достаем название города, состояние атмосферы (ясно, пасмурно, облачно), температуру воздуха, скорость ветра и атмосферное давление.

➡️ И, собственно, всё. После запуска скрипта получаем такой вот вывод:
$ ./gm.sh
Город: Санкт-Петербург
Погода: Пасмурно
Температура воздуха: +15 C
Ветер: 2 м/с
Давление: 766 мм рт. ст.


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

🔨 bash_help

BashMaster

17 Nov, 12:51


⚙️ sshto – небольшой bash-скрипт для управления ssh-соединениями

✔️Он создает меню (через диалог) из вашего ~/.ssh/config. Он может не только подключаться, но и выполнять команды, копировать файлы, туннелировать порты

🐙 Перейти на Github

🔨 bash_help

BashMaster

14 Nov, 12:44


⚙️ CLI-To-Whatsapp

✔️Bash-скрипт, который позволяет пользователям отправлять выходные данные CLI команды GNU/Linux контакту WhatsApp в виде сообщения

🐙 Перейти на Github

🔨 bash_help

BashMaster

14 Nov, 09:25


Компоненты AD Kerberos, Microsoft SQL Server и центр сертификации — как их взломать?
Научим на курсе “Атака на Active Directory". Авторы: HackerRalf (Михаил Порываев) и BlackRabbit (Павел Никитин), 5-кратные победители the Standoff

Старт: 16 декабря. Успейте приобрести курс по старой цене до конца ноября!*

Содержание курса:
- Архитектура AD и ее базис
- Харденинг в AD, добыча критичной информации, развитие по инфраструктуре
- Как закрепиться внутри? Техники и эксплоиты

На 100% прикладной курс:
практическая лаборатория AD содержит 16 виртуальных машин, позволяя участникам отточить свои навыки на практике в 100+ рабочих тасках

🏆 Сертификат / удостоверение о повышении квалификации 

*С декабря стоимость курсов увеличится на 15%

@Codeby_Academy
Подробнее о курсе

BashMaster

13 Nov, 16:02


⚙️ PathPicker

✔️Инструмент командной строки, который позволяет выбирать файлы из вывода bash

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

11 Nov, 18:02


⚙️ ble.sh — Bash Line Editor

✔️Линейный редактор, написанный на чистом Bash, с подсветкой синтаксиса, автоматическими предложениями, режимами vim и т. д. для интерактивных сеансов Bash.

▶️Он заменяет GNU Readline по умолчанию. Предоставляет такие функции, как расширенное завершение и режим редактирования

🐙 Перейти на Github

🔨 bash_help

BashMaster

11 Nov, 14:50


Приглашаем 14 ноября в 10:00 на вебинар «Миграция на отечественную ИТ-инфраструктуру и решения для кибербезопасности»

Вы узнайте, что важно учесть при переходе на отечественные инфраструктурные и ИБ-решения. Опытом поделятся руководители служб ИТ и информационной безопасности из РСХБ Факторинг, R-Style Softlab, РЭД Софт.

О чем вебинар:

Оптимальный выбор решений для кибербезопасности. Как сделать правильный выбор между универсальными ИБ-решениями ( например, NGFW и XDR) и узкоспециализированными (VPN-шлюзы, межсетевые экраны или системы обнаружения киберугроз).
Служба единого каталога. Обзор отечественных новинок Directory Service. Альтернативы Microsoft Active Directory с учетом совместимости с текущей инфраструктурой.
– Платформы виртуализации. Обзор рынка отечественных решений. Опыт перехода на отечественные платформы виртуализации в РСХБ Факторинг.
Обзор подходов к миграции ИТ-инфраструктуры. Как перейти на гетерогенную ИТ-инфраструктуру без потери функциональности на этапе миграции.
– Управление проектами по миграции ИТ-инфраструктуры. Как делать сложные проекты по импортозамещению ИТ-инфраструктуры в условиях кадрового голода.

Вебинар будет полезен:

ИТ-директорам. Узнаете опыт крупных российских компаний по миграции ИТ-инфраструктуры на отечественные решения.
Директорам и специалистам по информационной безопасности. Получите методологию подбора ИБ-решений и построения систем кибербезопасности, которая позволит экономить до 20% бюджета без потери надежности и функциональности.
Руководителям компаний. Узнаете опыт РСХБ Факторинг, как делать глобальные проекты по импортозамещению в условиях кадрового голода на ИТ и ИБ-специалистов.


14 ноября, четверг, в 10:00 по МСК.
Регистрация свободная.

Реклама. АО "ЭР-СТАЙЛ СОФТЛАБ". ИНН: 7719198440. Erid: 2VSb5xkYdTe

BashMaster

10 Nov, 09:00


⚙️ Скрытие процессов Linux с помощью Bind Mounts

✔️Если у вас есть вредоносный процесс, который вы хотите скрыть, используйте Bind Mounts, чтобы смонтировать другой каталог поверх каталога /proc/PID для вредоносного процесса.

🖼️ Статья на английском языке

🔨 bash_help

BashMaster

07 Nov, 15:45


⚙️ Аналог wget на bash

✔️Если вам необходимо скачать какой-то файл, а curl’а или wget’а нет, то можно воспользоваться командной оболочкой bash, написав скрипт, позволяющий скачать любой файл по протоколу http.

➡️ Вот этот скрипт:

download.sh:
#!/bin/bash

if [ "$1" == "" ]
then
echo "usage: $0 URL"
exit 0
fi

HOST=`echo $1 | sed 's/http\:\/\///' | sed -r 's/([^/])\/(.*)/\1/'`
FILENAME=`echo "$1" | sed -r 's/(.*)\/(.*)/\2/'`
PATH=`echo "$1" | sed 's/http\:\/\///' | sed -r "s/$HOST//" | sed "s/$FILENAME//"`
PORT=80
HEADERS="HTTP/1.1\r\nHost: $HOST\r\nConnection: close\r\nContent-Length: 0\r\n\r\n"
F="/tmp/dlfile"
exec 3<>/dev/tcp/$HOST/$PORT
echo -e "GET $PATH$FILENAME $HEADERS" >&3
/bin/cat <&3 > $F
/usr/bin/tail $F -n +$((`/bin/sed $F -e '/^\r$/q' | /usr/bin/wc -l`+1)) > $FILENAME
/bin/rm $F


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

🔨 bash_help

BashMaster

07 Nov, 12:30


😂 Подборка каналов для каждого сетевого инженера и безопасника

👨‍💻 Серверная Админа — Большое количество уроков, статей, книг и гайдов по устройству и настройке компьютерных сетей.

😎 Арсенал Безопасника — Проект по кибербезопасности - сборник лучших инструментов и утилит по OSINT, хакингу и деанону

😎 Бункер Хакера — Все что необходимо, для того чтобы начать свой путь в безопасности - инструменты, книги, справочники, гайды и ресурсы.

BashMaster

06 Nov, 14:15


⚙️ Bash Prompt Generator

✔️Очень крутой ресурс, где можно сконфигурировать строку для ввода команд в bash.

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

06 Nov, 09:01


Освой работу с Prometheus, Grafana, ELK, etc и настрой мониторинг!

Владение инструментами Observability открывает новые карьерные горизонты администраторам Linux, DevOps-инженерам 

Стройте сложные эффективные системы мониторинга и логирования инфраструктуры и приложений 

💪 Ответьте на 15 вопросов и проверьте, насколько вы готовы к обучению на курсе «Observability: мониторинг, логирование, трейсинг» от OTUS.

+ 5 новых занятий, для вашего профессионального развития

Пройти тест и получить спец. предложение:  
https://otus.pw/HhMG/?erid=LjN8KPGU9

#реклама
О рекламодателе

BashMaster

05 Nov, 15:07


⚙️ bind – встроенная команда оболочки Bash

✔️Используется для установки привязок клавиш и переменных к функциям.

▶️ -l – перечислить имена связанных функций редактирования.
▶️ -P – перечислить названия привязываемых функций редактирования и их привязки, если они есть.
▶️ -p – то же, что и -P, но выводит результат в форме, которую можно использовать в качестве входных данных для команды bind.
▶️ -S – перечислить последовательности клавиш, которые вызывают макросы и их значения.
▶️ -s – то же, что и -S, но выводит результат в форме, которую можно использовать в качестве входных данных для bind.
▶️ -V – перечислить переменные и их значения, которые используются при привязке ключа bash.
▶️ -v – то же, что и -V, но выводит результат в форме, которую можно использовать в качестве входных данных для bind.
▶️ -q название функции – отобразить (запросить) привязку клавиш для функции bash имя_функции.
▶️ -u имя функции – отключить все ключи, привязанные к функции редактирования function-name.
▶️ -r последовательность клавиш – удалить все привязки для последовательности клавиш keyseq.
▶️ -f имя файла – считать привязки клавиш из файла имя_файла и использовать их в качестве входных данных для команды привязка.
▶️ -x keyseq:shell-команда – привязать команду. Команда оболочки shell-command будет выполнена bash, когда получит последовательность клавиш keyseq.
▶️ -X – перечислить последовательности клавиш, привязанные к -x, в форме, подходящей для ввода в bind.

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

🔨 bash_help

BashMaster

01 Nov, 17:22


⚙️ Process substitution в Bash

✔️Process substitution — это функция в Bash, которая позволяет использовать вывод команды или процесса в качестве входа для другой команды. Она помогает оптимизировать Bash-скрипты, уменьшив потребность во временных файлах и упростив сложные конвейеры

➡️ Синтаксис process substitution:
<(command). Создаёт именованный канал (FIFO) и подключает к нему вывод команды внутри скобок. Именованный канал ведёт себя как файл, что позволяет использовать его в качестве входа для другой команды.
>(command). Также создаёт именованный канал, но подключает его к входу команды внутри скобок. Это позволяет перенаправить вывод одной команды на вход другой команды.

➡️ Некоторые примеры использования process substitution для оптимизации Bash-скриптов:

▶️Сравнение вывода двух команд
Подстановку процесса можно использовать для сравнения вывода двух команд с помощью команды diff. Например, для сравнения вывода ls в двух разных каталогах:
diff <(ls dir1) <(ls dir2) 


▶️Перенаправление вывода на несколько команд
Вы можете использовать подстановку процесса, чтобы отправить вывод команды нескольким командам. Например, чтобы отправить вывод ls и в grep, и в wc:
ls | tee >(grep 'txt$') >(wc -l) > /dev/null 


▶️Цепочка процессов замены
Подстановку процессов можно объединить в цепочку для создания сложных конвейеров. Например, чтобы отсортировать и подсчитать слова в текстовом файле, а затем отобразить 10 самых распространенных слов:
cat file.txt | tr '[:space:]' '\n' | grep -v '^$' | sort | uniq -c | sort -nr | head -n 10 


▶️Объединение и сортировка двух файлов
Предположим, у вас есть два отсортированных файла, file1.txt и file2.txt, и вы хотите объединить их в новый отсортированный файл, merged.txt . Вы можете использовать команду sort вместе с подстановкой процесса, чтобы добиться этого:
sort -m <(sort file1.txt) <(sort file2.txt) > merged.txt 


▶️Отображение различий между деревьями каталогов
Вы можете использовать замену процессов для сравнения структуры каталогов двух каталогов с помощью команды tree и diff:
diff -y <(tree -fi dir1) <(tree -fi dir2) 


▶️Фильтрация и сохранение записей журнала
Предположим, у вас есть файл журнала, и вы хотите извлечь записи, содержащие слово "ERROR", сохранить их в отдельный файл и отобразить на экране. Для этого можно использовать grep и tee с заменой процессов:
grep 'ERROR' logfile.txt | tee >(cat > errors.txt) 


▶️Выполнение арифметических операций над столбцами CSV-файла
Вы можете использовать awk с подстановкой процессов для выполнения арифметических операций над столбцами CSV-файла. Например, чтобы сложить столбцы 2 и 3 CSV-файла и отобразить результат:
awk -F, '{ print $1, $2 + $3 }' <(cat file.csv) 


▶️Объединение стандартного вывода и стандартной ошибки
Чтобы объединить стандартный поток вывода и стандартный поток ошибок в один поток, можно использовать замену процессов с помощью cat:
command 2> >(cat >&1) 

В этом примере команда представляет команду, которую вы хотите выполнить. Подстановка процесса >(cat >&1) перенаправляет стандартный поток ошибок (файловый дескриптор 2) в стандартный поток вывода (файловый дескриптор 1).

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

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

🔨 bash_help

BashMaster

01 Nov, 10:31


🎓 Тренинги Zabbix Сертифицированный Специалист 7.0 и Zabbix Сертифицированный Профессионал — ответ на вопрос «как быстро получить самые полные знания по Zabbix 7.0».

@zabbix_ru — наш телеграм-канал, посвященный Zabbix и ничему кроме Zabbix.

Тренинги Zabbix — лучшая инвестиция, которую вы можете сделать для себя или своих коллег. Мы опросили участников предыдущих потоков и сформулировали основные преимущества от прохождения тренингов:

📖 устранить пробелы. Часто знания Zabbix ограничиваются эпизодическим изучением документации и фрагментарны. Курс поможет систематизировать знания и откроет для вас новые возможности уже знакомой системы мониторинга.

📖 делать своими силами. Участие подрядчиков в проектах внедрения подразумевает предоставление доступа в ваше окружение. Прохождение официальных курсов Zabbix на русском языке позволит вам выполнять работы своими силами.

📖 распространять знания. Сотрудники, получившие сертификат Zabbix, не просто совершенствуют свои собственные технические навыки — они привносят полученные знания в коллектив и делятся ими со своими коллегами.

📖 получить сертификат. Это официальный вендорский курс Zabbix, переведенный на русский язык. После прохождения курса у вас будет возможность сдать экзамен и получить сертификат. Сертификат подтверждает знания и дает дивиденды компании и мотивацию сотрудникам.

📖 получить компетенции. Курсы проводят сертифицированные тренеры и эксперты Zabbix, которые регулярно повышают свою компетенцию как путем прохождения дополнительного обучения, так и участием в проектах внедрения Zabbix.

Проведем 2 тренинга подряд в этом году. Далее только в новом 2025. Программа тренингов по ссылкам выше.

📅 Zabbix сертифицированный специалист 7.0 (ZCS 7.0) 11-15 ноября

📅 Zabbix сертифицированный профессионал 7.0 (ZCP 7.0) 18-20 ноября

Подробную информацию вы можете запросить, написав @galssoftware или через почту [email protected].

BashMaster

31 Oct, 18:15


⚙️ Мониторинг перебора паролей на почту

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

▶️Для работы с информацией будем использовать bash-скрипты, чтобы фильтровать информацию, и планировщик cron, чтобы выполнять анализ по расписанию и высылать результат вам на почту. Результат будем сохранять в отдельном файле на каждый день и в одном файле будем собирать всю информацию. Саму информацию представим в виде двух значений — количество попыток и IP-адрес. Таким образом мы можем посмотреть заодно, правильно ли работает fail2ban и сколько попыток залогиниться на почтовый сервер проходит за сутки.

➡️ Сбор статистической информации
▶️Для получения информации будем использовать логи почтового сервера, в которых регистрируются попытки подключения к почтовому серверу. Вот что нам нужно. Из лога аутентификации будем отфильтровывать ошибки аутентификации и считать для IP-адресов, при обращении с которых происходили ошибки, количество попыток. После размещения скрипта в cron’е вам на почту будет приходить каждый день письмо со статистикой атак. Рассмотрим аутентификацию почтового сервера dovecot, но вы можете поправить скрипт под свои нужды.

➡️ Мониторинг перебора паролей
▶️Напишем скрипт на bash, который будет фильтровать логи.
#!/bin/bash

# Название файла с адресами, включающее дату
IP_BLACKLIST="/root/scripts/blacklist-`date "+%Y-%m-%d"`.lst"

# Фильтрация ошибок аутентификации
CURRENT_DATE=`date "+%b %d"`
grep "dovecot:auth" /var/log/auth.log \
| grep "authentication failure" \
| grep "$CURRENT_DATE" \
| cut -d" " -f 14 \
| sed 's/rhost=//' \
| sort | uniq -c >> $IP_BLACKLIST

# Добавление в большой список только IP-адресов из сегодняшнего лога
awk '{print $2}' $IP_BLACKLIST >> /root/scripts/blacklist-full.lst
# После добавления сортируем и убираем неуникальные адреса
cat /root/scripts/blacklist-full.lst | sort | uniq >> /root/scripts/blacklist-full.lst.new
rm /root/scripts/blacklist-full.lst
mv /root/scripts/blacklist-full.lst.new /root/scripts/blacklist-full.lst

# Выводим сегодняшний лог
cat $IP_BLACKLIST

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

▶️После написания скрипта необходимо его записать в крон, чтобы он выполнялся по расписанию. Когда будут неудачные попытки аутентификации, вам будет приходить письмо со списком и количеством попыток, если их не будет, то письмо тоже не будет приходить. Добавим для этого в файл /etc/crontab следующую строчку:
55 23   * * *   root    /root/scripts/check-auth-errors.sh

➡️ Блокировка перебора при помощи iptables
▶️Для блокировки при помощи iptables можно написать еще один скрипт, которым можно блокировать адреса из ежедневного лога:
#!/bin/bash

IPLIST=$(awk '{print $2}' $1)
for IP in ${IPLIST}
do
echo -n Blocking ${IP} ...
iptables -t filter -A INPUT -s ${IP} -j DROP
echo Done
done


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

🔨 bash_help

BashMaster

31 Oct, 15:02


Станьте разработчиком нейро-сотрудников на Python и зарабатывайте от 150.000р в месяц 🔥🔥🔥

Мы научим вас создавать топовых нейро-сотрудников на базе GPT-4 Omni, и вы сможете:
1️⃣ Устроиться разработчиком в крупную компанию и зарабатывать от 150 тысяч ₽ в месяц
2️⃣ Разрабатывать такие проекты на заказ и зарабатывать от 500 тысяч ₽ за проект
3️⃣ Создать нейро-сотрудника в вашей компании и вырасти на +30-100% в зарплате

Что будет на интенсиве?
🧬 Теория: как создаются нейро-сотрудники с GPT-4o на Python
🧬 Практика: мы создадим нейро-консультанта, нейро-HR, нейро-маркетолога и др.

Ведущий интенсива - Senior AI разработчик нейросетей и основатель Университета искусственного интеллекта
🔥 Регистрируйтесь на бесплатный интенсив! Встречаемся в ближайший четверг!

BashMaster

30 Oct, 16:15


⚙️ ipbash — функции для работы с IP и подсетями

✔️Функции, представленные здесь, могут пригодиться для объединения нескольких списков ip-адресов или подсетей, полученных из разных источников, допустим, для бана.

▶️С помощью ENTRYIP, можно убрать подсети, которые перекрывают друг-друга — например подсеть 192.168.1.0/24 входит в подсеть 192.168.0.0/23. И для бана достаточно будет оставить только последнюю.

▶️А если в списке есть еще подсеть 192.168.2.0/23, то с помощью функции MERGESUBNETS можно объединить подсети 192.168.0.0/23 192.168.2.0/23 в одну 192.168.0.0/22, уменьшив список и увеличив скорость работы фильтра.

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

30 Oct, 13:05


Как разрабатывать и настраивать Grafana Stack для эффективного визуализирования метрик и логов?

🔹Расскажем на открытом уроке «Grafana Stack: закрываем все современные потребности Observability», урок приурочен к курсу «Observability: мониторинг, логирование, трейсинг» от Otus.

Рассмотрим ключевые компоненты Grafana Stack и их роли в Observability.

Настроим интеграции с различными системами для получения актуальных данных.

Практика: Создание настраиваемых дашбордов и алертов, для эффективного управления производительности и надежности сервисов

👉 Регистрация и подробности:
https://otus.pw/6D1pa/?erid=LjN8KcNUf

#реклама
О рекламодателе

BashMaster

29 Oct, 10:37


⚙️ lssh

✔️Клиент SSH/SCP/SFTP на основе списка, поддерживающий одиночные и параллельные соединения, локальное использование bashrc на удаленных машинах и расширенное проксирование.

➡️ Эта командная утилита для чтения заранее подготовленного списка и подключения ssh/scp/sftp к выбранному хосту. Файл списка задается в формате yaml. При выборе хоста можно фильтровать по ключевым словам. Может выполнять команды одновременно для нескольких хостов.

🐙 Перейти на Github

🔨 bash_help

BashMaster

29 Oct, 05:01


🟡 Сравнение российских платформ виртуализации
Функционал. Эксплуатация. Преимущества и недостатки.

3 года тестируем и исследуем российские платформы виртуализации.
Собрали весь материал в одном посте⬇️


🔄СРАВНИТЕЛЬНЫЕ ИССЛЕДОВАНИЯ
2022: сравнение шести платформ
2024: характеристики одиннадцати платформ

🔄ТЕСТИРОВАНИЕ ПЛАТФОРМ

2022-2023 год:

Astra Linux, «Брест»
zVirt
Альт сервер виртуализации на базе OpenNebula
Альт сервер виртуализации на базе Proxmox
РЕД виртуализация
РУСТЭК

2024 год:
zVirt
SpaceVM
Numa vServer

🔄ОПЫТ ВНЕДРЕНИЯ
VMware по-русски: как мы внедряли отечественные платформы виртуализации
Как электросети переехали в частные облака и на российскую виртуализацию

🔄ТЕСТИРОВАНИЕ VDI
ВРС на базе Basis.Workplace + Р-Платформа
ВРС на базе Termidesk + zVirt
SPACE VDI

➡️ Подписывайтесь

BashMaster

27 Oct, 11:45


⚙️ 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

BashMaster

27 Oct, 08:35


Расширить свой стек — легко! ⚡️

Приглашаем разработчиков на обучение: PostgreSQL, Apache Kafka, Docker, Gitlub CI/CD, Java Script, Python-разработчик и еще более 10 востребованных направлений ждут вас в формате видеокурсов в учебном центре Слёрм.

Учёба в Слёрм — это:

✔️ старт в любое время: вы не привязаны к расписанию и проходите курс в комфортном для вас темпе;
✔️ фокус на практику: она занимает около 80% обучения;
✔️ гибкие условия оплаты: рассрочка, налоговый вычет, оплата зарубежной картой и даже оформление оплаты от работодателя;
✔️ передача знаний от ведущих экспертов современного IT рынка.

Цените свое время и приходите осваивать best practices и прокачивать свои навыки вместе с нами!

Подробнее — на сайте 😉

Реклама ООО «Слёрм» ИНН 3652901451

BashMaster

24 Oct, 13:02


⚙️ Генератор паролей на 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

BashMaster

24 Oct, 08:58


Хотели бы присоединиться к проекту, который приносит пользу миллионам пользователей? 🚀

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

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

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

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

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

3️⃣ DevOps Engineer

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

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

Скорее откликайтесь!

BashMaster

23 Oct, 13:25


⚙️ Bash Reference Manual

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

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

🔨 bash_help

BashMaster

23 Oct, 10:15


🚀 Только 48 часов! Получите лучшие IT-ресурсы абсолютно БЕСПЛАТНО

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

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

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

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

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

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

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

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

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

P.S.: Вся нужная инфа уже в закрепе канала. Не стесняйся, сделай первый шаг!

BashMaster

21 Oct, 10:22


⚙️ Как ускорить работу в командной оболочке 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

BashMaster

21 Oct, 06:10


Все надоело и пропал интерес, чувствуешь себя амебой и хочется только залипать в телефоне. Бывает?

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

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

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

👨🏻‍💻 Псс. Заходите в закреп канала - там много полезного, и даже бесплатный мини-курс.

BashMaster

18 Oct, 14:05


👉 Подборка видеокурсов по Bash для новичков

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

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

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

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

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

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

👉 Bash Basics

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

👉 Bash от канала dmdev

🔨 bash_help

BashMaster

18 Oct, 10:35


🔥 Свежие вакансии для разработчиков, которых нет на 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

BashMaster

17 Oct, 15:26


⚙️ Шифрование файла или каталога 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

BashMaster

17 Oct, 06:25


Вебинар QoS в ESR

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

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

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

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

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

#eltex #eltexcm #webinar #esr 

@eltexcm

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

BashMaster

16 Oct, 19:45


⚙️ Некоторые приемы защиты программ на 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

BashMaster

16 Oct, 15:38


📚Библиотека промптов для самых разных задач и профессий

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

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

Сохраняй и пользуйся!💾

BashMaster

15 Oct, 10:15


⚙️ 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

BashMaster

15 Oct, 07:05


Большинство разработчиков стремится повысить свой грейд, но как и куда расти, если ты амбициозный мидл или уже синьор? Откуда брать насмотренность и опыт, если ты ограничен задачами своей компании, а одними статьями на Хабре проблему не решить?

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

Курс «Архитектор ПО» от Практикума поможет развить навык решения архитектурных задач. Техлиды Яндекса и других компаний покажут противоположные архитектурные подходы. Благодаря этому разработчику не придётся учиться на своих ошибках — он научится на опыте коллег. За 6 месяцев курса он разработает и добавит в портфолио 5 архитектур.

Курс подойдёт бэкенд-разработчикам, которые:
— работают 2+ лет;
— хотят развиваться на текущей позиции и повышать свой грейд;
— хотят получить должность лида или архитектора ПО.

Успейте записаться на ближайший поток по ссылке

BashMaster

14 Oct, 13:05


⚙️ Объектно-ориентированное программирование на 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

BashMaster

14 Oct, 09:53


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

Реклама АО «Селектел». ИНН: 7810962785 Erid: 2VtzqxgUA7L

BashMaster

10 Oct, 11:25


⚙️ Пять терминальных программ для вывода информации о дистрибутиве Linux

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

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

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

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

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

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

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

🔨 bash_help

BashMaster

10 Oct, 08:15


14 октября (пн) приглашаем вас на встречу потенциальных докладчиков с Программным комитетом DevOpsConf 2025. 
Собираемся в 19.00 Мск

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

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

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

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

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

Реклама. ООО "КОНФЕРЕНЦИИ ОЛЕГА БУНИНА". ИНН 7733863233.

BashMaster

09 Oct, 15:05


⚙️ Фейковый 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

BashMaster

09 Oct, 11:57


Курс "Профессия Пентестер" стартует 21 октября!

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

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

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

Пишите нам @Codeby_Academy
Узнать подробнее

BashMaster

08 Oct, 13:15


⚙️ Ресурс, описывающий самые популярные инструменты DevOps

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

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

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

🔨 bash_help

BashMaster

08 Oct, 10:05


Cамый простой способ изучить Java — залезть в голову профи

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

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

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

Теперь обучиться Java может каждый: @java_secrets

BashMaster

07 Oct, 13:15


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

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

🐙 Перейти на Github

🔨 bash_help

BashMaster

07 Oct, 10:05


Лучше, выгоднее, удобнее: нашли отечественный аналог Cloudflare.

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

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

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

#реклама
О рекламодателе

BashMaster

06 Oct, 11:02


🎬 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

BashMaster

05 Oct, 12:15


⚙️ Команда 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