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

Реклама: @Kone4noVasya

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

✔️Графический интерфейс Zenity для быстрого и простого развертывания виртуальных машин QEMU.

▶️QEMU-QuickBoot - это Bash-скрипт, предназначенный для упрощения развертывания виртуальных машин (ВМ) с использованием QEMU, с удобным графическим интерфейсом, предоставляемым Zenity. Он позволяет пользователям быстро создавать и загружать виртуальные машины прямо с рабочего стола, используя в качестве исходного носителя подключенные физические устройства или файлы загрузочных образов.

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

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
5🔥4👍3
Вам нравится читать контент на этом канале?

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

Следуйте 3 простым шагам, чтобы сделать это:

1) Регистрируйтесь по ссылке: https://telega.in/n/bash_help
2) Пополняйтесь удобным способом
3) Размещайте публикацию

Если тематика вашего поста подойдет нашему каналу, мы с удовольствием опубликуем его.
👍11🔥2
В Telegram появились 2 классных проекта, о которых должны знать IT-специалисты.

🧑‍💻 NetworkAdmin.ru автор делится полезной информацией про Windows/Linux, актуальными уязвимостями, а также историями из личного опыта в IT.

⚙️ EasyTools — бот содержит набор инструментов для айтишников. Поможет получить необходимую информацию не выходя из мессенджера.

Подпишись, чтобы не потерять.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2😐2
⚙️ Проверка сертификата сервера из bash

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

➡️ Что нам потребуется
▶️Для проверки будем использовать, естественно, Linux. Именно на нем чаще всего стоят системы мониторинга, такие как Zabbix и Nagios. Кроме сервера с Linux’ом нам еще кое-что потребуется. Прежде всего OpenSSL (чем свежее, тем лучше), и, конечно же, bash, на котором мы и будем писать скрипт. Этот скрипт будет полезен как при ручной проверке, так и при автоматизированных проверках.

➡️ Проверка сертификата сервера из bash
▶️Вот как будет организована проверка. Мы открываем SSL-соединение с сервером, получаем сертификат, передаем его на обработку OpenSSL (openssl x509), получая таким образом информацию по полям, а если нам нужно посчитать, сколько времени осталось до истечения срока действия сертификата, будет использовать отдельный параметр, который нам просто выведет количество дней в формате «N days».

➡️ Что можно улучшить
▶️Можно дописать свои функции, которые будут выводить информация в удобном для дальнейшего использования формате, если вы планируете куда-то передавать эти данные для статистики или обработки. Плюс можно добавить проверку параметров (выводить текст о том, что недостаточно параметров), но в данном случае это не так важно, поскольку назначение этого скрипта — мониторинг, что значит, что, скорее всего, настраиваться он будет один раз.

🖼️ Ссылка на скрипт

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍4🔥4😐1
💸 Вакансии для 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2😐1
⚙️ Как разделить большой архив «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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥2
Крутая возможность для тех, кто уже работает с Linux и хочет глубже в него погрузиться.

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

Переходи по ссылке и выбирай свой воркшоп до 7 октября.
2👍1🔥1
⚙️ SSL Certification Expiration Checker — программа проверки истечения срока действия SSL-сертификатов

▶️ssl-cert-check — скрипт оболочки Bourne, который можно использовать для оповещения об истечении срока действия SSL-сертификатов.

➡️ Сценарий был разработан для запуска из cron и может рассылать уведомления по электронной почте или регистрировать предупреждения через nagios.

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥3
Я айтишник и я устал!
Рутина, прокрастинация, куча задач и 0 желания их выполнять. Еще и в семье конфликты. Че делать?

Хватит грызть самого себя и заставлять через силу - сделаешь только хуже!

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

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

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

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

https://t.me/+2whiWg4haV84ODIy
2👍1🔥1
👉 Основы 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
Please open Telegram to view this post
VIEW IN TELEGRAM
8🔥7👍6
Разбираем как решать задачи на LeetCode

Примеры решений
Пояснения

Выбери своё направление:

1. Python
2. JavaScript
3. Java
4. C#
5. Golang
6. C/C++
7. PHP
8. Kotlin
9. Swift
👍31🔥1
⚙️ Rkhunter (Rootkit Hunter) — инструмент мониторинга безопасности

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

➡️ Для этого инструмент ищет:
▶️каталоги по умолчанию (где могут находиться руткиты);
▶️неправильно настроенные разрешения;
▶️скрытые файлы;
▶️модули ядра, содержащие подозрительные строки;
▶️сравнивает хэши важных файлов с известными хорошими.

➡️ Инструмент написан на Bash и может работать в большинстве UNIX-систем.

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥3
🔥Тесты для подготовки к собеседованию🔥
Выбери своё направление:

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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍31🔥1
👉 Bash

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

📹 Плейлист YouTube

Канал: dmdev

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥53👍3
⚡️ 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

➡️ Сохраняйте себе, чтобы не потерять
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52🔥1
⚙️ 4-ZERO-3 — инструмент обхода ошибок 403/401 в ответах сервера

✔️Для справки: 401 Unauthorized (Не авторизован) - для доступа к запрашиваемому ресурсу требуется аутентификация. 403 Forbidden — сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу.

▶️Скрипт выведет cURL обхода авторизации, если найдет нужный метод.

➡️ Использует следующие методы обхода: header, protocol, port, HTTP, URL encode, MySQL

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥43
📚 Здесь собраны все вопросы, которые могут спросить на собеседовании. Теперь можно легко получить оффер, подготовившись к самым популярным вопросам. Просто выбери своё направление:

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
👍21🔥1
⚙️ Автоматизация сканирования открытых сетевых портов

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

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

➡️ В рамках данной статьи мы рассмотрим следующие пункты:
▶️разработка скрипта для поиска поддоменов;
▶️разработка скрипта для преобразования найденных поддоменов в IP-адреса;
▶️разработка скрипта для сканирования внешней сети при помощи утилиты Nmap и сбора информации о доступных портах;
▶️разработка телеграмм-бота для автоматизации.

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥64
Залетай на CyberCamp 2024!

3–5 октября пройдет главный онлайн-кэмп по практической безопасности ⚡️

Эксперты BI.ZONЕ, F.A.C.C.T., Positive Technologies, R-Vision, Инфосистемы Джет, Лаборатория Касперского, Код Безопасности и других подготовили практику и кейсы для всех участников 🔥

Что еще будет на кэмпе:
🔗 Интерактивный эфир, доклады и практические задания для всех
🔗 Общий призовой фонд — 5 000 000 рублей
🔗 Призы и мерч для активных участников и лидеров рейтинга
🔗 Самые масштабные в России командные киберучения

Бронируйте время в календаре и присоединяйтесь! Участие бесплатное.

Регистрация и программа на сайте

P.S. Если вы еще не успели зарегистрироваться, поспешите — в этом году организаторы кэмпа заранее подготовили несколько докладов и заданий для участников. Все задания, которые откроют до начала эфира, закроются ровно в 8:00 мск 3 октября.
👍4🔥43
⚙️ Параллельное выполнение в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍104🔥4