ar
Feedback
BashMaster

BashMaster

الذهاب إلى القناة على Telegram

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

إظهار المزيد
8 885
المشتركون
لا توجد بيانات24 ساعات
-157 أيام
+1630 أيام
أرشيف المشاركات
⚙️ Параллельное выполнение в bash ✔️В большинстве командных оболочек команды выполняются по умолчанию последовательно. И это
⚙️ Параллельное выполнение в bash ✔️В большинстве командных оболочек команды выполняются по умолчанию последовательно. И это нормально. Потому что человек с системой взаимодействует последовательно, обычно нет необходимости несколько команд выполнять параллельно. Bash в этом смысле тоже не исключение. Но при автоматизации возможность параллельного выполнения может быть полезной. ➡️ Использование фонового режима ▶️Для организации параллельной работы нескольких программ часто используется запуск в фоновом режиме при помощи знака амперсанда — &:
command1 &
▶️Команда будет работать в фоне, при этом из текущей оболочки можно выполнять команды. Таким образом уже можно распараллелить какие-то действия. Можно запустить сразу несколько команд таким образом и дождаться, пока они все отработают. Для ожидания запущенных дочерних процессов используется команда wait. Эта команда без параметров ожидает окончания работы всех дочерних процессов, соответственно, для ожидания окончания 5 процессов понадобится выполнить команду всего 1 раз. Это легко реализуется через цикл:
for i in {1..5}
do
    # запуск одного фонового процесса
    sleep 10 && echo $i &
done
# ожидание окончания работы
wait
echo Finished
▶️И результат работы этого скрипта:
$ ./wait5.sh
1
5
4
2
3
Finished
▶️Как видите, с виду одинаковые команды завершились не в том порядке, в котором мы их запустили. Давайте посмотрим теперь общее время выполнения скрипта:
$ time ./wait5.sh 
4
5
2
3
1
Finished

real  0m10.029s
user  0m0.000s
sys  0m0.008s
▶️Общее время работы скрипта чуть больше 10 секунд, что доказывает, что наши команды выполнились параллельно, а увеличение времени выполнения говорит о том, что они были запущены не в одно и то же время, были небольшие таймауты между запусками. Но они были очень маленькими, поэтому такой запуск пяти процессов занимает практически такое же время, как запуск одного. ➡️ Использование пайпа ▶️При использовании пайпов, которые перенаправляют вывод одной программы на вход другой, процессы выполняются параллельно. Отсюда вытекает еще один способ параллельного выполнения нескольких команд — перенаправить между ними какие-то данные с помощью пайпа:
program1 | program2 | program3
▶️Тут важно помнить — если вам не нужно передавать реально какие-то данные между программами, то надо предварительно убедиться, что входные данные эти программы получат в виде опций командной строки и не будут использовать те данные, которые были переданы им с помощью пайпа. Хотя здесь возможен такой вариант:
command1 --option > dev/null | command2 param1 param2 > /dev/null | command3
▶️Этот вариант до использования в скриптах, естественно, нужно обязательно проверить в ручном режиме и посмотреть в страницах руководств используемых программ (если там есть такая информация), что имеет больший приоритет — опции командной строки или стандартный поток ввода, потому что некоторые программы могут игнорировать командную строку, если данные передаются через стандартный поток ввода. ➡️ Параллельное выполнение и ограничение количества фоновых задач в скрипте ▶️Давайте рассмотрим такую практическую задачу — запустить 100 процессов параллельно, но так, чтобы работало одновременно не более 10 процессов. В общем, достаточно простая задача. Предположим, что все процессы работают произвольное количество времени. Пусть запуск одной задачи будет выглядеть как запуск команды sleep со случайным параметром от 0 до 29. Тогда скрипт будет выглядеть так:
#!/bin/bash

RANDOM=10
JOBS_COUNTER=0
MAX_CHILDREN=10
MY_PID=$$

for i in {1..100}
do
    echo Cycle counter: $i
    JOBS_COUNTER=$((`ps ax -Ao ppid | grep $MY_PID | wc -l`))
    while [ $JOBS_COUNTER -ge $MAX_CHILDREN ]
    do
        JOBS_COUNTER=$((`ps ax -Ao ppid | grep $MY_PID | wc -l`))
        echo Jobs counter: $JOBS_COUNTER
        sleep 1
    done
    sleep $(($RANDOM % 30)) &
done
echo Finishing children ...
# wait for children here
while [ $JOBS_COUNTER -gt 1 ]
do
    JOBS_COUNTER=$((`ps ax -Ao ppid | grep $MY_PID | wc -l`))
    echo Jobs counter: $JOBS_COUNTER
    sleep 1
done
echo Done
🖼️ Дочитать статью 🔨 bash_help

Залетай на CyberCamp 2024! 3–5 октября пройдет главный онлайн-кэмп по практической безопасности ⚡️ Эксперты BI.ZONЕ, F.A.C.C.
Залетай на CyberCamp 2024! 3–5 октября пройдет главный онлайн-кэмп по практической безопасности ⚡️ Эксперты BI.ZONЕ, F.A.C.C.T., Positive Technologies, R-Vision, Инфосистемы Джет, Лаборатория Касперского, Код Безопасности и других подготовили практику и кейсы для всех участников 🔥 Что еще будет на кэмпе: 🔗 Интерактивный эфир, доклады и практические задания для всех 🔗 Общий призовой фонд — 5 000 000 рублей 🔗 Призы и мерч для активных участников и лидеров рейтинга 🔗 Самые масштабные в России командные киберучения Бронируйте время в календаре и присоединяйтесь! Участие бесплатное. Регистрация и программа на сайте P.S. Если вы еще не успели зарегистрироваться, поспешите — в этом году организаторы кэмпа заранее подготовили несколько докладов и заданий для участников. Все задания, которые откроют до начала эфира, закроются ровно в 8:00 мск 3 октября.

⚙️ Автоматизация сканирования открытых сетевых портов ✔️С ростом числа кибератак и угроз безопасности информационных систем а
⚙️ Автоматизация сканирования открытых сетевых портов ✔️С ростом числа кибератак и угроз безопасности информационных систем автоматизация процесса анализа уязвимостей становится критически важной задачей. ▶️С ростом объемов обрабатываемых данных, расширения информационных систем, сервисов и приложений возникает все больше проблем с точки зрения информационной безопасности. Исходя из этого встает острый вопрос о том, как это все контролировать, и преждевременно предотвращать угрозы информации. ➡️ В рамках данной статьи мы рассмотрим следующие пункты: ▶️разработка скрипта для поиска поддоменов; ▶️разработка скрипта для преобразования найденных поддоменов в IP-адреса; ▶️разработка скрипта для сканирования внешней сети при помощи утилиты Nmap и сбора информации о доступных портах; ▶️разработка телеграмм-бота для автоматизации. 🖼️ Дочитать статью на Habr'e 🔨 bash_help

📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к са
📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам. Просто выбери своё направление: 1. Frontend / JavaScript 2. Python 3. Java 4. Тестировщик QA 5. Data Science 6. DevOps 7. C# 8. C/C++ 9. Golang 10. PHP 11. Kotlin 12. Swift

⚙️ 4-ZERO-3 — инструмент обхода ошибок 403/401 в ответах сервера ✔️Для справки: 401 Unauthorized (Не авторизован) - для досту
⚙️ 4-ZERO-3 — инструмент обхода ошибок 403/401 в ответах сервера ✔️Для справки: 401 Unauthorized (Не авторизован) - для доступа к запрашиваемому ресурсу требуется аутентификация. 403 Forbidden — сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. ▶️Скрипт выведет cURL обхода авторизации, если найдет нужный метод. ➡️ Использует следующие методы обхода: header, protocol, port, HTTP, URL encode, MySQL 🐙 Перейти на Github 🔨 bash_help

⚡️ IT-обучение теперь в Telegram! В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram Вот кан
⚡️ IT-обучение теперь в Telegram! В cвязи с недавнем замедлением Ютуба — лучшие обучающие каналы переехали в Telegram Вот каналы для айтишников: 👩‍💻 DevOps: @DevOps 📱 Python: @Python 📱 GitHub: @GitHub 📱 Frontend: @Frontend ⚙️ Backend: @Backend 🤓 Общее айти: @portalToIT 👩‍💻 Java: @Java 👩‍💻 C#: @Csharp 👩‍💻 С/С++: @Cpp 🖥 Базы Данных & SQL: @SQL 👩‍💻 Golang: @Golang 🖥 PHP: @PHP 👩‍💻 Моб. разработка: @MobDev 👩‍💻 Разработка игр: @GameDev 🖥 Data Science: @DataScience 🤔 Хакинг & ИБ: @InfoSec 🐞 Тестирование: @QA 📱 Маркетинг: @Marketing 🖥 Дизайн: @Design ➡️ Сохраняйте себе, чтобы не потерять

👉 Bash Видеоуроки: 1 — Введение 2 — Основы команд 3 — Файловая система 4 — Переменные shell 5 — Чтение текстовых файлов 6 —
👉 Bash Видеоуроки: 1 — Введение 2 — Основы команд 3 — Файловая система 4 — Переменные shell 5 — Чтение текстовых файлов 6 — Основы потоков ввода-вывода 7 — Run Сommands File 8 — Pipes 9 — Command history ... 34 — Заключение. Путь развития 📹 Плейлист YouTube Канал: dmdev 🔨 bash_help

🔥Тесты для подготовки к собеседованию🔥 Выбери своё направление: 1. Frontend 2. Python 3. Java 4. Тестировщик QA 5. Data Sci
🔥Тесты для подготовки к собеседованию🔥 Выбери своё направление: 1. Frontend 2. Python 3. Java 4. Тестировщик QA 5. Data Science 6. DevOps 7. C# 8. C/C++ 9. Golang 10. PHP 11. Kotlin 12. Swift

⚙️ Rkhunter (Rootkit Hunter) — инструмент мониторинга безопасности ✔️Инструмент мониторинга безопасности для систем, совмести
⚙️ Rkhunter (Rootkit Hunter) — инструмент мониторинга безопасности ✔️Инструмент мониторинга безопасности для систем, совместимых с POSIX. Он сканирует системы на наличие руткитов и других возможных уязвимостей. ➡️ Для этого инструмент ищет: ▶️каталоги по умолчанию (где могут находиться руткиты); ▶️неправильно настроенные разрешения; ▶️скрытые файлы; ▶️модули ядра, содержащие подозрительные строки; ▶️сравнивает хэши важных файлов с известными хорошими. ➡️ Инструмент написан на Bash и может работать в большинстве UNIX-систем. 🐙 Перейти на Github 🔨 bash_help

Разбираем как решать задачи на LeetCode ✅ Примеры решений ✅ Пояснения Выбери своё направление: 1. Python 2. JavaScript 3. Jav
Разбираем как решать задачи на LeetCode ✅ Примеры решений ✅ Пояснения Выбери своё направление: 1. Python 2. JavaScript 3. Java 4. C# 5. Golang 6. C/C++ 7. PHP 8. Kotlin 9. Swift

👉 Основы Docker. Большой практический выпуск ➡️В этом выпуске Вы узнаете что такое Docker, познакомитесь с базовыми понятиям
👉 Основы Docker. Большой практический выпуск ➡️В этом выпуске Вы узнаете что такое Docker, познакомитесь с базовыми понятиями. И конечно будут практические примеры. 0:00:00 Вступление 0:02:22 Что такое Docker? 0:16:29 Простой пример Hello World 0:31:34 Пример WEB приложения 0:35:55 Работаем с портами 0:41:10 Что такое docker volume 0:46:54 Поднимаем временную базу данных 0:55:26 Разворачиваем реальный проект 1:00:35 Что такое docker-compose 1:05:23 Создаем виртуальную машину (подробно) 1:08:25 Ставим Docker и Docker compose на Linux 1:10:17 Delpoy проекта с ипользованием GitHub 1:16:50 Delpoy проекта с ипользованием DockerHub 📹 Смотреть на YouTube Канал: Артем Матяшов 🔨 bash_help

Я айтишник и я устал! Рутина, прокрастинация, куча задач и 0 желания их выполнять. Еще и в семье конфликты. Че делать? Хватит
Я айтишник и я устал! Рутина, прокрастинация, куча задач и 0 желания их выполнять. Еще и в семье конфликты. Че делать? Хватит грызть самого себя и заставлять через силу - сделаешь только хуже! Лучше подпишись на того, кто уже не первый год работает с IT-специалистами и помогает им справиться с апатией и прокрастинацией - Психолог с научным подходом. ✔️ Как оторваться от ленты соцсетей и сесть за работу с удовольствием? ✔️ Как перестать работать по выходным и при этом все успевать? ✔️ Как избавиться от постоянной тревожности? ✔️ Как успокоить конфликты в семье и перестать срываться на всех, а вместо этого получить поддержку и понимание со стороны близких? Подписывайся на канал @remizov_changes - начни работать и жить в кайф, не скатываясь в кризисы и выгорание! А в закрепе тебя уже ждут бонусы: 👨🏻‍💻 Видео, в котором ты найдёшь ответ на вопрос «Почему у тебя нет энергии и что с этим делать» + гайд как it-специалисту вернуть энергию, даже если не получается отдохнуть. https://t.me/+2whiWg4haV84ODIy

⚙️ SSL Certification Expiration Checker — программа проверки истечения срока действия SSL-сертификатов ▶️ssl-cert-check — скр
⚙️ SSL Certification Expiration Checker — программа проверки истечения срока действия SSL-сертификатов ▶️ssl-cert-check — скрипт оболочки Bourne, который можно использовать для оповещения об истечении срока действия SSL-сертификатов. ➡️ Сценарий был разработан для запуска из cron и может рассылать уведомления по электронной почте или регистрировать предупреждения через nagios. 🐙 Перейти на Github 🔨 bash_help

Крутая возможность для тех, кто уже работает с Linux и хочет глубже в него погрузиться. В двух словах: три бесплатных онлайн-
Крутая возможность для тех, кто уже работает с Linux и хочет глубже в него погрузиться. В двух словах: три бесплатных онлайн-воркшопа по Linux. Из интересного: проходят по субботам, длятся 7 часов, а внутри много практики – настройка self-hosted мессенджера, VPN-решения или облачного хранилища. Переходи по ссылке и выбирай свой воркшоп до 7 октября.

⚙️ Как разделить большой архив «tar» на несколько файлов определенного размера ✔️В этом руководстве мы кратко рассмотрим созд
⚙️ Как разделить большой архив «tar» на несколько файлов определенного размера ✔️В этом руководстве мы кратко рассмотрим создание архивных файлов и разделение их наблоки заданного размера. Мы будем использовать tar, одну из самых популярных утилит для архивирования в Linux, а также воспользуемся утилитой split, чтобы разбить наши архивные файлы на мелкие биты. ▶️Рассмотрим, как эти утилиты могут быть использованы. Следующая общая команда tar и split выглядит так:
tar options archive-name files
split options file "prefix”
Давайте теперь рассмотрим несколько примеров того, как разделить большой архив. ➡️ Пример 1 Мы можем сначала создать файл архива следующим образом:
tar -cvjf home.tar.bz2 /home/username/Documents/*
Чтобы убедиться, что файл архива был создан, а также проверить его размер, мы используем команду ls:
ls -lh home.tar.bz2
Затем, используя утилиту split, мы можем разбить файл архива home.tar.bz2 на небольшие блоки размером 100 МБ следующим образом:
split -b 100M home.tar.bz2 "home.tar.bz2.part"
ls -lh home.tar.bz2.parta*
В приведенной выше команде split опция -b используется для указания размера каждого блока, а home.tar.bz2.part является префиксом в имени каждого файла блока, созданного после разделения. ➡️ Пример 2 Как и в случае выше, здесь мы можем создать файл архива образа Ubuntu ISO.
tar -cvzf linux-ubuntu-64bit.tar.gz linuxubuntu-64bit.iso
Затем выполните те же шаги в примере 1, чтобы разделить файл архива на мелкие блоки размером 300 МБ.
ls -lh linux-ubuntu-64bit.tar.gz
split -b 300M linux-ubuntu-64bit.tar.gz "ISO-archive.part"
ls -lh ISO-archive.part*
➡️ Пример 3 В этом случае мы можем использовать поток (pipe) перенаправляя вывода команды tar для разделения, следующим образом:
tar -cvzf - wget/* | split -b 150M - "downloads-part"
Убедимся в том что разделение прошло успешно:
ls -lh downloads-parta*
В этом последнем примере нам не нужно указывать имя архива, просто используйте знак. ➡️ Как соединить файлы после разделения После успешного разделения файлов tar в Linux, вы можете соединить файлы с помощью команды cat. Использование команды cat является наиболее эффективным и надежным методом выполнения операции соединения. Чтобы объединить все блоки файла tar, мы вводим следующую команду:
cat home.tar.bz2.part* > backup.tar.bz2.joined
Мы видим, что после запуска команды cat, она объединяет все мелкие блоки, которые мы ранее создали, в исходный файл архива tar того же размера. ➡️ Как разархивировать файлы после объединения Чтобы разархивировать файл после объединения, мы вводим следующую команду
tar -xvjf backup.tar.bz2.joined -C /home/user/Documents/
🖼️ Ссылка на источник 🔨 bash_help

💸 Вакансии для IT'шников Выбери своё направление ⤵ 1. Frontend 2. Python 3. Java 4. Тестировщик QA 5. Data Science 6. DevOps 7. C# 8. C/C++ 9. Golang 10. PHP 11. Kotlin 12. Swift

⚙️ Проверка сертификата сервера из bash ✔️Проверка сертификата сервера из bash может быть полезна для мониторинга, чтобы не п
⚙️ Проверка сертификата сервера из bash ✔️Проверка сертификата сервера из bash может быть полезна для мониторинга, чтобы не пропустить дату продления сертификата. Такие проблемы как продление доменного имени и продление SSL-сертификата достаточно распространены, даже серьезные организации иногда забывают проплатить домен или купить новый сертификат. Поэтому хорошей практикой является мониторинг даты окончания действия сертификата и доменного имени. С доменным именем разберемся в другой раз, а пока давайте посмотрим, как написать скрипт, который не только покажет поля сертификата на удаленном сервере, но и скажет, сколько дней осталось до окончания сертификата. ➡️ Что нам потребуется ▶️Для проверки будем использовать, естественно, Linux. Именно на нем чаще всего стоят системы мониторинга, такие как Zabbix и Nagios. Кроме сервера с Linux’ом нам еще кое-что потребуется. Прежде всего OpenSSL (чем свежее, тем лучше), и, конечно же, bash, на котором мы и будем писать скрипт. Этот скрипт будет полезен как при ручной проверке, так и при автоматизированных проверках. ➡️ Проверка сертификата сервера из bash ▶️Вот как будет организована проверка. Мы открываем SSL-соединение с сервером, получаем сертификат, передаем его на обработку OpenSSL (openssl x509), получая таким образом информацию по полям, а если нам нужно посчитать, сколько времени осталось до истечения срока действия сертификата, будет использовать отдельный параметр, который нам просто выведет количество дней в формате «N days». ➡️ Что можно улучшить ▶️Можно дописать свои функции, которые будут выводить информация в удобном для дальнейшего использования формате, если вы планируете куда-то передавать эти данные для статистики или обработки. Плюс можно добавить проверку параметров (выводить текст о том, что недостаточно параметров), но в данном случае это не так важно, поскольку назначение этого скрипта — мониторинг, что значит, что, скорее всего, настраиваться он будет один раз. 🖼️ Ссылка на скрипт 🔨 bash_help

В Telegram появились 2 классных проекта, о которых должны знать IT-специалисты. 🧑‍💻 NetworkAdmin.ru — автор делится полезно
В Telegram появились 2 классных проекта, о которых должны знать IT-специалисты. 🧑‍💻 NetworkAdmin.ru автор делится полезной информацией про Windows/Linux, актуальными уязвимостями, а также историями из личного опыта в IT. ⚙️ EasyTools — бот содержит набор инструментов для айтишников. Поможет получить необходимую информацию не выходя из мессенджера. Подпишись, чтобы не потерять.

Вам нравится читать контент на этом канале? Возможно, вы задумывались о том, чтобы купить на нем интеграцию? Следуйте 3 простым шагам, чтобы сделать это: 1) Регистрируйтесь по ссылке: https://telega.in/n/bash_help 2) Пополняйтесь удобным способом 3) Размещайте публикацию Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.

⚙️ QEMU-QuickBoot ✔️Графический интерфейс Zenity для быстрого и простого развертывания виртуальных машин QEMU. ▶️QEMU-QuickBo
⚙️ QEMU-QuickBoot ✔️Графический интерфейс Zenity для быстрого и простого развертывания виртуальных машин QEMU. ▶️QEMU-QuickBoot - это Bash-скрипт, предназначенный для упрощения развертывания виртуальных машин (ВМ) с использованием QEMU, с удобным графическим интерфейсом, предоставляемым Zenity. Он позволяет пользователям быстро создавать и загружать виртуальные машины прямо с рабочего стола, используя в качестве исходного носителя подключенные физические устройства или файлы загрузочных образов. ➡️ Ключевые особенности: ▶️Пользовательский интерфейс: Использует Zenity для предоставления простого интерфейса для выбора источников загрузки и конфигураций виртуальной машины. ▶️Множество вариантов загрузки: Поддерживает загрузку виртуальных машин с подключенных устройств, различных форматов файлов (.vhd, .img, .iso), а также ISO-образов с виртуальными или физическими дисками. ▶️Динамическая настройка ОЗУ: Позволяет пользователям указывать количество оперативной памяти (в МБ), выделяемое для виртуальной машины. ▶️Поддержка BIOS и UEFI: Предоставляет опции для загрузки в режимах BIOS или UEFI. ▶️Обработка ошибок: Включает обработку ошибок, обеспечивая бесперебойную работу и обратную связь с пользователем на протяжении всего процесса настройки виртуальной машины. 🐙 Перейти на Github 🔨 bash_help