Bash Советы
2.23K subscribers
82 photos
8 videos
7 links
🚀 Секреты и советы по Bash

🔹 Полезные трюки, хитрые однострочники и лайфхаки для работы в терминале.
🔹 Автоматизация, скрипты и оптимизация работы в Linux.
🔹 Стать мастером Bash легко – просто подпишись!

💻 Прокачивай терминал вместе с нами! 👇
Download Telegram
🔥 Регулярки для админов — Часть 2

Сегодня поговорим про замену и обработку данных с помощью sed


1. Маскирование конфиденциальных данных (пароли, токены)


sed -E 's/(password|token)=\S+/\1=***HIDDEN***/g' config.txt


Что делает:

- Находит password=что-то или token=что-то.
- Заменяет значение на ***HIDDEN***.


2. Удалить все цифры из файла


sed -E 's/[0-9]+//g' file.txt


Что делает:

- [] — диапазон символов.
- + — одно или больше вхождений.


3. Быстро поменять домен в конфиге


sed -E 's/(server_name\s+).*/\1newdomain.com/' /etc/nginx/sites-available/site.conf


Что делает:

- Захватывает server_name и всё после него.
- Заменяет домен на newdomain.com.


4. Удалить строки, содержащие определённые слова


sed -E '/(DEBUG|TRACE)/d' app.log


Что делает:

- /(...)/d — удаляет строки, содержащие DEBUG или TRACE.

👉@bash_srv
👍41
🔄 Мониторинг доступности сайта с уведомлением в Telegram

Хотите знать, когда ваш сайт «упал»? Ниже написал простой Bash-скрипт, который проверяет доступность ресурса и шлёт уведомление в Telegram.


#!/bin/bash
# автор: https://t.iss.one/bash_srv

# Настройки
URL="https://example.com"
BOT_TOKEN="123456789:ABCDEF1234567890abcdef1234567890"
CHAT_ID="987654321"

# Проверка доступности
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" "$URL")

if [ "$HTTP_CODE" -ne 200 ]; then
MESSAGE="⚠️ Сайт $URL недоступен! Код ответа: $HTTP_CODE"
curl -s -X POST "https://api.telegram.org/bot$BOT_TOKEN/sendMessage" \
-d chat_id="$CHAT_ID" \
-d text="$MESSAGE"
fi


Как использовать:

1. Вставьте ваш BOT_TOKEN и CHAT_ID.
2. Сохраните скрипт, например, /usr/local/bin/check_site.sh.
3. Добавьте в cron (каждые 5 минут):


*/5 * * * * /usr/local/bin/check_site.sh


Теперь вы сразу узнаете, если сайт станет недоступен.

👉@bash_srv
👍64
🛜 Быстрое сканирование сети с выводом живых хостов

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


#!/bin/bash
# Быстрое сканирование сети (замени 192.168.1 на свою подсеть)
# автор: https://t.iss.one/bash_srv
SUBNET="192.168.1"

for i in {1..254}; do
(
ping -c1 -W1 $SUBNET.$i &>/dev/null && echo "$SUBNET.$i доступен"
) &
done
wait


Что делает скрипт?

- Перебирает адреса от 192.168.1.1 до 192.168.1.254
- Параллельно пингует их с таймаутом 1 секунда
- Выводит только живые хосты

В 10-20 раз быстрее обычного пинга благодаря параллельному запуску!

Попробуй сохранить скрипт как scan.sh, сделать его исполняемым (chmod +x scan.sh) и запустить.

👉@bash_srv
👍12🔥3
🎯 Мониторинг занятости диска с алертом на почту 📬

Хотите, чтобы сервер сам предупреждал вас при нехватке свободного места на диске? Никидал простой bash-скрипт, который отправит письмо, если свободного места останется меньше 10%:


#!/bin/bash
# автор: https://t.iss.one/bash_srv

# Порог в % (если меньше — шлём алерт)
THRESHOLD=10
EMAIL="[email protected]"

# Получаем список всех точек монтирования
df -hP | grep -vE '^Filesystem' | while read line; do
USAGE=$(echo $line | awk '{print $5}' | tr -d '%')
MOUNT=$(echo $line | awk '{print $6}')

if [ "$USAGE" -ge $((100 - THRESHOLD)) ]; then
echo -e "На сервере $(hostname)\nМонтирование: $MOUNT\nЗанято: $USAGE%" | \
mail -s "⚠️ Мало места на диске $MOUNT" "$EMAIL"
fi
done


📌 Как использовать:

1. Убедитесь, что установлен mailx (или mail).
2. Измените переменную EMAIL на свой адрес.
3. Добавьте скрипт в cron, чтобы он выполнялся, например, каждый час.

🛡️ Так вы всегда будете в курсе, что диск переполняется, до того как сервер упадёт 🚨

👉@bash_srv
👍83
📌 Bash-скрипт для автоматического бэкапа MySQL с ротацией

Накидал пример простого скрипта для автоматического бэкапа базы, чтобы всегда была свежая копия, но при этом не захламлять диск старыми дампами.


#!/bin/bash
# Параметры
# автор: https://t.iss.one/bash_srv
DB_USER="root"
DB_PASS="password"
DB_NAME="my_database"
BACKUP_DIR="/backup/mysql"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")

# Создаём директорию для бэкапов, если нет
mkdir -p "$BACKUP_DIR"

# Делаем дамп базы
mysqldump -u"$DB_USER" -p"$DB_PASS" "$DB_NAME" > "$BACKUP_DIR/${DB_NAME}_${DATE}.sql"

# Оставляем только 7 последних бэкапов, остальные удаляем
ls -1t "$BACKUP_DIR"/*.sql | tail -n +8 | xargs -r rm --

echo " Бэкап базы $DB_NAME создан: ${DB_NAME}_${DATE}.sql"


Как использовать:

1. Сохраните скрипт, например в /usr/local/bin/mysql_backup.sh.
2. Дайте права на выполнение:


chmod +x /usr/local/bin/mysql_backup.sh

3. Добавьте в cron, чтобы бэкап делался каждый день в 3 ночи:


0 3 * * * /usr/local/bin/mysql_backup.sh


📦 В результате вы всегда будете иметь 7 последних бэкапов, а старые будут удаляться автоматически.

👉@bash_srv
👍102👌1
🚀 Быстрое резервное копирование с датой в имени файла

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


#!/bin/bash
# автор: https://t.iss.one/bash_srv

# Что копируем
SOURCE="/etc/nginx/nginx.conf"

# Куда сохраняем
BACKUP_DIR="/backup"

# Создаем каталог, если его нет
mkdir -p "$BACKUP_DIR"

# Имя файла с датой
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
FILENAME=$(basename "$SOURCE")
cp "$SOURCE" "$BACKUP_DIR/${FILENAME}_${DATE}"

echo " Резервная копия создана: $BACKUP_DIR/${FILENAME}_${DATE}"


💡 Как использовать:

- Поменяйте SOURCE на свой файл или каталог.
- Можно добавить в cron, чтобы резервная копия делалась автоматически.

🛠 Пример для cron (каждый день в 3 ночи):


0 3 * * * /path/to/backup.sh


📂 Теперь у вас всегда будут версии с точным временем создания!

👉@bash_srv
👍11
🚀 Быстрый мониторинг использования диска по каталогам

Иногда нужно быстро понять, какая папка на сервере съедает больше всего места. Вот простой скрипт, который выведет топ-10 "пожирателей" диска:


#!/bin/bash
# Топ-10 каталогов по размеру в текущем пути

du -h --max-depth=1 2>/dev/null | sort -hr | head -n 10


📌 Как использовать:

1. Перейдите в интересующую директорию:


cd /var/log

2. Запустите скрипт:


./disk_top.sh


👉@bash_srv
🔥6👍2👎1
🔥 Автоматическая проверка и перезапуск упавших сервисов

Скрипт, который проверяет список сервисов и перезапускает их при необходимости.


#!/bin/bash
# автор: https://t.iss.one/bash_srv

# Список сервисов для проверки
services=("nginx" "mysql" "ssh")

for service in "${services[@]}"; do
if ! systemctl is-active --quiet "$service"; then
echo "$(date '+%Y-%m-%d %H:%M:%S') - $service не работает. Перезапускаем..."
systemctl restart "$service"
# Можно отправить уведомление в Telegram или email
else
echo "$(date '+%Y-%m-%d %H:%M:%S') - $service работает."
fi
done


📌 Как использовать:

1. Сохраните скрипт, например, в /usr/local/bin/service_check.sh.
2. Дайте права на выполнение:


chmod +x /usr/local/bin/service_check.sh

3. Добавьте в cron для регулярной проверки, например, каждые 5 минут:


*/5 * * * * /usr/local/bin/service_check.sh >> /var/log/service_check.log 2>&1


👉@bash_srv
👍8
🚀 Автоматическое обновление пакетов с логированием

Регулярные обновления системы — залог безопасности и стабильности.
Ниже скрипт, который обновляет пакеты и ведёт лог:


#!/bin/bash
# автор: https://t.iss.one/bash_srv

LOGFILE="/var/log/auto_update.log"
DATE=$(date '+%Y-%m-%d %H:%M:%S')

echo "[$DATE] Начало обновления" >> $LOGFILE

if command -v apt &>/dev/null; then
apt update >> $LOGFILE 2>&1
apt -y upgrade >> $LOGFILE 2>&1
elif command -v dnf &>/dev/null; then
dnf -y update >> $LOGFILE 2>&1
elif command -v yum &>/dev/null; then
yum -y update >> $LOGFILE 2>&1
else
echo "[$DATE] Неизвестный пакетный менеджер" >> $LOGFILE
exit 1
fi

echo "[$DATE] Обновление завершено" >> $LOGFILE


📌 Как использовать:

1. Сохраните скрипт, например, /usr/local/bin/auto_update.sh

2. Дайте права на выполнение:

chmod +x /usr/local/bin/auto_update.sh


3. Добавьте в cron для ежедневного запуска:

0 3 * * * /usr/local/bin/auto_update.sh


Теперь сервер будет обновляться сам, а все действия попадут в лог 📜

👉@bash_srv
👍7🤔1
🔥 Мониторинг нагрузки на сервер

Иногда нужно быстро понять, какие процессы сильнее всего нагружают систему. Этот скрипт выводит топ-5 «прожорливых» процессов по CPU и RAM 🖥️


#!/bin/bash
# автор: https://t.iss.one/bash_srv
echo "=== Топ-5 процессов по CPU ==="
ps -eo pid,ppid,cmd,%cpu --sort=-%cpu | head -n 6

echo ""
echo "=== Топ-5 процессов по RAM ==="
ps -eo pid,ppid,cmd,%mem --sort=-%mem | head -n 6


📌 Как использовать:

1. Сохраните в файл, например top_procs.sh
2. Сделайте исполняемым:


chmod +x top_procs.sh

3. Запускайте при необходимости:


./top_procs.sh


Так вы всегда будете видеть, что больше всего грузит ваш сервер 🚀

👉@bash_srv
👍7
🔥 Открытый урок «GitLab CI + Ansible: автоматизация инфраструктуры без боли».

🗓 27 августа в 20:00 МСК
🆓 Бесплатно. Урок в рамках старта курса «CI/CD на основе GitLab».

🎯 На вебинаре разберем:

✔️ Как настроить GitLab CI для работы с Ansible
✔️ Организация пайплайна для автоматического запуска Ansible-плейбуков
✔️ Как тестировать и проверять изменения в Ansible до деплоя
✔️ Использование GitLab CI как среды для обучения и отладки Ansible

👥 Кому будет интересно:
- DevOps-инженерам, которые осваивают или уже используют GitLab CI и Ansible, и хотят связать их в единый, автоматизированный процесс
- Начинающим специалистам, изучающим инфраструктурный код и автоматизацию
- Техническим архитекторам, заинтересованным в построении масштабируемых и управляемых CI/CD процессов с Ansible

🎯 Что вы получите:
- Практическое понимание интеграции Ansible с GitLab CI
- Готовые идеи и примеры для запуска и тестирования Ansible-плейбуков
- Уверенность в использовании CI/CD пайплайнов для инфраструктурных задач и конфигурационного менеджмента

🔗 Ссылка на регистрацию: https://vk.cc/cOK226

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Быстрый поиск крупных файлов

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


#!/bin/bash
# автор: https://t.iss.one/bash_srv

DIR=${1:-/}

echo "📂 Топ-10 самых больших файлов в $DIR"
du -ah "$DIR" 2>/dev/null | sort -rh | head -n 10


📌 Использование:


./bigfiles.sh /var/log


Выведет список самых "тяжёлых" файлов в /var/log.
Если директория не указана — скрипт проверит весь корень /.

👉@bash_srv
👍72
🗂 Мониторинг размера логов

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


#!/bin/bash
# автор: https://t.iss.one/bash_srv

# каталог с логами
LOG_DIR="/var/log"

# максимальный размер файла (в мегабайтах)
MAX_SIZE=100

find "$LOG_DIR" -type f -name "*.log" | while read -r log; do
size=$(du -m "$log" | cut -f1)
if (( size > MAX_SIZE )); then
echo "⚠️ Лог $log превышает $MAX_SIZE MB (текущий размер: ${size}MB)"
fi
done


📌 Скрипт ищет все .log - файлы в каталоге /var/log и проверяет их размер. Если размер превышает указанный порог (например, 100MB), выводит предупреждение.

🔧 Можно добавить в cron, чтобы проверка выполнялась регулярно.

👉@bash_srv
👍4
🇷🇺 100% российская разработка

INFRAX — платформа all-in-one для управления ИТ-инфраструктурой:

Мониторинг инфраструктуры (ITOM)
Удаленный доступ для сотрудников и привилегированных пользователей
Обработка заявок пользователей (ServiceDesk)
База знаний с разграничением доступа к категориям (публичные и закрытые)
Автоматизация (скрипты и планировщик)
Контроль привилегированных пользователей. Видеозапись сессий RDP/SSH/VNC. (PAM)
Управление доступами. Доступ ко всем корпоративным сервисам через одну учетку (IAM)

БЕСПЛАТНО до 100 пользователей! 🎁

👉 Попробовать INFRAX

Реклама. ООО «АУДИТ-ТЕЛЕКОМ», ОГРН 1167746696776, erid: 2Vtzqv8Ag74