tgindex
Bash Советы

Bash Советы

Статистика
@bash_srvрусский

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

Последний пост
13:31
Последнее чтение
13 авг.
Постов за неделю
2
Всего постов
23
Тип
открытый
Язык
русский
В каталоге с
13 авг.
Подписчики
2 739
−3 за 6 дн.
Сутки
−1
−0,04%
Неделя
 
Месяц
 
Просмотров на пост
724
22 постов
Вовлечённость
26,4%
к подписчикам
Постов в день
0,3
всего 23
Упоминаний
6
каналов
Охват размещения
оценка
1/24сутки в ленте
416
1/48двое суток
476
1/72трое суток
514

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • 13:31237710

    Использование «Strict Mode» в Bash-скриптах По умолчанию Bash не останавливает выполнение скрипта при возникновении ошибок, что может привести к непредсказуемым последствиям в цепочках команд. Для повышения надежности скриптов рекомендуется начинать их со следующей конструкции. Код: #!/bin/bash set -euo pipefail Разбор параметров: - set -e: Останавливает скрипт, если любая команда завершилась с ошибкой (код возврата не 0). - set -u: Считает обращение к несуществующей переменной ошибкой и останавливает скрипт. - set -o pipefail: Возвращает код ошибки, если хотя бы одна команда в конвейере (pipe) завершилась неудачно (по умолчанию Bash берет код возврата только последней команды). 📲 Мы в MAX 👉@bash_srv

  • 🔁 Как перезапускать сервис только если он завис? Иногда не хочется перезапускать сервис "на всякий случай", но вот если он реально завис — другое дело. Вот простой способ проверять, активен ли сервис, и перезапускать его при зависании: #!/bin/bash SERVICE="nginx" if ! systemctl is-active --quiet "$SERVICE"; then echo "$(date): $SERVICE не активен, пробую перезапустить..." >> /var/log/service_monitor.log systemctl restart "$SERVICE" else echo "$(date): $SERVICE работает нормально" >> /var/log/service_monitor.log fi 🛠 Можно добавить в крон, например, проверку каждые 5 минут: */5 * * * * /usr/local/bin/check_nginx.sh 📁 Не забудь сделать скрипт исполняемым: chmod +x /usr/local/bin/check_nginx.sh 💡 Можно заменить nginx на любой другой системный сервис. 📲 Мы в MAX 👉@bash_srv

  • 🔥 Bash-фишка дня: замена строк в файле без sed и awk Иногда хочется быстро заменить строку в файле без сложных конструкций. Вот способ сделать это с чистым Bash и while read: 🛠 Скрипт: заменить слово в файле #!/bin/bash INPUT="config.txt" OUTPUT="config_new.txt" SEARCH="localhost" REPLACE="127.0.0.1" while IFS= read -r line; do echo "${line//$SEARCH/$REPLACE}" done < "$INPUT" > "$OUTPUT" 📌 Что тут происходит: - IFS= read -r line — читаем файл построчно, без обрезки пробелов. - ${line//$SEARCH/$REPLACE} — заменяем все вхождения $SEARCH на $REPLACE. - Результат сохраняем в новый файл. ⚡️ Подходит, когда sed недоступен (да, бывает) или нужна более понятная логика замены. 📲 Мы в MAX 👉@bash_srv

  • 🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии в IT📌 https://max.ru/progjob https://max.ru/channel_rabotait Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Городские📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП https://max.ru/channel_krasnodar_novosty Краснодар Новости https://max.ru/channel_novosibirsk_novosti Новосибирск https://max.ru/channel_samara_novosti Новости Самары https://max.ru/channel_ekaterinburg_novosti Новости Екатеринбурга https://max.ru/channel_kazan_novosti Новости Казани https://max.ru/channel_omsk_novosti Новости Омска https://max.ru/channel_moskva_24 Москва 24

  • 🕵️ Ищем процессы, которые используют удалённые (удалённые, но не освобождённые) файлы Бывает, что ты удаляешь лог или большой файл, а место на диске не освобождается? Это потому, что файл всё ещё открыт каким-то процессом! Вот скрипт, который найдёт таких «виновников»: #!/bin/bash echo "🔍 Ищем процессы, держащие открытые удалённые файлы..." lsof | grep '(deleted)' | awk '{print $2}' | sort -u | while read -r pid; do echo "PID: $pid | Команда: $(ps -p $pid -o comm=)" done 📌 Как использовать: chmod +x find_deleted.sh ./find_deleted.sh 💡 Подсказка: иногда помогает systemctl restart соответствующего сервиса, чтобы освободить место. 📲 Мы в MAX 👉@bash_srv

  • 3 авг.610713

    🧠 Bash совет дня - Отслеживаем подозрительные sudo-команды в реальном времени 🕵️ Хочешь знать, кто и что запускает через sudo прямо сейчас? Настроим простой мониторинг: #!/bin/bash logfile="/var/log/auth.log" tail -F "$logfile" | grep --line-buffered "sudo" | while read line; do echo "[ALERT] 🔐 $(date): $line" done 📌 Что делает: - Следит за /var/log/auth.log в реальном времени. - Отфильтровывает строки, связанные с sudo. - Выводит каждое срабатывание с пометкой времени. 🔥 Пример вывода: [ALERT] 🔐 2025-05-15 10:23:42: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/bash 💡 Используй для: - Мониторинга активности админов или подозрительных действий. - Настройки моментального оповещения (можно расширить, чтобы слать в Telegram, Slack и т.д.). 📦 Можно оформить как systemd-сервис, чтобы монитор запускался автоматически. 📲 Мы в MAX 👉@bash_srv

  • $ sudo apt install holiday Reading package lists... Done Building dependency tree... Done Устанавливается пакет: "День системного администратора" ✔ Серверы работают ✔ Мониторинг молчит ✔ Бэкапы актуальны ✔ Кофе горячий ✔ Пользователи не паникуют Congratulations! Happy SysAdmin Day! 🎉

  • 🚀 Bash-совет дня: Быстрое сканирование открытых портов с помощью bash и /dev/tcp Зачем ставить nmap, если можно быстро просканировать порты встроенными средствами bash? Вот простой однострочный скрипт: for port in {20..1024}; do (echo > /dev/tcp/127.0.0.1/$port) >/dev/null 2>&1 && echo "Порт $port открыт" done 📌 Что делает скрипт: * Использует встроенную возможность Bash подключаться к TCP-портам через псевдофайлы /dev/tcp/host/port. * Проверяет диапазон портов от 20 до 1024 на локальной машине. * Если порт доступен — выводит сообщение, что он открыт. 🔒 Можно заменить 127.0.0.1 на любой IP-адрес сервера в сети. 💡 Отличный способ быстро проверить, что открыто, когда нет доступа к полноценным утилитам. 📲 Мы в MAX 👉@bash_srv

  • 🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https://max.ru/bash_srv Bash Советы https://max.ru/sysadminof Книги для админов, полезные материалы https://max.ru/i_odmin_book Библиотека Системного Администратора https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др. https://max.ru/tipsysdmin Типичный Сисадмин https://max.ru/channel_win_sysadmin Системный Администратор Windows https://max.ru/channel_linux_admin Linux: Системный администратор https://max.ru/channel_linuxmod Linux https://max.ru/channel_i_linux Системный администратор https://max.ru/channel_devopslib DevOps, SRE, Sysadmin https://max.ru/channel_devops_star DevOps Star (Звезда Девопса) Excel лайфхак 📌 https://t.me/Excel_lifehack Excel лайфхак Английский с нуля 🇬🇧 https://max.ru/UchuEnglish 1C разработка 📌 https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С https://max.ru/channel_DevLab1C 1С:Предприятие 8 Программирование C++📌 https://max.ru/cpp_lib Библиотека C/C++ разработчика https://max.ru/channel_cpp_geek C++ geek Программирование Go📌 https://max.ru/golang_lib Библиотека Go (Golang) разработчика Программирование React📌 https://max.ru/react_lib React Программирование Rust📌 https://max.ru/channel_rust_lib Программирование Python 📌 https://max.ru/python_of Python академия. https://max.ru/BookPython Библиотека Python разработчика Java разработка 📌 https://max.ru/bookjava Библиотека Java разработчика https://max.ru/channel_java_geek Java Geek GitHub Сообщество 📌 https://max.ru/githublib Интересное из GitHub Базы данных (Data Base) 📌 https://max.ru/database_info Все про базы данных Фронтенд разработка 📌 https://max.ru/frontend_1 Подборки для frontend разработчиков Библиотеки 📌 https://max.ru/programmist_of Книги по программированию https://max.ru/proglb Библиотека программиста https://max.ru/bfbook Книги для программистов Программирование 📌 https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻 Шутки программистов 📌 https://max.ru/itumor Шутки программистов Защита, взлом, безопасность 📌 https://max.ru/thehaking Канал о кибербезопасности https://max.ru/xakkep_1 Хакер Free Книги, статьи для дизайнеров 📌 https://max.ru/odesigners Статьи, книги для дизайнеров Математика 📌 https://max.ru/Pomatematike Канал по математике https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике Вакансии в IT📌 https://max.ru/progjob https://max.ru/channel_rabotait Мир технологий 📌 https://max.ru/mir_teh Канал для любознательных Бонус 📌 https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга https://max.ru/mockva_life Свежие новости Москвы https://max.ru/piterspb Питер Новости: Санкт-Петербург / СПБ / ДТП

  • 🧠 Bash-совет дня: Проверка скорости интернет-соединения прямо из терминала Если тебе нужно быстро проверить скорость интернета на сервере (например, VPS), не устанавливая громоздкие GUI-программы — вот решение: #!/bin/bash # Проверяем наличие speedtest-cli if ! command -v speedtest &> /dev/null; then echo "⏳ Устанавливаем speedtest-cli..." apt update && apt install -y speedtest-cli # Для Debian/Ubuntu # yum install -y speedtest-cli # Для RHEL/CentOS fi # Запускаем тест скорости echo "🚀 Проверяем скорость интернет-соединения..." speedtest 📝 Альтернатива без установки — через curl: curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 - 📊 Удобно использовать при диагностике проблем с сетью, особенно на серверах в разных дата-центрах. 📲 Мы в MAX 👉@bash_srv

  • 🎯 Проверка доступности списка хостов с цветным 🎨 выводом Иногда нужно быстро проверить, какие сервера "живые", а какие — нет. Ниже написал удобный Bash-скрипт с цветным выводом в терминале 🖥️. #!/bin/bash # Список хостов hosts=("192.168.0.1" "google.com" "yandex.ru" "192.168.0.100") # Цвета GREEN="\e[32m" RED="\e[31m" NC="\e[0m" # No Color for host in "${hosts[@]}"; do if ping -c 1 -W 1 "$host" &> /dev/null; then echo -e "${GREEN}[UP] $host${NC}" else echo -e "${RED}[DOWN] $host${NC}" fi done 🔧 Просто добавь нужные IP или домены в массив hosts, и запусти. Удобно и наглядно! 📲 Мы в MAX 👉@bash_srv

  • 🧠 Bash: Проверка доступности нескольких хостов одним скриптом Следишь за парком серверов? Этот скрипт покажет, какие машины "живы", а какие — нет 🖥️❌ #!/bin/bash # Список IP или хостнеймов HOSTS=("192.168.0.1" "google.com" "server.local") for HOST in "${HOSTS[@]}"; do if ping -c 1 -W 1 "$HOST" &> /dev/null; then echo "[✅] $HOST доступен" else echo "[❌] $HOST недоступен" fi done 📌 Что делает: * ping -c 1 -W 1 — один пинг с таймаутом в 1 секунду * Выводит результат по каждому хосту 🔥 Можно запускать по крону или вручную, если нужно быстро понять, где беда. 📲 Мы в MAX 👉@bash_srv

  • 🔥Проверка статуса нескольких сервисов systemd за один раз Когда нужно быстро проверить, работают ли нужные сервисы - этот однострочник спасёт: for svc in nginx mysql sshd; do systemctl is-active --quiet $svc && echo "$svc ✅" || echo "$svc ❌"; done 📌 Замените nginx mysql sshd на нужные вам сервисы. Скрипт выведет статус каждого: * ✅ — сервис активен * ❌ — сервис не работает 🚀 Удобно засунуть в alias или в мониторинг! 📲 Мы в MAX 👉@bash_srv

  • 💡 Bash-совет дня: Мониторинг открытых портов с выводом в Telegram Автоматизируй контроль за безопасностью своего сервера! Этот простой bash-скрипт проверяет изменения в открытых портах и шлёт уведомление в Telegram, если появились новые или исчезли старые порты. #!/bin/bash # Настройки TG_TOKEN="your_bot_token" TG_CHAT_ID="your_chat_id" PORTS_FILE="/var/tmp/open_ports_last.txt" # Получаем текущие открытые порты ss -tuln | awk 'NR>1 {print $5}' | cut -d: -f2 | sort -n | uniq > /tmp/open_ports_now.txt # Если нет предыдущего файла — создаём if [ ! -f "$PORTS_FILE" ]; then cp /tmp/open_ports_now.txt "$PORTS_FILE" exit 0 fi # Сравниваем с предыдущим состоянием DIFF=$(diff -u "$PORTS_FILE" /tmp/open_ports_now.txt) # Если есть изменения — шлём в Telegram if [ -n "$DIFF" ]; then MESSAGE="⚠️ Обнаружены изменения в открытых портах:\n\`\`\`\n$DIFF\n\`\`\`" curl -s -X POST "https://api.telegram.org/bot$TG_TOKEN/sendMessage" \ -d chat_id="$TG_CHAT_ID" \ -d parse_mode="Markdown" \ -d text="$MESSAGE" cp /tmp/open_ports_now.txt "$PORTS_FILE" fi # Уборка rm -f /tmp/open_ports_now.txt 📌 Как использовать: 1. Замените your_bot_token и your_chat_id на свои значения. 2. Добавьте в cron, чтобы проверять, например, каждые 10 минут: */10 * * * * /path/to/script.sh 🔒 Будьте в курсе неожиданных открытий портов на своих серверах! 📲 Мы в MAX 👉@bash_srv

  • 🔐 Как найти файлы с открытыми правами (777) - быстро и просто! Иногда на сервере появляются файлы и каталоги с правами 777, что представляет угрозу безопасности. Найдём их одной командой: find / -type f -perm 0777 2>/dev/null 📁 А если нужно проверить директории: find / -type d -perm 0777 2>/dev/null 🔍 Пояснение: / - путь, где искать (можно заменить на /var, /home и т.д.) -type f / -type d — искать только файлы или директории -perm 0777 - права доступа 2>/dev/null - убираем лишние ошибки (например, от Permission denied) 💡 Лучше запускать от root для полной картины. 📲 Мы в MAX 👉@bash_srv

  • 🔁 Циклический мониторинг статуса сервиса с логированием Иногда нужно следить за работой сервиса в режиме реального времени и при сбое — сразу зафиксировать проблему. Вот простой скрипт, который будет каждые 30 секунд проверять статус сервиса и писать лог при ошибке: #!/bin/bash SERVICE="nginx" LOGFILE="/var/log/${SERVICE}_monitor.log" INTERVAL=30 while true; do if ! systemctl is-active --quiet "$SERVICE"; then echo "$(date '+%Y-%m-%d %H:%M:%S') ❌ $SERVICE is down" >> "$LOGFILE" # можно добавить уведомление (например, через телеграм-бота или почту) else echo "$(date '+%Y-%m-%d %H:%M:%S') ✅ $SERVICE is running" >> "$LOGFILE" fi sleep "$INTERVAL" done 📌 Скрипт можно добавить в screen или tmux сессию и запустить на сервере - он будет вести лог доступности нужного сервиса. 🛡️ Подходит для мониторинга nginx, mysql, sshd и других системных демонов. 📲 Мы в MAX 👉@bash_srv

  • 6 июл.919615

    🔥Проверка доступности списка хостов с логированием времени ответа Иногда нужно быстро проверить, какие из серверов в списке живы, и сколько времени уходит на ответ. Вот простой скрипт на Bash: #!/bin/bash HOSTS_FILE="hosts.txt" LOG_FILE="ping_log.txt" while read -r host; do if [[ -n "$host" ]]; then START=$(date +%s%3N) ping -c 1 -W 1 "$host" &> /dev/null STATUS=$? END=$(date +%s%3N) TIME=$((END - START)) if [[ $STATUS -eq 0 ]]; then echo "$(date '+%Y-%m-%d %H:%M:%S') - $host is UP (response time: ${TIME}ms)" | tee -a "$LOG_FILE" else echo "$(date '+%Y-%m-%d %H:%M:%S') - $host is DOWN" | tee -a "$LOG_FILE" fi fi done < "$HOSTS_FILE" 📄 Файл hosts.txt должен содержать список IP или доменов — по одному в строке. 🛠 Удобно использовать для мониторинга парка серверов или диагностики проблем с сетью. 📲 Мы в MAX 👉@bash_srv

  • 3 июл.976420

    ⚡Ускоряем работу с логами через Bash Часто приходится искать ошибки в огромных логах? Вот удобный однострочник, который найдёт все строки с ошибками за последние N минут: grep "$(date --date='5 min ago' '+%b %_d %H:%M')" /var/log/syslog | grep -i "error" 🔹 Замените 5 на нужное количество минут. 🔹 Работает для логов, где стандартный формат даты (%b %_d %H:%M), например /var/log/syslog, /var/log/auth.log. 🔹 Ключ -i делает поиск нечувствительным к регистру. ✅ Теперь вы всегда увидите самые свежие ошибки без пролистывания тысяч строк! 📲 Мы в MAX 👉@bash_srv

  • 2 июл.9321322

    📂 Быстрое создание структуры директорий в Linux Иногда нужно быстро создать целую структуру папок. Вручную - долго. На помощь приходит mkdir с флагом -p: mkdir -p /var/www/project/{css,js,images,fonts} ✅ Этот однострочник создаст папки css, js, images, fonts внутри /var/www/project, даже если родительские директории ещё не существуют. Фишка: можно создавать вложенные структуры сразу: mkdir -p /opt/data/{logs/{nginx,mysql},backups/{daily,weekly}} Это создаст: - /opt/data/logs/nginx - /opt/data/logs/mysql - /opt/data/backups/daily - /opt/data/backups/weekly Полезно, если нужно быстро подготовить окружение для проекта 🚀 📲 Мы в MAX 👉@bash_srv

  • 🚀 Bash-скрипт для автоматического обновления всех пакетов на сервере с уведомлением на почту Иногда важно не только обновить все пакеты, но и быть в курсе, что именно произошло. Пойдем на шаг дальше! 👨‍💻 #!/bin/bash # Настройки EMAIL="admin@example.com" HOSTNAME=$(hostname) # Обновляем пакеты apt update && apt upgrade -y > /tmp/update-log.txt # Отправляем лог на почту mail -s "[$HOSTNAME] Отчет об обновлении пакетов" "$EMAIL" < /tmp/update-log.txt # Убираем временный файл rm -f /tmp/update-log.txt ✅ Скрипт: - Обновляет пакеты через apt. - Сохраняет лог в /tmp/update-log.txt. - Отправляет лог на указанный e-mail. - Очищает за собой мусор. ⚙️ Чтобы отправка писем работала, убедись, что установлен пакет mailutils: sudo apt install mailutils 💬 Используй cron, чтобы выполнять этот скрипт автоматически каждую неделю или каждый день: 0 3 * * 1 /path/to/update_script.sh 📲 Мы в MAX 👉@bash_srv