BashMaster
Open in Telegram
Удобные консольные наработки на каждый день для разработчиков, девопсов и сисадминов. Реклама: @Kone4noVasya Канал на бирже: https://telega.in/c/bash_help
Show more8 715
Subscribers
No data24 hours
-137 days
+10930 days
Posts Archive
8 715
Массивы bash
Если вы используете «стандартную» оболочку *NIX-системы, возможно, вы не знакомы с такой полезной особенностью bash как массивы. Хотя массивы в bash не так круты, как в P-языках (Perl, Python и PHP) и других языках программирования, они часто бывают полезны.
Bash-массивы имеют только численные индексы, но они не обязательны к использованию, то есть вы не должны определять значения всех индексов в явном виде. Массив целиком может быть определен путем заключения записей в круглые скобки:
arr=(Hello World)Отдельные записи могут быть определены с помощью знакомого всем синтаксиса (от Бейсика (да простит меня Дейкстра — прим. переводчика) до Фортрана):
arr[0]=Hello arr[1]=WorldПравда, обратное выглядит сравнительно более уродливо. Если нужно обратиться к определенной записи, тогда:
echo ${arr[0]} ${arr[1]}
Из страницы man:
"Фигурные скобки нужны для предотвращения конфликтов при разворачивании полных путей к файлам."
Кроме того, доступны следующие странноватые конструкции:
${arr[*]} # Все записи в массиве
${!arr[*]}# Все индексы в массиве
${#arr[*]}# Количество записей в массиве
${#arr[0]}# Длина первой записи (нумерация с нуля)
${!arr[*]} — сравнительно новое дополнение в bash и не является частью оригинальной реализации. Следующая конструкция демонстрирует пример простого использования массива. Обратите внимание на "[index]=value", это позволяет назначить конкретное значение конкретному номеру записи.
🖼️ Дочитать на Хабре
🔨 bash_help8 715
Bash Basics
Видеоуроки:
1 — Access and Navigation
2 — Creating & Editing Text FIles
3 — Privileges and Permissions
4 — Finding Documentation and Files
5 — User Accounts and Passwords
6 — Managing Software
7 — System Administration Tools
8 — Bash Scripting
📹 Плейлист на YouTube
🔨 bash_help
8 715
Termux-Games — играйте в игры в Termux
Termux-Games — это скрипт, в котором вы сможете обнаружить все игры, предназначенные для использования в Termux.
Шаги установки:
1.Установите git:
pkg install git -y
2.Склонируйте репозиторий: git clone https://github.com/Err0r-ICA/Games
3.Перейдите в каталог Games: cd Games
4.Выставите права на выполнение: chmod +x *
5.Запустите скрипт установки: bash install.sh
6.Запустите Termux-Games: bash Games
Termux-Games предоставляет удобный способ наслаждаться разнообразным миром игр прямо из вашего Termux-окружения.
🐙 Перейти на Github
🔨 bash_help8 715
Бесплатный мини-курс для тех, кто интересуется Python! Минимум скучной теории — больше мощной практики на реальных задачах разработчиков. Один мини-курс — сразу 4 проекта в портфолио!
Записаться и узнать подробную программу: https://epic.st/x9p3TZ
За 4 занятия вы изучите видеоматериалы. После каждого видео есть практическое задание.
— Разберёте базовый синтаксис языка.
— Создадите бота для Telegram, который умеет переводить голос в текст.
— Сделаете бота умнее — научите его обрабатывать фотографии.
— Узнаете, как парсить сайты — собирать информацию с веб-страниц в удобные таблицы.
— Напишете сайт с помощью инструмента Flask.
В финале мини-курса вас ждёт прямой эфир с экспертом Анастасией Борневой — руководителем направления по исследованию данных в «Сбере». В прямом эфире она поделится профессиональными секретами, разберёт ваши работы и ответит на вопросы.
Вас ждут крутые подарки: чек-листы, гайды, скринкасты и другие бонусы. Эти материалы пригодятся в работе и помогут больше узнать о профессии.
Откройте новые возможности в новом году!
Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
8 715
Как следить за каталогом на предмет создания новых файлов в Linux
Чтобы выполнить команду при создании нового файла в папке в системе Linux, можно использовать комбинацию инструментов и скриптов.
Один из распространенных подходов – использование inotify-tools, утилиты, позволяющей отслеживать события файловой системы, в сочетании со скриптом оболочки.
Вот базовая схема того, как это можно настроить:
Шаг 1: Установите inotify-tools
Шаг 2: Создание скрипта
Шаг 3: Запустите скрипт
Шаг 4: Запуск скрипта в фоновом режиме
Шаг 5: Запуск скрипт в качестве службы Systemd
Шаг 1: Установите inotify-tools
Сначала вам нужно установить
inotify-tools.
Обычно вы можете установить его с помощью менеджера пакетов.
Шаг 2: Создание скрипта
Далее создайте bash скрипт, который использует inotifywait (часть inotify-tools) для мониторинга каталога на предмет новых файлов и затем вызывает API при обнаружении нового файла.
Ниже приведен простой пример того, как может выглядеть этот скрипт:
#!/bin/bash
# Папка для мониторинг
MONITOR_DIR="/path/to/your/directory"
# Ваша команда
# CUSTOM_COMMAND="curl -X POST -d @newfile http://your.api.endpoint"
# Отслеживаем новые файлы и вызываем API
inotifywait -m -e create --format '%w%f' "$MONITOR_DIR" | while read NEWFILE
do
echo "Новый файл: $NEWFILE"
#Снимите комментарий, чтобы выполнять пользовательские команды и вызывать API
#eval $CUSTOM_COMMAND
done
В этом скрипте замените /path/to/your/directory на путь к папке, которую вы хотите контролировать, а http://your.api.endpoint – на конечную точку API, которую вы хотите вызвать.
Вы также можете изменить CALL_API_COMMAND, чтобы включить в нее все необходимые заголовки, данные или опции для вашего конкретного вызова API.
🖼️ Дочитать статью
🔨 bash_help8 715
Учитесь тому, что пригодится в работе и в жизни — бесплатно, с Яндекс Практикумом.
Тут на одной странице собраны курсы, которые помогут попробовать себя в разных IT-профессиях и получить практический навык. 17 разных курсов по программированию, аналитике данных, маркетингу, менеджменту и дизайну. Прохождение занимает от 2 до 20 часов.
Например, можно разобраться в основах Java, научиться искать и нанимать тестировщиков, задизайнить плакат для фестиваля еды и ещё много чего.
Выбирайте курс по душе и пробуйте себя в разных профессиях!
8 715
Запрет пользователям запускать `chmod 777`
Создание пользовательского скрипта-обертки для chmod может помочь вам управлять и ограничивать использование определенных команд chmod, например, предотвращать установку разрешений 777.
Ниже приведен базовый пример того, как можно создать такой скрипт в Ubuntu или любой другой системе на базе Linux.
1. Создайте скрипт: Вы создадите скрипт с именем
safe_chmod и поместите его в каталог /usr/local/bin, который обычно находится в $PATH пользователя.
2. Содержание скрипта:
Скрипт будет проверять наличие определенного шаблона прав (например, 777) и выводить предупреждение, если такой шаблон используется.
Во всех остальных случаях он выполнит обычную команду chmod.
3. Сделайте сценарий исполняемым: После создания скрипта вам нужно будет сделать его исполняемым.
4. Создайте алиас: Создайте алиас safe_chmod для chmod в скриптах входа/не входа в систему
🖼️ Дочитать статью
🔨 bash_help8 715
Лучшие практики bash-скриптов: краткое руководство по надежным и производительным скриптам bash
Отладка сценариев bash — это как поиск иголки в стоге сена, тем более, когда новые дополнения появляются в существующей кодовой базе без своевременного рассмотрения вопросов структуры, логирования и надежности. В таких ситуациях можно оказаться как из-за собственных ошибок, так и при управлении сложными нагромождениями скриптов.
Команда Mail.ru Cloud Solutions перевела статью с рекомендациям, благодаря которым вы сможете лучше писать, отлаживать и поддерживать свои сценарии. Хотите верьте, хотите нет, но ничто не может сравниться с удовлетворением от написания чистого, готового к использованию bash-кода, который работает каждый раз.
В статье автор делится тем, что узнал за последние несколько лет, а также некоторыми распространенными ошибками, которые заставали его врасплох. Это важно, потому что каждый разработчик программного обеспечения в определенный момент своей карьеры работает со сценариями для автоматизации рутинных рабочих задач.
🖼️ Прочитать статью
🔨 bash_help
8 715
Dynamic-wallpaper
Простой bash-скрипт для установки обоев в зависимости от текущего времени, используя планировщик заданий cron.
🐙 Перейти на Github
🔨 bash_help
8 715
Repost from KazDevOps
🗣Внимание, конкурс!
Разыгрываем 10 ваучеров на бесплатное обучение и сертификацию от The Linux Foundation. Ваучеры дают 100% скидку на курс или экзамен из списка ниже до 17.01.2025 — и мы хотим ими поделиться:
🟣 Каталог электронных курсов
🟣 Каталог сертификации
Их можно применить к любому:
— онлайн-курсу
— сертификационному экзамену
— или пакету (курс + сертификация)
🤝 CKA, CKS, CKAD и другие — в комплекте!
Условия розыгрыша просты: 🔵 Подпишитесь на KazDevOps и оставьте комментарий "+" под этим постом.
🚩 Комментарий обязательно оставлять в официальном аккаунте KazDevOps
🥳 9 февраля подведем итоги и выберем 10 победителей методом генерации случайных чисел. Каждый получит по ваучеру. Активировать ваучеры нужно до 17.01.2025.
Go-go-go, и успехов!
#kubernetes #cka #ckad #cks #k8s #linuxfoundation #cncf
@DevOpsKaz
8 715
4nonimizer — bash-скрипт для анонимизации
Bash-скрипт для анонимизации общедоступного IP-адреса, используемого для просмотра Интернета, управления подключением к сети TOR и к различным провайдерам VPN (OpenVPN), будь то бесплатный или платный. По умолчанию он включает в себя несколько предварительно настроенных VPN-подключений к разным одноранговым узлам (OVPN-файлы) и загружает учетные данные (если соответствующий поставщик поддерживает их). Кроме того, он записывает каждый использованный IP-адрес, который мы используем каждые 300 секунд в файлах журнала.
🐙 Перейти на Github
🔨 bash_help
8 715
Bash-it – Bash Framework для управления вашими скриптами и алиасами
Если вы ежедневно используете оболочку Bash и ищете простой способ отслеживать все ваши скрипты, алиасы и функции, то Bash-it для вас отлично подойдет.
Чтобы установить Bash-it, сначала вам нужно клонировать следующий репозиторий в папку по вашему выбору, например:
$ git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it
Затем выполните следующую команду, чтобы установить Bash-it (он автоматически создает резервную копию ~/.bash_profile или ~/.bashrc, в зависимости от вашей ОС).
Вас спросят: «Would you like to keep your .bashrc and append bash-it templates at the end? [y/N]», ответьте в соответствии с вашими предпочтениями.
$ ~/.bash_it/install.sh
После установки вы можете использовать команду ls для проверки установленных файлов и каталогов bash-it
$ ls .bash_it/
Чтобы начать использовать Bash-it, откройте новую вкладку или запустите:
$ source $HOME/.bashrc
🖼️ Дочитать статью
🔨 bash_help8 715
🚀 Компания УЦСБ приглашает специалистов по информационной безопасности на One Day Offer. Всего за один день вы сможете пройти все этапы отбора и стать частью команды УЦСБ с возможностью работать удалённо из любой точки РФ.
Принять участие: https://cnrlink.com/usscbashm
Приглашаются:
1. Инженеры по безопасности приложений (AppSec);
2. Аналитики по информационной безопасности (Аудит);
3. Специалисты по анализу защищенности (pentest);
4. Аналитики по информационной безопасности (разработка).
Всё пройдёт в онлайн-формате:
● до 15 февраля включительно открыт приём заявок;
● 17 февраля – знакомство с командой, техническое интервью и отправка офферов.
Уральский центр систем безопасности — федеральный системный интегратор, специализирующийся на создании и модернизации ИТ-систем предприятий, а также предоставлении услуг в сфере ИБ.
Присоединяйтесь к команде профессионалов, регистрируйтесь до 15 февраля: https://cnrlink.com/usscbashm
Реклама. ООО "УЦСБ". ИНН 6672235068. erid: LjN8KJq19
8 715
Bash-скрипт для проверки адреса IPv4
Откройте свой любимый текстовый редактор и запустите новый файл.
Мы будем использовать функцию для проверки IPv4-адреса
Эта функция использует регулярные выражения для проверки соответствия вводимых данных шаблону IPv4.
#!/bin/bash
# Filename: validate_ip.sh
validate_ip() {
local ip=$1
local stat=1
if [[ $ip =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
OIFS=$IFS
IFS='.'
ip=($ip)
IFS=$OIFS
[[ ${ip[0]} -le 255 && ${ip[1]} -le 255 && ${ip[2]} -le 255 && ${ip[3]} -le 255 ]]
stat=$?
fi
return $stat
}
echo -n "Enter IPv4 address: "
read ip_address
if validate_ip $ip_address; then
echo "${ip_address} is a valid IPv4 address."
else
echo "${ip_address} is a invalid IPv4 address."
fi
Проверка скрипта
**Сделайте скрипт исполняемым: chmod +x validate_ip.sh
**Запустите скрипт: ./validate_ip.sh
**Введите IPv4-адрес, когда появится запрос.
🔨 bash_help8 715
Bash-Snippets — полезные сценарии BASH для пользователей командной строки
Сегодня я наткнулся на коллекцию полезных сценариев BASH для активных пользователей командной строки. Эти скрипты, известные как Bash-Snippets, весьма полезны для пользователей командной строки. Хотите узнать погоду в том месте, где вы живете? Есть скрипт, который сделает это за вас. Хотите знать, какова цена акций? Вы можете запустить скрипт, который отображает текущую информацию об акции. Скучно? Посмотрите несколько видеороликов на YouTube. Все из командной строки! На самом деле вам не нужны никакие приложения с графическим интерфейсом, потребляющие память.
Bash-Snippets предоставляет следующие сценарии:
Cheat — шпаргалка по командам Linux.
Cloudup – инструмент для резервного копирования репозиториев GitHub в Bitbucket.
Crypt — шифрование и расшифровка файлов.
Криптовалюта – конвертирует криптовалюту на основе обменных курсов 10 топовых криптовалют в реальном времени.
Валюта – конвертер валют.
География – предоставляет сведения о глобальной сети, локальной сети, маршрутизаторе, DNS, Mac и IP.
Текст. Быстро извлекайте тексты песен из командной строки.
Мем — создатель мемов из командной строки.
Фильмы – поиск и отображение сведений о фильме.
Ньютон — выполняет числовые вычисления вплоть до символьного математического анализа.
Qrify — превращает заданную строку в qr-код.
Короткий – сокращение URL-адресов
Шифры сайта. Проверьте, какие шифры включены или отключены для данного https-сайта.
Акции – предоставляет определенную информацию об акциях.
Вкус – система рекомендаций, которая предоставляет три похожих элемента, подобных поставляемому элементу (это могут быть книги, музыка, исполнители, фильмы, игры и т. д.).
Todo – менеджер задач из командной строки.
Перенос — быстрая передача файлов из командной строки.
Погода – отображает информацию о погоде в вашем месте.
Youtube-Viewer – смотрите YouTube с помощью терминала.
🐙 Перейти на Github
🔨 bash_help
8 715
Быстрое изучение Bash: 30 легких команд для новичков
Список из 30 легких команд, с которыми вы быстро освоите Bash и не будете бояться терминала Linux. Идеально для новичков.
Первые команды – учимся ходить
Современные файловые системы – это древовидные каталоги с корневой и родительскими директориями. Движение вверх по родительским каталогам приводит к корневому. В некоторых системах встречается несколько корневых каталогов, например, всем известные диски Windows: C:\ , A:\, etc.
Но в Unix-подобных системах все по-другому: здесь принят один корневой каталог с именем \. А вот и основные команды Bash для перемещения по файловой системе:
pwd / ls / cdПри работе в файловой системе пользователь находится в каталоге, который называется текущим или рабочим. **Команда
pwd выводит рабочий каталог пользователя
**С ls вы сможете вывести содержимое каталога (файлы и дочерние директории)
**Перейти в другой каталог поможет cd
**Используйте команду cd .. для быстрого перемещения в родительскую директорию
**Сокращение cd ~ используется для перемещения домой, в /home/$USER
Три bash команды для управления
**Иногда вам потребуется запускать эти команды одну за другой. Тогда на помощь приходит оператор ;
**Точка с запятой означает, что сначала перечисляется содержимое рабочего каталога с помощью ls, а затем pwd выводит местоположение каталога. Еще один полезный инструмент для создания цепочек команд – &&. При использовании && команда справа не будет выполняться, если команда слева не выполнена. Но если использовать ;, вторая команда выполняется даже после ошибки в первой
**Команда & похожа на &&, но на самом деле выполняет другую функцию. Часто процессы блокируют ввод в терминал во время работы. Чтобы свернуть подобный процесс в фон, используйте & в конце команды. Тогда процесс выполняется в фоне, не блокируя ввод в окно терминала
🖼️ Дочитать статью
🔨 bash_help8 715
Необычные и малоизвестные трюки с перенаправлениями в bash, которые могут значительно упростить работу
/dev/tcpМногие пользователи Linux не подозревают, что bash особым образом обрабатывает перенаправление в файл
/dev/tcp/host/port, и если host - это допустимое имя хоста или ip адрес, а port - целое число порта или имя службы, пытается открыть соответствующий TCP-сокет.
Например, перенаправим вывод TCP сервера времени на cat и выведем на экран:
$cat < /dev/tcp/time.nist.gov/13
60311 24-01-02 10:43:53 00 0 0 798.9 UTC(NIST) *
Более сложный пример - HTTP запрос. Давайте создадим новый файловый дескриптор, перенаправим на него строку HTTP-запроса, затем прочитаем ответ.
$exec 5<>/dev/tcp/google.de/80 $echo -e "GET / HTTP/1.1\nhost: google.de\n\n" >&5 $cat <&5 | head HTTP/1.1 301 Moved Permanently Location: http://www.google.de/ Content-Type: text/html; charset=UTF-8 Date: Thu, 18 Nov 2021 08:27:18 GMT Expires: Sat, 18 Dec 2021 08:27:18 GMT Cache-Control: public, max-age=2592000 Server: gws Content-Length: 218 X-XSS-Protection: 0 X-Frame-Options: SAMEORIGINPlaceholder
-
Некоторые команды, например tar, воспринимают символ - как перевод на стандартный вывод, что позволит воспользоваться результатом работы команды без создания промежуточных файлов, например создадим бэкап директории /www/data и скопируем по ssh:
tar zcvf - /www/data | ssh user@remoter "cat > /backup/wwwdata.tar.gz"
Группировка команд
Передача стандартного вывода одной команды в стандартный ввод другой команды - мощный инструмент. Но что, если вам нужно передать стандартный вывод нескольких команд? Для того чтобы объединить вывод нескольких команд можно использовать группировку команд, для этого используется синтаксис:{ command1; command2; }, например объединим вывод команд ls, чтобы подсчитать количество файлов в двух директориях:
$mkdir dir{1,2}
$touch dir1/test1.txt
$touch dir2/test2.txt
${ ls dir1; ls dir2; } | wc -l
2
🖼️ Дочитать статью
🔨 bash_help8 715
xdotool - эмулятор действий мыши и клавиатуры
Утилита предоставляет широкие возможности по управлению клавиатурой и мышью. Позволяет эмулировать нажатие клавиш и двигать курсор мыши. Некоторые примеры пригодятся при написании bash скриптов или для динамической подвязки горячих клавиш. Также вы можете заранее определить текст, который нужно ввести в определенное поле при определенных условиях.
*Xdotool
умеет переключать клавиши с индикаторами *lock, однако сами световые индикаторы не изменяют свое состояние.
Есть другие утилиты для эмуляции нажатия клавиш xvkbd, xte (менее функциональная) и для работы с буфером обмена - xsel, xclip.
Определить keycode и keysym клавиши, а также дополнительную информацию о клавише, можно утилитами xev или xkeycaps.
Также можно получить комбинацию клавиш утилитой xbindkeys:
xbindkeys -k
Примеры использования
Эмулировать нажатие клавиш по названию:
xdotool key Shift+Left xdotool key Control+c xdotool key Alt+Tab xdotool key Shift+Caps_Lock xdotool key XF86AudioRaiseVolume xdotool key XF86AudioLowerVolume xdotool keyup Mod2+Mod4+m ## Отпустить клавиши xdotool key Ctrl+Alt+Shift+m🖼️ Дочитать статью 🔨 bash_help
8 715
Больше не нужно собирать целый стек программ
В ИКС весь набор софта для управления сетью и инфрой: межсетевой экран, DHCP-сервер, DNS, NAT, VPN-сервер, система обнаружения и предотвращения вторжений IPS/IDS, функции контроля приложении, WAF, потоковый антивирус, прокси-сервер, файловый сервер, контент-фильтр, защищенная почта, корпоративная телефония и многое другое.
Для тех, кто хочет протестировать новую 11 версию ИКС, - ссылка на бесплатный триал 35 дней.
А для тех, кто пока не готов тестировать, но хочет посмотреть, - ссылка на Демо день, где все покажут и на вопросы ответят.
Реклама, ООО «А-Реал Консалтинг», ИНН 7606047112. Токен LjN8K7QKp
8 715
Поиск по StackOverflow из командной строки
На GitHub опубликовали утилиту how2, которая даёт возможность удобно искать на StackOverflow прямо из командной строки. Получается нечто похожее на man, но с глобальным поиском по базе SO и возможностями составлять запросы на обычном (английском) языке.
Установить утилиту можно через npm:
npm install -g how2
Если появятся ошибки доступа, то загляните сюда. Или используйте команду:
sudo npm install -g how2
Если у вас нет npm, то установите Node.js:
sudo apt-get install nodejs npm
Если вы не указали обратное, то язык по умолчанию считается Bash.
Как это работает?
Утилита how2 использует Google и StackOverflow API, потому что собственный поиск SO не так хорош.
Зачем это надо?
Потому что программисты часто забывают, как сделать некоторые простые вещи. А читать маны слишком долго.
🐙 Перейти на Github
🔨 bash_help
Available now! Telegram Research 2025 — the year's key insights 
