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

Реклама: @Kone4noVasya

Канал на бирже: https://telega.in/c/bash_help
Download Telegram
Устали от ограничений и долгой настройки серверов? HSVDS поможет в работе!

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

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

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

HSVDS — это стабильность, готовые решения и свобода для ваших идей 💻
⚙️ Классификация команд оболочки 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
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Как настроить цвета и содержимое 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
Please open Telegram to view this post
VIEW IN TELEGRAM
infosec - один из самых ламповых каналов по информационной безопасности, где говорят об истории ИТ, публикуют актуальные новости и пишут технический материал по разным темам:

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

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

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

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

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Шпаргалка по Bash — инфографика от sysexplore.com

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

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
В России можно посещать бесплатные IT-мероприятия хоть каждый день: как оффлайн, так и онлайн.

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

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

Всё публикуют здесь.
⚙️ ️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
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
🔥 Ты готов к РЕВОЛЮЦИИ? Тогда тебе точно сюда!

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

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

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

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

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

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

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

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

Присоединяйся, и вместе создадим БУДУЩЕЕ!
⚙️ Список действий, если подозреваете, что ваш сервер был взломан

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

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

▶️Можно посмотреть список изменённых файлов за последнее время. Не факт, что поможет, так как изменить дату модификации файла не сложно, но тем не менее, это может помочь:
# 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
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Используй новогодние выходные наилучшим образом!

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

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

Ссылка для своих: https://t.me/+uZU9Jq_qa_djOTcy
Please open Telegram to view this post
VIEW IN TELEGRAM
✔️ Научим писать плейбуки и модули ✔️

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
👎🏼 Все время просиживать за работой, общаться только с коллегами и начальником

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

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

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

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

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

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

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

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

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Освой сети и командную строку с лучшими обучающими каналами

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

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

📱 BashTex - обучение работе с командной строкой
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Перенос дампа таблицы с одного 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 sshuser@10.20.30.45:/tmp

# Выполняю на втором сервере ряд заданий в рамках ssh сессии: распаковываю дамп таблицы, очищаю таблицу на этом сервере, заливаю туда данные из дампа
/usr/bin/ssh sshuser@10.20.30.45 '/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 sshuser@10.20.30.45 'rm /tmp/"$(date +%Y-%m-%d)"-table01.sql'

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

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

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

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Скрипт для очистки кэша оперативной памяти

✔️Скрипт проверяет объём кэша в оперативной памяти и при превышении в 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
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Inshellisense

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

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

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

🐙 Перейти на Github

🔨 bash_help
Please open Telegram to view this post
VIEW IN TELEGRAM
⚙️ Как писать красивые и безопасные bash скрипты

✔️Добавить в начало скрипта:
set -euxo pipefail


➡️ Что всё это значит:
▶️set -e - прекращает выполнение скрипта если команда завершилась ошибкой, выводит в stderr строку с ошибкой. Обойти эту проверку можно добавив в пайплайн к команде true: mycommand | true.

▶️set -u - прекращает выполнение скрипта, если встретилась несуществующая переменная.

▶️set -x - выводит выполняемые команды в stdout перед выполненинем.

▶️set -o pipefail - прекращает выполнение скрипта, даже если одна из частей пайпа завершилась ошибкой. В этом случае bash-скрипт завершит выполнение, если mycommand вернёт ошибку, не смотря на true в конце пайплайна: mycommand | true.

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

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