Умная оболочка для повседневных задач
Ключевые возможности:
Установка insh. Для начала работы необходимо установить insh. Обычно оболочка доступна в официальных репозиториях, но можно использовать и GitHub для последней версии:
Пример работы с insh. После установки введите insh для запуска оболочки:
В процессе работы начните ввод команды, например, tar, и insh предложит автодополнение с объяснением ключей:
А теперь коротко про ключевые фишки, зачем оно нужно и чем помогает:
BashTex📱 #linux #utils
insh - это попытка объединить возможности традиционных shell'ов с интеллектуальными функциями, которые обычно ассоциируются с современными текстовыми редакторами и IDE. Основные цели insh — минимизация ошибок, повышение продуктивности и улучшение пользовательского опыта.Ключевые возможности:
Интеллектуальные подсказки и автодополнение: insh поддерживает контекстуальные подсказки, которые помогают пользователю понять, какие команды и параметры доступны в текущем контексте. Например, при вводе ls или grep, оболочка подскажет доступные ключи и параметры, что облегчает запоминание.
Ошибкоустойчивость: insh помогает избежать ошибок, предупреждая о неправильных синтаксисах и предоставляя советы по их исправлению. Это особенно полезно для новичков, которые только начинают работать с командной строкой.
История команд с улучшенным поиском: insh позволяет легко находить ранее использованные команды с помощью мощной функции поиска по истории. Команды можно искать не только по первому символу, но и по ключевым словам.
Встроенная поддержка документации: При использовании команд insh отображает встроенные справочные материалы и примеры, что избавляет от необходимости переключаться на браузер для поиска документации.
Установка insh. Для начала работы необходимо установить insh. Обычно оболочка доступна в официальных репозиториях, но можно использовать и GitHub для последней версии:
git clone https://github.com/intellishell/insh.git
cd insh
sudo make install
Пример работы с insh. После установки введите insh для запуска оболочки:
insh
В процессе работы начните ввод команды, например, tar, и insh предложит автодополнение с объяснением ключей:
tar -[option] [file]
Options:
-c Create a new archive
-x Extract files from an archive
-t List the contents of an archive
А теперь коротко про ключевые фишки, зачем оно нужно и чем помогает:
Поддержка скриптов: insh может использоваться для написания скриптов, где автодополнение и проверка синтаксиса помогают избежать ошибок.
Модульность: оболочка поддерживает плагины и расширения, которые можно установить для добавления новых функций.
Совместимость: insh совместим с большинством стандартных команд и утилит Linux.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤨1
Тестируем производительность серверов
YABS проверяет:
Производительность процессора с помощью sysbench.
Скорость дисковых операций (I/O) для SSD и HDD.
Сетевую пропускную способность через iperf3, тестируя скорость связи с различными узлами.
Установка и запуск YABS. Запуск YABS осуществляется без предварительной установки, достаточно использовать команду curl или wget:
или
Что вы получите? После выполнения скрипта вы получите подробный отчет, который включает:
Результаты теста CPU: количество операций за секунду (OPS).
Результаты дисковых операций: скорость чтения и записи.
Скорость сети: измерения скорости загрузки и выгрузки данных с разных серверов по всему миру.
Ссылка на GitHub📱
BashTex📱 #bash #utils
YABS (Yet Another Benchmark Script) - популярный скрипт для быстрого тестирования производительности серверов. Он предназначен для оценки дисковой производительности, пропускной способности сети и производительности процессора. YABS прост в использовании, и его можно запустить всего одной командой.
YABS проверяет:
Производительность процессора с помощью sysbench.
Скорость дисковых операций (I/O) для SSD и HDD.
Сетевую пропускную способность через iperf3, тестируя скорость связи с различными узлами.
Установка и запуск YABS. Запуск YABS осуществляется без предварительной установки, достаточно использовать команду curl или wget:
curl -sL yabs.sh | bash
или
wget -qO- yabs.sh | bash
Что вы получите? После выполнения скрипта вы получите подробный отчет, который включает:
Результаты теста CPU: количество операций за секунду (OPS).
Результаты дисковых операций: скорость чтения и записи.
Скорость сети: измерения скорости загрузки и выгрузки данных с разных серверов по всему миру.
Ссылка на GitHub
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🗿1
Перенос больших файлов с помощью SCP
SCP - это отличный инструмент для переноса данных, однако при работе с большими файлами могут возникать определенные проблемы, такие как прерывание соединения или медленная скорость передачи. В этой статье рассмотрим, как эффективно использовать
Обычный перенос данных осуществляется так:
Но как быть если архив большой? Одно из решений - сжатие данных. Используйте флаг -C, чтобы сжать данные во время передачи. Это может значительно ускорить передачу, особенно для текстовых и плохо сжатых файлов:
Другие полезные фишки:
Ограничение скорости передачи. Чтобы избежать перегрузки сети, можно ограничить скорость передачи с помощью флага -l (в килобитах в секунду):
Здесь -l 5000 ограничивает скорость до 5000 Кбит/с (примерно 625 КБ/с).
Перезапуск передачи после сбоя. Если передача файла была прервана, ее нужно начать заново. Однако, чтобы избежать этого, лучше использовать
---
Альтернативой scp является rsync, который поддерживает:
Пример использования rsync:
Флаг -P включает отображение прогресса и позволяет продолжить передачу при прерывании.
BashTex📱 #linux #utils
SCP - это отличный инструмент для переноса данных, однако при работе с большими файлами могут возникать определенные проблемы, такие как прерывание соединения или медленная скорость передачи. В этой статье рассмотрим, как эффективно использовать
scp для передачи больших файлов.Обычный перенос данных осуществляется так:
scp logs.tar user@192.168.1.10:/project/logs/
Но как быть если архив большой? Одно из решений - сжатие данных. Используйте флаг -C, чтобы сжать данные во время передачи. Это может значительно ускорить передачу, особенно для текстовых и плохо сжатых файлов:
scp -C logs.tar user@192.168.1.10:/project/logs/
Другие полезные фишки:
Ограничение скорости передачи. Чтобы избежать перегрузки сети, можно ограничить скорость передачи с помощью флага -l (в килобитах в секунду):
scp -l 5000 logs.tar user@192.168.1.10:/project/logs/
Здесь -l 5000 ограничивает скорость до 5000 Кбит/с (примерно 625 КБ/с).
Перезапуск передачи после сбоя. Если передача файла была прервана, ее нужно начать заново. Однако, чтобы избежать этого, лучше использовать
rsync, который поддерживает продолжение передачи с места остановки:
rsync --partial --progress logs.tar user@192.168.1.10:/project/logs/
---
Альтернативой scp является rsync, который поддерживает:
Продолжение передачи после прерывания.
Более эффективное сжатие и контроль изменений.
Пример использования rsync:
rsync -avP logs.tar user@192.168.1.10:/project/logs/
Флаг -P включает отображение прогресса и позволяет продолжить передачу при прерывании.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Настройка безопасного SSH-соединения
SSH - это основной инструмент для безопасного управления серверами и обмена данными в сети. Однако, чтобы минимизировать риски и усилить защиту сервера, необходимо настроить SSH-соединение с дополнительными мерами безопасности. В этой статье разберем ключевые шаги для улучшения безопасности SSH.
1. Отключение входа по паролю. Использование паролей может быть уязвимо к атакам типа brute-force. Настройка входа по SSH-ключам делает подключение гораздо более защищенным.
Создание SSH-ключа:
Добавление ключа на сервер:
После успешного добавления ключа, в файле /etc/ssh/sshd_config измените строку:
2. Изменение стандартного порта SSH. Для предотвращения автоматизированных сканирований лучше изменить стандартный порт с 22 на менее очевидный.
Измените строку в файле /etc/ssh/sshd_config:
Перезапустите SSH:
3. Ограничение входа по IP-адресам. Если возможно, настройте брандмауэр для разрешения подключения к SSH только с определенных IP-адресов.
Используйте ufw для настройки правил:
4. Настройка двухфакторной аутентификации (2FA). Установка двухфакторной аутентификации добавляет дополнительный уровень защиты.
Установите Google Authenticator:
Настройте PAM для использования 2FA, добавив строку в /etc/pam.d/sshd:
5. Ограничение числа попыток подключения. Используйте fail2ban для защиты от атак грубой силы.
Установите fail2ban:
Настройте его в /etc/fail2ban/jail.local:
6. Отключение входа для root. Чтобы защитить сервер, запретите прямой вход root-пользователя.
В файле /etc/ssh/sshd_config измените:
Комбинация использования SSH-ключей, изменения порта, ограничения доступа и дополнительных мер, таких как 2FA и fail2ban, делает ваш сервер значительно менее уязвимым к атакам.
BashTex📱 #linux #security
SSH - это основной инструмент для безопасного управления серверами и обмена данными в сети. Однако, чтобы минимизировать риски и усилить защиту сервера, необходимо настроить SSH-соединение с дополнительными мерами безопасности. В этой статье разберем ключевые шаги для улучшения безопасности SSH.
1. Отключение входа по паролю. Использование паролей может быть уязвимо к атакам типа brute-force. Настройка входа по SSH-ключам делает подключение гораздо более защищенным.
Создание SSH-ключа:
ssh-keygen -t rsa -b 4096
Добавление ключа на сервер:
ssh-copy-id user@server_ip
После успешного добавления ключа, в файле /etc/ssh/sshd_config измените строку:
PasswordAuthentication no2. Изменение стандартного порта SSH. Для предотвращения автоматизированных сканирований лучше изменить стандартный порт с 22 на менее очевидный.
Измените строку в файле /etc/ssh/sshd_config:
Port 2222Перезапустите SSH:
sudo systemctl restart ssh
3. Ограничение входа по IP-адресам. Если возможно, настройте брандмауэр для разрешения подключения к SSH только с определенных IP-адресов.
Используйте ufw для настройки правил:
sudo ufw allow from 192.168.1.100 to any port 2222
sudo ufw enable
4. Настройка двухфакторной аутентификации (2FA). Установка двухфакторной аутентификации добавляет дополнительный уровень защиты.
Установите Google Authenticator:
sudo apt install libpam-google-authenticator
Настройте PAM для использования 2FA, добавив строку в /etc/pam.d/sshd:
auth required pam_google_authenticator.so5. Ограничение числа попыток подключения. Используйте fail2ban для защиты от атак грубой силы.
Установите fail2ban:
sudo apt install fail2ban
Настройте его в /etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
6. Отключение входа для root. Чтобы защитить сервер, запретите прямой вход root-пользователя.
В файле /etc/ssh/sshd_config измените:
PermitRootLogin noКомбинация использования SSH-ключей, изменения порта, ограничения доступа и дополнительных мер, таких как 2FA и fail2ban, делает ваш сервер значительно менее уязвимым к атакам.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17
Углубленное использование find
Пример базового поиска всех файлов с расширением .txt в текущем каталоге:
Но что если задача чуть сложнее, чем просто найти файлы с одним расширением?
1. Поиск по времени изменения и доступа. find может искать файлы по дате их изменения или доступа:
Файлы, измененные за последние 7 дней/Файлы, доступ к которым был более 30 дней назад:
2. Поиск по размеру. Если вам нужно найти файлы определенного размера/Файлы меньше 1 КБ:
3. Поиск по типу файла. find может искать определенные типы файлов:
Только каталоги/Только обычные файлы:
4. Комбинирование условий. С помощью логических операторов можно комбинировать разные условия:
Поиск файлов .log, измененных за последние 3 дня:
Исключение определенных файлов:
5. Выполнение действий с найденными файлами. find поддерживает выполнение команд с найденными файлами:
Удаление файлов старше 30 дней/Сжатие найденных файлов:
6. Использование find с xargs для повышения производительности. Для более эффективной обработки большого количества файлов используйте
Удаление всех файлов .tmp с помощью xargs:
Бонусом, полезные флаги:
BashTex📱 #linux #utils
find - это одна из мощных команд в арсенале Linux, которая позволяет находить файлы и каталоги по множеству критериев. Применяя её в комбинации с другими утилитами и флагами, вы можете добиться впечатляющих результатов и автоматизировать рутинные задачи.Пример базового поиска всех файлов с расширением .txt в текущем каталоге:
find . -name "*.txt"
Но что если задача чуть сложнее, чем просто найти файлы с одним расширением?
1. Поиск по времени изменения и доступа. find может искать файлы по дате их изменения или доступа:
Файлы, измененные за последние 7 дней/Файлы, доступ к которым был более 30 дней назад:
find /path/to/dir -mtime -7
find /path/to/dir -atime +30
2. Поиск по размеру. Если вам нужно найти файлы определенного размера/Файлы меньше 1 КБ:
find /path/to/dir -size +100M
find /path/to/dir -size -1k
3. Поиск по типу файла. find может искать определенные типы файлов:
Только каталоги/Только обычные файлы:
find /path/to/dir -type d
find /path/to/dir -type f
4. Комбинирование условий. С помощью логических операторов можно комбинировать разные условия:
Поиск файлов .log, измененных за последние 3 дня:
find /path/to/dir -name "*.log" -mtime -3
Исключение определенных файлов:
find /path/to/dir -type f ! -name "*.bak"
5. Выполнение действий с найденными файлами. find поддерживает выполнение команд с найденными файлами:
Удаление файлов старше 30 дней/Сжатие найденных файлов:
find /path/to/dir -type f -mtime +30 -exec rm {} \;
find /path/to/dir -name "*.log" -exec gzip {} \;
6. Использование find с xargs для повышения производительности. Для более эффективной обработки большого количества файлов используйте
xargs:Удаление всех файлов .tmp с помощью xargs:
find /path/to/dir -name "*.tmp" | xargs rm
Бонусом, полезные флаги:
-maxdepth N: Ограничивает глубину поиска.
-mindepth N: Исключает файлы выше указанной глубины.
-print0 и xargs -0: Обработка имен файлов с пробелами.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Управление облачным хранилищем Backblaze B2 из командной строки
Backblaze B2 - одно из самых доступных и надежных облачных хранилищ, а утилита
b2-tools - это CLI-утилита, предоставляемая Backblaze, которая позволяет:
В этой статье рассмотрим установку, настройку и базовые команды для работы с b2-tools.
1. Установка b2-tools:
Убедитесь, что у вас установлен Python 3, а затем установите b2-tools через pip:
2. Настройка подключения. Для работы с B2 вам понадобятся Account ID и Application Key, которые можно получить в панели управления Backblaze.
Настройте утилиту:
Введите ваши Account ID и Application Key, после чего утилита сохранит настройки авторизации.
3. Работа с хранилищами (buckets). Создание нового хранилища:
Где allPrivate указывает, что файлы будут приватными (можно указать allPublic для публичного доступа).
Список основных команд:
---
Скрипт для загрузки всех файлов из директории:
Можете интегрировать с Cron для автоматизированного резервного копирования:
И напоследок, перед загрузкой файлов можете зашифровать их с помощью
BashTex📱 #linux #utils
Backblaze B2 - одно из самых доступных и надежных облачных хранилищ, а утилита
b2-tools позволяет работать с ним прямо из терминала. Это мощный инструмент для разработчиков, системных администраторов и всех, кто хочет автоматизировать работу с B2.b2-tools - это CLI-утилита, предоставляемая Backblaze, которая позволяет:
Загружать и скачивать файлы.
Управлять хранилищами (buckets).
Настраивать права доступа и политики хранения.
Мониторить использование ресурсов
В этой статье рассмотрим установку, настройку и базовые команды для работы с b2-tools.
1. Установка b2-tools:
Убедитесь, что у вас установлен Python 3, а затем установите b2-tools через pip:
pip install b2
2. Настройка подключения. Для работы с B2 вам понадобятся Account ID и Application Key, которые можно получить в панели управления Backblaze.
Настройте утилиту:
b2 authorize-account
Введите ваши Account ID и Application Key, после чего утилита сохранит настройки авторизации.
3. Работа с хранилищами (buckets). Создание нового хранилища:
b2 create-bucket my-new-bucket allPrivate
Где allPrivate указывает, что файлы будут приватными (можно указать allPublic для публичного доступа).
Список основных команд:
b2 list-buckets - список всех хранилищ
b2 delete-bucket my-old-bucket - удаление хранилища
b2 upload-file my-bucket /path/to/local/file.txt file.txt - загрузка файла в хранилище
b2 download-file-by-name my-bucket file.txt /path/to/save/file.txt - скачивание файла
b2 delete-file-version file.txt FILE_ID - удаление файла из хранилища, где FILE_ID можно получить через команду b2 list-file-versions.
b2 get-account-info - мониторинг использования
---
Скрипт для загрузки всех файлов из директории:
for file in /path/to/dir/*; do
b2 upload-file my-bucket "$file" "$(basename $file)"
done
Можете интегрировать с Cron для автоматизированного резервного копирования:
0 2 * * * /usr/bin/b2 upload-file my-bucket /path/to/backup.tar.gz backup.tar.gz
И напоследок, перед загрузкой файлов можете зашифровать их с помощью
gpg:
gpg -c file.txt
b2 upload-file my-bucket file.txt.gpg file.txt.gpg
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
This media is not supported in your browser
VIEW IN TELEGRAM
Альтернатива команде tree
Особенности tre:
Установка:
Показ скрытых файлов:
Интеграция с Git:
tre делает вывод удобным и современным, добавляя цветовые акценты и полезную информацию (например, Git-статусы). Это отличный инструмент для всех, кто работает с большими проектами и хочет видеть структуру файлов "с первого взгляда".
Ссылка на GitHub📱
BashTex📱 #linux #utils
tre - это модернизированная версия команды tree, которая упрощает визуализацию файловой структуры. Она создана для тех, кто ценит удобство, скорость и красоту вывода в терминале.Особенности tre:
Красивый цветной вывод.
Интеграция с Git: отображение состояния файлов (измененные, новые и т.д.).
Минималистичный и понятный интерфейс.
Поддержка фильтров для исключения ненужных файлов.
Установка:
git clone https://github.com/dduan/tre
cd tre
cargo build --releaseПоказ скрытых файлов:
tre -aИнтеграция с Git:
tre -gtre делает вывод удобным и современным, добавляя цветовые акценты и полезную информацию (например, Git-статусы). Это отличный инструмент для всех, кто работает с большими проектами и хочет видеть структуру файлов "с первого взгляда".
Ссылка на GitHub
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Удаляем особые режимы разрешений в Linux: SUID, SGID и Sticky bit
Файловая система Linux позволяет настраивать специальные режимы разрешений, такие как SUID, SGID, и Sticky bit. Эти флаги предоставляют дополнительные привилегии или ограничения для работы файлов и каталогов, но иногда их нужно удалить, чтобы избежать потенциальных уязвимостей или ошибок.
В этой статье разберём, что означают эти режимы и как безопасно их удалять.
Что такое SUID, SGID и Sticky bit?
1. Как определить наличие специальных флагов? Используйте команду ls с опцией -l:
Пример вывода:
s в правах владельца (rws) указывает на SUID.
s в правах группы (rws) указывает на SGID.
t в правах других пользователей (rwt) указывает на Sticky bit.
Удаление специальных режимов
1. Удаление SUID
Команда удаления и проверка:
2. Удаление SGID
Команда и проверка:
Вывод:
3. Удаление Sticky bit
Команда и проверка:
Вывод:
Автоматическое удаление флагов с группой файлов. Создадим скрипт для массового удаления специальных флагов:
Сохраните скрипт, например, как remove_flags.sh, и не забудьте сделать его исполняемым:
Теперь его можно запускать для нескольких файлов:
Когда стоит удалять специальные флаги?
BashTex📱 #linux #utils
Файловая система Linux позволяет настраивать специальные режимы разрешений, такие как SUID, SGID, и Sticky bit. Эти флаги предоставляют дополнительные привилегии или ограничения для работы файлов и каталогов, но иногда их нужно удалить, чтобы избежать потенциальных уязвимостей или ошибок.
В этой статье разберём, что означают эти режимы и как безопасно их удалять.
Что такое SUID, SGID и Sticky bit?
SUID (Set User ID):
Позволяет запускать файл с правами владельца, а не текущего пользователя.
Пример: /usr/bin/passwd.
SGID (Set Group ID):
Для файлов: позволяет запускать файл с правами группы-владельца.
Для директорий: все новые файлы и папки наследуют группу родительской директории.
Sticky bit:
Обычно используется для директорий, таких как /tmp. Позволяет удалять файлы только владельцу, даже если папка доступна для записи всем.
1. Как определить наличие специальных флагов? Используйте команду ls с опцией -l:
ls -l file_or_directory
Пример вывода:
-rwsr-xr-x 1 root root 12345 Oct 28 10:00 suid_file
drwxrwsr-x 2 user group 4096 Oct 28 10:00 sgid_dir
drwxrwxrwt 2 user group 4096 Oct 28 10:00 sticky_dir
s в правах владельца (rws) указывает на SUID.
s в правах группы (rws) указывает на SGID.
t в правах других пользователей (rwt) указывает на Sticky bit.
Удаление специальных режимов
1. Удаление SUID
Команда удаления и проверка:
chmod u-s suid_file
ls -l suid_file
-rwxr-xr-x 1 root root 12345 Oct 28 10:00 suid_file
2. Удаление SGID
Команда и проверка:
chmod g-s sgid_dir
ls -ld sgid_dir
Вывод:
drwxrwxr-x 2 user group 4096 Oct 28 10:00 sgid_dir
3. Удаление Sticky bit
Команда и проверка:
chmod o-t sticky_dir
ls -ld sticky_dir
Вывод:
drwxrwxr-x 2 user group 4096 Oct 28 10:00 sticky_dir
Автоматическое удаление флагов с группой файлов. Создадим скрипт для массового удаления специальных флагов:
#!/bin/bash
for file in "$@"; do
echo "Удаляем специальные флаги с $file"
chmod u-s,g-s,o-t "$file"
done
Сохраните скрипт, например, как remove_flags.sh, и не забудьте сделать его исполняемым:
chmod +x remove_flags.sh
Теперь его можно запускать для нескольких файлов:
./remove_flags.sh file1 file2 dir1
Когда стоит удалять специальные флаги?
Устаревшие файлы: Удаляйте SUID/SGID у устаревших программ, которые больше не используются.
Безопасность: SUID/SGID могут быть использованы злоумышленниками для эскалации привилегий.
Упрощение управления: Удаление Sticky bit может быть полезным, если директория больше не используется как общедоступная.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
df: нестандартное использование
Базовая команда с примером вывода:
Флаг -h показывает размеры в удобных для чтения единицах (MB, GB).
1. Уведомление при малом свободном месте. Скрипт для проверки свободного места и отправки уведомления, если оно меньше заданного порога.
Как работает: awk извлекает колонку с использованием (Use%) и сравнивает её с пороговым значением. Если оно превышено, отправляется уведомление.
2. Удаление временных файлов при переполнении. Скрипт для автоматического удаления файлов в /tmp, если свободное место на / меньше 20%.
Как работает: скрипт проверяет, сколько процентов свободного места на корневом разделе, и удаляет файлы старше 7 дней в папке /tmp, если места мало.
3. Мониторинг использования дисков в реальном времени. Скрипт для отображения изменений в свободном месте на диске каждые 5 секунд.
Как работает: бесконечный цикл обновляет вывод df -h каждые 5 секунд, что позволяет отслеживать изменения в реальном времени.
4. Логирование дискового пространства. Скрипт для записи информации о дисковом пространстве в лог-файл с указанием времени.
Как работает: каждая запись логирует текущее состояние дисков с указанием даты и времени. Подробнее о том, зачем это нужно и как применять поговорим завтра.
---
Небольшие советы по использованию df в скриптах:
BashTex📱 #bash #utils
df (disk free) — это команда, которая отображает информацию о свободном и занятом месте на файловых системах. Обычно её используют для быстрого просмотра дискового пространства, но в этой статье мы посмотрим на нестандартное использование команды df в bash-скриптах для автоматизации задач.Базовая команда с примером вывода:
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 30G 20G 60% /
tmpfs 2.0G 1.0M 2.0G 1% /dev/shm
/dev/sdb1 100G 50G 50G 50% /mnt/data
Флаг -h показывает размеры в удобных для чтения единицах (MB, GB).
1. Уведомление при малом свободном месте. Скрипт для проверки свободного места и отправки уведомления, если оно меньше заданного порога.
#!/bin/bash
# Установим порог свободного места (в процентах)
THRESHOLD=80
# Проверяем каждый раздел
df -h | awk 'NR>1 {sub("%", "", $5); if ($5 > ENVIRON["THRESHOLD"]) print $0}' | while read -r line; do
echo "Внимание! Диск переполнен: $line" | mail -s "Диск почти заполнен" admin@bashtex.com
done
Как работает: awk извлекает колонку с использованием (Use%) и сравнивает её с пороговым значением. Если оно превышено, отправляется уведомление.
2. Удаление временных файлов при переполнении. Скрипт для автоматического удаления файлов в /tmp, если свободное место на / меньше 20%.
#!/bin/bash
# Устанавливаем порог
THRESHOLD=20
# Получаем свободное место на /
FREE=$(df / | awk 'NR==2 {sub("%", "", $5); print 100 - $5}')
if [ "$FREE" -lt "$THRESHOLD" ]; then
echo "Мало места на корневом разделе. Удаляю старые файлы в /tmp..."
find /tmp -type f -mtime +7 -delete
echo "Очистка завершена!"
else
echo "Места достаточно: $FREE% свободно."
fi
Как работает: скрипт проверяет, сколько процентов свободного места на корневом разделе, и удаляет файлы старше 7 дней в папке /tmp, если места мало.
3. Мониторинг использования дисков в реальном времени. Скрипт для отображения изменений в свободном месте на диске каждые 5 секунд.
#!/bin/bash
echo "Мониторинг свободного места (каждые 5 секунд):"
while true; do
clear
df -h
sleep 5
done
Как работает: бесконечный цикл обновляет вывод df -h каждые 5 секунд, что позволяет отслеживать изменения в реальном времени.
4. Логирование дискового пространства. Скрипт для записи информации о дисковом пространстве в лог-файл с указанием времени.
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
# Логирование состояния дисков
df -h | awk -v date="$(date '+%Y-%m-%d %H:%M:%S')" 'NR==1 {print "Дата:", date; print $0} NR>1 {print}' >> "$LOG_FILE"
echo "Данные записаны в $LOG_FILE"
Как работает: каждая запись логирует текущее состояние дисков с указанием даты и времени. Подробнее о том, зачем это нужно и как применять поговорим завтра.
---
Небольшие советы по использованию df в скриптах:
Используйте флаг -P для более удобного форматирования вывода, если обрабатываете данные через awk или grep.
Комбинируйте df с другими утилитами (find, mail, cron) для автоматизации задач.
Периодически проверяйте скрипты на корректность, чтобы избежать случайного удаления важных данных.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤨1
Логирование дискового пространства в Linux: автоматизация и контроль
Дисковое пространство - один из важнейших ресурсов системы. Постоянный мониторинг его состояния помогает избежать неприятных ситуаций, таких как переполнение разделов и остановка важных процессов. Логирование дискового пространства позволяет своевременно выявлять проблемы и анализировать историю использования.
Почему это важно?
1. Создаём систему логирования дискового пространства. Базовый скрипт для логирования:
Вывод в файле /var/log/disk_usage.log:
2. Автоматизация через cron. Добавьте скрипт в crontab, чтобы запускать его ежедневно:
Добавьте строку:
Теперь скрипт будет запускаться каждый день в полночь.
3. Уведомления при критическом состоянии. Модифицируем скрипт для отправки уведомлений, если свободного места становится меньше 20%.
Если свободного места станет меньше 20%, лог будет дополнен, а администратору отправлено уведомление.
4. Анализ роста использования пространства:
Визуализация:
Сохраните данные в CSV для анализа:
Затем откройте CSV в Excel или LibreOffice для построения графиков.
Логирование дискового пространства помогает предвидеть и устранять проблемы до того, как они повлияют на работу системы, а также производить различные анализы.
BashTex📱 #bash #utils
Дисковое пространство - один из важнейших ресурсов системы. Постоянный мониторинг его состояния помогает избежать неприятных ситуаций, таких как переполнение разделов и остановка важных процессов. Логирование дискового пространства позволяет своевременно выявлять проблемы и анализировать историю использования.
Почему это важно?
Предотвращение проблем: Заранее узнавайте о нехватке места.
Анализ трендов: Отслеживайте, как быстро растёт использование места.
Автоматизация: Система сама уведомляет о критических ситуациях.
1. Создаём систему логирования дискового пространства. Базовый скрипт для логирования:
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
# Текущая дата и время
CURRENT_DATE=$(date '+%Y-%m-%d %H:%M:%S')
# Состояние дисков
DISK_USAGE=$(df -h)
# Запись в лог-файл
{
echo "-----"
echo "Дата: $CURRENT_DATE"
echo "$DISK_USAGE"
} >> "$LOG_FILE"
echo "Логирование завершено. Данные записаны в $LOG_FILE"
Вывод в файле /var/log/disk_usage.log:
-----
Дата: 2024-11-05 14:00:00
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 50G 30G 20G 60% /
tmpfs 2.0G 1.0M 2.0G 1% /dev/shm
/dev/sdb1 100G 50G 50G 50% /mnt/data
2. Автоматизация через cron. Добавьте скрипт в crontab, чтобы запускать его ежедневно:
crontab -e
Добавьте строку:
0 0 * * * /path/to/disk_logger.sh
Теперь скрипт будет запускаться каждый день в полночь.
3. Уведомления при критическом состоянии. Модифицируем скрипт для отправки уведомлений, если свободного места становится меньше 20%.
#!/bin/bash
LOG_FILE="/var/log/disk_usage.log"
THRESHOLD=20
# Проверка разделов
df -h | awk -v date="$(date '+%Y-%m-%d %H:%M:%S')" -v threshold="$THRESHOLD" 'NR>1 {gsub("%", "", $5); if ($5 > (100-threshold)) print date, $0}' | while read -r line; do
echo "Критическое состояние диска: $line" >> "$LOG_FILE"
echo "$line" | mail -s "Уведомление: мало места на диске" admin@bashtex.com
done
Если свободного места станет меньше 20%, лог будет дополнен, а администратору отправлено уведомление.
4. Анализ роста использования пространства:
grep "/dev/sda1" /var/log/disk_usage.log | awk '{print $2, $3, $5}' | tail
Визуализация:
Сохраните данные в CSV для анализа:
grep "/dev/sda1" /var/log/disk_usage.log | awk '{print $1, $5}' > disk_usage.csv
Затем откройте CSV в Excel или LibreOffice для построения графиков.
Логирование дискового пространства помогает предвидеть и устранять проблемы до того, как они повлияют на работу системы, а также производить различные анализы.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Бесполезно - полезная команда
Когда-нибудь слышали про
Что делает true? true возвращает успешный статус и ничего больше.
Но давайте разберемся, где применяется true и какое применение ей можно найти.
1. Бесконечные циклы без условий. Вместо громоздкого while [ 1 ]; do, используйте true для создания чистого бесконечного цикла:
2. Заглушки для тестирования. Если вы пишете скрипт и определённые команды ещё не готовы, используйте true как временную заглушку:
3. Условные команды без выполнения. Иногда нужно выполнить что-то только при ошибке. Вместо добавления условий используйте true как пустую команду:
4. Условное выполнение с && и ||
Если папка существует, выводится сообщение. Если нет, ничего не происходит.
5. Отключение alias в сценариях. Чтобы убедиться, что используется реальная команда, а не alias:
Это полезно, если ls переопределён.
6. "Просто продолжай". Для сложных скриптов, где нужно игнорировать возможные ошибки в блоках:
Файл копируется, но ошибки игнорируются.
На самом деле, по итогу команда
BashTex📱 #linux #utils
Когда-нибудь слышали про
true? На первый взгляд, команда true в Linux кажется бесполезной: она просто возвращает успешный код выхода (0). Но за этой простотой скрывается мощный инструмент, который можно применять в сложных сценариях автоматизации и написании нестандартных команд.Что делает true? true возвращает успешный статус и ничего больше.
true
echo $?
0
Но давайте разберемся, где применяется true и какое применение ей можно найти.
1. Бесконечные циклы без условий. Вместо громоздкого while [ 1 ]; do, используйте true для создания чистого бесконечного цикла:
while true; do
echo "Работаем!"
sleep 1
done
2. Заглушки для тестирования. Если вы пишете скрипт и определённые команды ещё не готовы, используйте true как временную заглушку:
Копировать код
#!/bin/bash
echo "Шаг 1: Выполнен"
true # В будущем замените на реальную команду
echo "Шаг 2: Выполнен"
3. Условные команды без выполнения. Иногда нужно выполнить что-то только при ошибке. Вместо добавления условий используйте true как пустую команду:
mkdir /tmp/test || true
4. Условное выполнение с && и ||
[ -d /tmp/test ] && echo "Папка существует" || true
Если папка существует, выводится сообщение. Если нет, ничего не происходит.
5. Отключение alias в сценариях. Чтобы убедиться, что используется реальная команда, а не alias:
true && /bin/ls
Это полезно, если ls переопределён.
6. "Просто продолжай". Для сложных скриптов, где нужно игнорировать возможные ошибки в блоках:
cp важный_файл.txt /куда-то/ || true
Файл копируется, но ошибки игнорируются.
На самом деле, по итогу команда
true - это простой, но очень гибкий инструмент. Она идеально подходит для упрощения циклов, тестирования скриптов и построения сложных сценариев с условным выполнением команд. Если вы хотите писать лаконичный и читаемый код - не забывайте про этого незаменимого помощника.BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9
Инструмент для работы с электронной почтой в Linux
Основные возможности mailx:
1. Отправка простого письма:
-s: заголовок письма.
user@bashtex.com: получатель.
Результат: заголовок "Тестовое письмо" и телом "Привет, это тестовое письмо!".
2. Отправка письма с вложением. Для отправки файла в качестве вложения используйте флаг -a:
Пример вывода у получателя:
Тема: Файл во вложении.
Текст: Смотрите вложение.
Прикреплённый файл: file.txt.
3. Использование SMTP-сервера. Настройка SMTP-сервера позволяет отправлять письма через внешние почтовые сервисы (например, Gmail):
Добавьте настройки в файл ~/.mailrc:
Теперь отправка письма будет происходить через SMTP:
4. Автоматическая отправка отчётов. mailx отлично подходит для автоматизации. Например, отправка отчёта о состоянии дисков:
5. Чтение почты. Если настроен локальный почтовый сервер, mailx можно использовать для чтения входящих сообщений:
Навигация по письмам:
Нажмите ? для списка доступных команд.
Используйте номер письма для чтения, например:
При всей своей простоте mailx позволяет отправлять уведомления, автоматизировать отчёты или выполнять простое чтение писем. Если вы ищете лёгкий и надёжный способ управлять почтой в Linux, то mailx будет верным помощником.
BashTex📱 #linux #utils
mailx - это классическая утилита для отправки и получения электронной почты прямо из командной строки. Несмотря на своё минималистичное происхождение, она остаётся популярной благодаря гибкости, простоте использования и широким возможностям для интеграции со скриптами.Основные возможности mailx:
Отправка писем с вложениями.
Поддержка SMTP-серверов.
Интеграция в bash-скрипты для автоматизации.
Чтение входящих писем.
1. Отправка простого письма:
echo "Привет, это тестовое письмо!" | mailx -s "Тестовое письмо" user@bashtex.com
-s: заголовок письма.
user@bashtex.com: получатель.
Результат: заголовок "Тестовое письмо" и телом "Привет, это тестовое письмо!".
2. Отправка письма с вложением. Для отправки файла в качестве вложения используйте флаг -a:
echo "Смотрите вложение." | mailx -s "Файл во вложении" -a /path/to/file.txt user@bashtex.com
Пример вывода у получателя:
Тема: Файл во вложении.
Текст: Смотрите вложение.
Прикреплённый файл: file.txt.
3. Использование SMTP-сервера. Настройка SMTP-сервера позволяет отправлять письма через внешние почтовые сервисы (например, Gmail):
Добавьте настройки в файл ~/.mailrc:
set smtp-use-starttls
set ssl-verify=ignore
set smtp=smtp://smtp.gmail.com:587
set smtp-auth=login
set smtp-auth-user=your_email@gmail.com
set smtp-auth-password=your_password
set from="your_email@gmail.com"
Теперь отправка письма будет происходить через SMTP:
echo "Почта через SMTP!" | mailx -s "SMTP тест" user@example.com
4. Автоматическая отправка отчётов. mailx отлично подходит для автоматизации. Например, отправка отчёта о состоянии дисков:
#!/bin/bash
DISK_USAGE=$(df -h)
echo "$DISK_USAGE" | mailx -s "Ежедневный отчёт о дисках" admin@example.com
5. Чтение почты. Если настроен локальный почтовый сервер, mailx можно использовать для чтения входящих сообщений:
mailx
Навигация по письмам:
Нажмите ? для списка доступных команд.
Используйте номер письма для чтения, например:
& 1
При всей своей простоте mailx позволяет отправлять уведомления, автоматизировать отчёты или выполнять простое чтение писем. Если вы ищете лёгкий и надёжный способ управлять почтой в Linux, то mailx будет верным помощником.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
Отправка SMS с помощью утилит Linux
Хотите отправлять SMS прямо из Linux? Это полезно для автоматизации уведомлений, мониторинга или личного использования. Рассмотрим, как настроить и использовать популярную утилиту
Gammu - это важный инструмент для работы с мобильными телефонами или GSM-модемами. Он позволяет:
1. Подключите устройство: GSM-модем или телефон через USB.
2. Настройка Gammu. Определите порт подключения устройства:
Обычно модем определяется как /dev/ttyUSB0.
3. Сконфигурируйте gammu:
Создайте файл ~/.gammurc:
4. Проверьте связь с устройством:
Ожидаемый вывод:
5. Отправка тестового SMS:
+79161234567 — номер телефона в международном формате.
"Привет! Это тестовое сообщение." — текст сообщения.
Пример вывода:
If you want break, press Ctrl+C...
Sending SMS 1/1....waiting for network acknowledgement..OK, message reference=1
6. Автоматизация через скрипты. Создайте bash-скрипт для автоматической отправки уведомлений:
Это пример базового скрипта, который можно добавить в cron. При необходимости отправку СМС можно связать с мониторингом важных процессов и в случае их падения получать СМС, например.
7. Безопасность. Убедитесь, что права на файл с конфигурацией ограничены:
Для использования сторонних сервисов, таких как SMS-шлюзы, храните API-ключи в защищённых файлах.
---
Дополнительные команды Gammu.
Чтение входящих SMS:
Удаление всех SMS:
Отправка Flash SMS (отображается на экране, но не сохраняется):
BashTex📱 #linux #utils
Хотите отправлять SMS прямо из Linux? Это полезно для автоматизации уведомлений, мониторинга или личного использования. Рассмотрим, как настроить и использовать популярную утилиту
gammu для отправки SMS.Gammu - это важный инструмент для работы с мобильными телефонами или GSM-модемами. Он позволяет:
Отправлять SMS и MMS.
Управлять контактами и календарями.
Работать с USSD-командами.
1. Подключите устройство: GSM-модем или телефон через USB.
2. Настройка Gammu. Определите порт подключения устройства:
ls /dev/tty*
Обычно модем определяется как /dev/ttyUSB0.
3. Сконфигурируйте gammu:
Создайте файл ~/.gammurc:
[gammu]
device = /dev/ttyUSB0
connection = at
4. Проверьте связь с устройством:
gammu --identify
Ожидаемый вывод:
Device : /dev/ttyUSB0
Manufacturer : Huawei
Model : E173 (E173)
Firmware : 11.126.16.04.00
IMEI : 123456789012345
5. Отправка тестового SMS:
gammu sendsms TEXT +79161234567 -text "Привет! Это тестовое сообщение."
+79161234567 — номер телефона в международном формате.
"Привет! Это тестовое сообщение." — текст сообщения.
Пример вывода:
If you want break, press Ctrl+C...
Sending SMS 1/1....waiting for network acknowledgement..OK, message reference=1
6. Автоматизация через скрипты. Создайте bash-скрипт для автоматической отправки уведомлений:
#!/bin/bash
PHONE="+79161234567"
MESSAGE="Сервер работает нормально."
gammu sendsms TEXT "$PHONE" -text "$MESSAGE" >> /var/log/sms.log 2>&1
Это пример базового скрипта, который можно добавить в cron. При необходимости отправку СМС можно связать с мониторингом важных процессов и в случае их падения получать СМС, например.
7. Безопасность. Убедитесь, что права на файл с конфигурацией ограничены:
chmod 600 ~/.gammurc
Для использования сторонних сервисов, таких как SMS-шлюзы, храните API-ключи в защищённых файлах.
---
Дополнительные команды Gammu.
Чтение входящих SMS:
gammu getallsms
Удаление всех SMS:
gammu deleteallsms 1
Отправка Flash SMS (отображается на экране, но не сохраняется):
gammu sendsms FLASH +79161234567 -text "Это Flash SMS!"
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10
Параллельное выполнение задач в Bash: ускоряем скрипты и контролируем фоновые процессы
Когда вы запускаете множество команд последовательно, выполнение скрипта может занять значительное время. Параллельное выполнение задач позволяет значительно ускорить процесс, особенно если команды не зависят друг от друга. В этой статье рассмотрим:
1. Параллельное выполнение с &. Чтобы запустить команду в фоновом режиме, просто добавьте & в конце строки:
2. Ограничение количества фоновых задач. Когда слишком много задач выполняются параллельно, это может перегрузить систему. Чтобы избежать этого, можно использовать ограничение.
Пример с семафором (функция parallel_run):
Результат выполнения:
Количество одновременно выполняемых задач не превышает 4.
3. Сравнение производительности
Скрипт с последовательным выполнением:
Результат: время выполнения = 10 задач × 2 секунды = 20 секунд.
Скрипт с параллельным выполнением:
Результат: Все задачи запускаются одновременно. Время выполнения ≈ 2 секунды.
Скрипт с ограничением фоновых задач:
Результат: Ограничение до 3 задач одновременно. Время выполнения ≈ 7–8 секунд.
---
Дополнительный инструмент:
Для простого ограничения количества задач можно использовать xargs с флагом -P:
-P4: ограничение на 4 параллельные задачи.
В результате получается, что параллельное выполнение задач в Bash значительно ускоряет работу скриптов:
👎 Полное отсутствие ограничений может перегрузить систему.
👍 Ограничение количества задач помогает сбалансировать нагрузку.
👍 Использование инструментов, таких как wait, xargs, или написание собственных функций, позволяет гибко управлять параллельностью.
BashTex📱 #linux #utils
Когда вы запускаете множество команд последовательно, выполнение скрипта может занять значительное время. Параллельное выполнение задач позволяет значительно ускорить процесс, особенно если команды не зависят друг от друга. В этой статье рассмотрим:
Как запустить команды в фоне.
Как ограничить количество параллельно выполняемых задач.
Сравним результаты для наглядной демонстрации.
1. Параллельное выполнение с &. Чтобы запустить команду в фоновом режиме, просто добавьте & в конце строки:
sleep 5 & # Фоновая задача
echo "Команда завершена"
wait # Ожидание завершения всех фоновых задач
2. Ограничение количества фоновых задач. Когда слишком много задач выполняются параллельно, это может перегрузить систему. Чтобы избежать этого, можно использовать ограничение.
Пример с семафором (функция parallel_run):
#!/bin/bash
# Функция для параллельного выполнения с ограничением
parallel_run() {
local max_jobs=4 # Максимальное количество фоновых задач
local job_count=0
for i in {1..10}; do
{
echo "Начало задачи $i"
sleep $((RANDOM % 5 + 1)) # Симуляция работы
echo "Задача $i завершена"
} &
((job_count++))
if [[ $job_count -ge $max_jobs ]]; then
wait -n # Ждём завершения одной из задач
((job_count--))
fi
done
wait # Ожидание завершения всех оставшихся задач
}
# Запуск
parallel_run
Результат выполнения:
Начало задачи 1
Начало задачи 2
Начало задачи 3
Начало задачи 4
Задача 2 завершена
Начало задачи 5
...
Количество одновременно выполняемых задач не превышает 4.
3. Сравнение производительности
Скрипт с последовательным выполнением:
#!/bin/bash
for i in {1..10}; do
echo "Выполняется задача $i"
sleep 2 # Симуляция работы
echo "Задача $i завершена"
done
Результат: время выполнения = 10 задач × 2 секунды = 20 секунд.
Скрипт с параллельным выполнением:
Копировать код
#!/bin/bash
for i in {1..10}; do
{
echo "Выполняется задача $i"
sleep 2 # Симуляция работы
echo "Задача $i завершена"
} &
done
wait
Результат: Все задачи запускаются одновременно. Время выполнения ≈ 2 секунды.
Скрипт с ограничением фоновых задач:
Копировать код
#!/bin/bash
parallel_run() {
local max_jobs=3
local job_count=0
for i in {1..10}; do
{
echo "Выполняется задача $i"
sleep 2 # Симуляция работы
echo "Задача $i завершена"
} &
((job_count++))
if [[ $job_count -ge $max_jobs ]]; then
wait -n
((job_count--))
fi
done
wait
}
parallel_run
Результат: Ограничение до 3 задач одновременно. Время выполнения ≈ 7–8 секунд.
---
Дополнительный инструмент:
xargsДля простого ограничения количества задач можно использовать xargs с флагом -P:
seq 1 10 | xargs -n1 -P4 -I{} bash -c 'echo "Начало задачи {}"; sleep 2; echo "Задача {} завершена"'
-P4: ограничение на 4 параллельные задачи.
В результате получается, что параллельное выполнение задач в Bash значительно ускоряет работу скриптов:
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
logrotate: настройка ротации логов в Linux
Большие объёмы логов могут быстро заполнять дисковое пространство, затрудняя работу системы. Для автоматического управления логами в Linux используется инструмент logrotate. Он позволяет архивировать, удалять или сжимать старые файлы логов, оставляя только актуальные записи.
logrotate работает на основе конфигураций, определяя:
Настройка logrotate
1. Глобальный файл конфигурации:
Находится по пути /etc/logrotate.conf. Он задаёт общие параметры ротации.
Пример содержимого:
2. Пользовательские настройки для приложений:
Каждое приложение может иметь свой файл конфигурации в /etc/logrotate.d/.
Пример для файла /etc/logrotate.d/nginx:
Пример настройки ротации пользовательских логов
Допустим, у нас есть приложение, которое пишет логи в /var/log/myapp/. Мы хотим:
Для этого создайте файл /etc/logrotate.d/myapp:
Проверка работы logrotate
Запустите тест ротации:
Опция -d выводит информацию о предстоящих действиях без выполнения.
Принудительно выполните ротацию:
Проверьте результат: После выполнения команда должна создать сжатые файлы логов, например:
Советы по безопасности
BashTex📱 #linux #utils
Большие объёмы логов могут быстро заполнять дисковое пространство, затрудняя работу системы. Для автоматического управления логами в Linux используется инструмент logrotate. Он позволяет архивировать, удалять или сжимать старые файлы логов, оставляя только актуальные записи.
logrotate работает на основе конфигураций, определяя:
Частоту ротации (ежедневно, еженедельно, ежемесячно).
Количество архивов, которые нужно сохранять.
Сжатие логов для экономии пространства.
Выполнение пользовательских скриптов после ротации.
Настройка logrotate
1. Глобальный файл конфигурации:
Находится по пути /etc/logrotate.conf. Он задаёт общие параметры ротации.
Пример содержимого:
weekly # Ротация раз в неделю
rotate 4 # Хранить 4 архивных файла
create # Создавать новый файл после ротации
compress # Сжимать логи с помощью gzip
include /etc/logrotate.d/ # Подключение дополнительных конфигураций
2. Пользовательские настройки для приложений:
Каждое приложение может иметь свой файл конфигурации в /etc/logrotate.d/.
Пример для файла /etc/logrotate.d/nginx:
/var/log/nginx/*.log {
daily # Ротация логов каждый день
missingok # Пропускать файлы, если их нет
rotate 7 # Хранить 7 архивов
compress # Сжимать архивы
delaycompress # Откладывать сжатие на следующий цикл
notifempty # Пропускать пустые файлы
create 0640 www-data adm # Создавать новый лог с указанными правами
postrotate # Выполнять команду после ротации
systemctl reload nginx > /dev/null
endnoscript
}
Пример настройки ротации пользовательских логов
Допустим, у нас есть приложение, которое пишет логи в /var/log/myapp/. Мы хотим:
Ротировать логи ежедневно.
Сохранять последние 5 архивов.
Сжимать архивы.
Перезапускать приложение после ротации.
Для этого создайте файл /etc/logrotate.d/myapp:
/var/log/myapp/*.log {
daily
rotate 5
compress
missingok
notifempty
create 0640 root root
postrotate
systemctl restart myapp
endnoscript
}
Проверка работы logrotate
Запустите тест ротации:
logrotate -d /etc/logrotate.conf
Опция -d выводит информацию о предстоящих действиях без выполнения.
Принудительно выполните ротацию:
logrotate -f /etc/logrotate.conf
Проверьте результат: После выполнения команда должна создать сжатые файлы логов, например:
/var/log/myapp/myapp.log.1.gz
/var/log/myapp/myapp.log.2.gz
Советы по безопасности
Убедитесь, что права доступа к логам соответствуют требованиям.
Используйте create в конфигурации для автоматического создания новых файлов с нужными правами.
Регулярно проверяйте дисковое пространство, чтобы старые логи не заполняли диск.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13
Мониторинг перебора паролей и блокировка учетных записей
Безопасность серверов - задача номер один для системного администратора. Перебор паролей (brute force) — одна из самых популярных атак на учетные записи. Чтобы защитить систему, нужно не только обнаруживать такие попытки, но и автоматически блокировать злоумышленников.
Где искать попытки перебора паролей? В Linux информация о входах и попытках авторизации хранится в следующих файлах:
Пример попытки перебора паролей в логе:
Автоматическая блокировка с помощью pam_tally2
pam_tally2 - модуль PAM, позволяющий подсчитывать неудачные попытки входа и блокировать учетные записи.
Настройка блокировки: Откройте файл /etc/pam.d/common-auth (Debian/Ubuntu) или /etc/pam.d/system-auth (CentOS/RHEL).
Добавьте строку:
Для блокировки учетной записи добавьте строку в тот же файл:
Проверка работы:
Посмотрите текущие неудачные попытки:
Пример вывода:
Сбросьте счетчик неудач для пользователя:
Дополнительная защита с Fail2Ban
Fail2Ban - мощный инструмент, который анализирует логи и автоматически блокирует IP-адреса злоумышленников через iptables.
Установка:
Настройка для SSH:
Откройте файл /etc/fail2ban/jail.local и добавьте:
Перезапустите Fail2Ban:
Проверка работы:
Просмотр заблокированных IP:
Разблокировка IP:
---
Рекомендации для повышения безопасности
BashTex📱 #linux #utils
Безопасность серверов - задача номер один для системного администратора. Перебор паролей (brute force) — одна из самых популярных атак на учетные записи. Чтобы защитить систему, нужно не только обнаруживать такие попытки, но и автоматически блокировать злоумышленников.
Где искать попытки перебора паролей? В Linux информация о входах и попытках авторизации хранится в следующих файлах:
/var/log/auth.log (Debian/Ubuntu).
/var/log/secure (CentOS/RHEL).
Пример попытки перебора паролей в логе:
Oct 28 14:23:45 server sshd[1234]: Failed password for root from 192.168.1.100 port 44567 ssh2
Oct 28 14:23:47 server sshd[1234]: Failed password for root from 192.168.1.100 port 44568 ssh2
Автоматическая блокировка с помощью pam_tally2
pam_tally2 - модуль PAM, позволяющий подсчитывать неудачные попытки входа и блокировать учетные записи.
Настройка блокировки: Откройте файл /etc/pam.d/common-auth (Debian/Ubuntu) или /etc/pam.d/system-auth (CentOS/RHEL).
Добавьте строку:
auth required pam_tally2.so onerr=fail deny=5 unlock_time=300
deny=5: блокировать учетную запись после 5 неудачных попыток.
unlock_time=300: автоматически разблокировать через 5 минут.
Для блокировки учетной записи добавьте строку в тот же файл:
account required pam_tally2.so
Проверка работы:
Посмотрите текущие неудачные попытки:
pam_tally2
Пример вывода:
Login Failures Latest failure
root 3 10/28/24 14:23:45
user1 5 10/28/24 14:25:01
Сбросьте счетчик неудач для пользователя:
pam_tally2 --user=user1 --reset
Дополнительная защита с Fail2Ban
Fail2Ban - мощный инструмент, который анализирует логи и автоматически блокирует IP-адреса злоумышленников через iptables.
Установка:
sudo apt install fail2ban # Для Debian/Ubuntu
sudo yum install epel-release && sudo yum install fail2ban # Для CentOS/RHEL
Настройка для SSH:
Откройте файл /etc/fail2ban/jail.local и добавьте:
[sshd]
enabled = true
maxretry = 5
bantime = 3600
findtime = 600
maxretry=5: количество неудачных попыток.
bantime=3600: блокировка IP на 1 час.
findtime=600: анализировать попытки за последние 10 минут.
Перезапустите Fail2Ban:
sudo systemctl restart fail2ban
Проверка работы:
Просмотр заблокированных IP:
sudo fail2ban-client status sshd
Разблокировка IP:
sudo fail2ban-client unban IP_ADDRESS
---
Рекомендации для повышения безопасности
Используйте ключи SSH: Полностью отключите вход по паролю, включив аутентификацию по ключам SSH.
Ограничьте доступ по IP: Настройте файлы hosts.allow и hosts.deny или используйте брандмауэр.
Перенесите SSH на нестандартный порт: Это затруднит автоматизированные атаки.
Регулярно проверяйте логи: Используйте скрипты для автоматического анализа логов на наличие подозрительных активностей.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6
Неочевидно полезные опции команды ls
Команда
1. Показываем файлы со всеми деталями: --almost-all. По умолчанию ls с опцией -a отображает все файлы, включая . и ... Но если они вам не нужны, используйте
2. Показываем время последнего изменения: --time-style. Эта опция позволяет гибко настроить отображение времени. Например, чтобы видеть точное время:
Хотите форматировать время под себя? Используйте:
3. Нумерация строк: -l --numeric-uid-gid. Эта опция показывает UID и GID вместо имени пользователя и группы. Полезно для отладки:
4. Сортировка по размеру: -lS. Сортируйте файлы по их размеру в порядке убывания:
5. Вывод цвета в терминале: --color=always. Если вы хотите сохранить цвета при перенаправлении вывода команды, используйте:
6. Показываем только директории: -d */. Хотите видеть только папки в каталоге?
7. Группировка файлов и папок: --group-directories-first. Полезно, если вы хотите видеть папки в начале списка:
8. Показываем inode каждого файла: -i. Каждый файл в Linux имеет свой уникальный inode. Используйте -i, чтобы увидеть их:
Теперь Вы владеете не просто командой, а целым инструментом для работы с файлами. Попробуйте описанные опции, чтобы сделать управление файлами более удобным и эффективным
BashTex📱 #linux #utils
Команда
ls знакома всем, кто хоть раз работал в командной строке Linux. Но она умеет гораздо больше, чем просто перечислять файлы. Разберём несколько малоизвестных, но крайне полезных опций1. Показываем файлы со всеми деталями: --almost-all. По умолчанию ls с опцией -a отображает все файлы, включая . и ... Но если они вам не нужны, используйте
--almost-all:
ls --almost-all
.bashrc .config .viminfo file1.txt file2.txt
2. Показываем время последнего изменения: --time-style. Эта опция позволяет гибко настроить отображение времени. Например, чтобы видеть точное время:
ls -l --time-style=long-iso
-rw-r--r-- 1 user group 123 Oct 28 14:32 file1.txt
Хотите форматировать время под себя? Используйте:
ls -l --time-style=+"%d-%m-%Y %H:%M:%S"
-rw-r--r-- 1 user group 123 28-10-2024 14:32 file1.txt
3. Нумерация строк: -l --numeric-uid-gid. Эта опция показывает UID и GID вместо имени пользователя и группы. Полезно для отладки:
ls -l --numeric-uid-gid
-rw-r--r-- 1 1000 1000 123 Oct 28 14:32 file1.txt
4. Сортировка по размеру: -lS. Сортируйте файлы по их размеру в порядке убывания:
ls -lS
-rw-r--r-- 1 user group 4567 Oct 28 14:32 large_file.txt
-rw-r--r-- 1 user group 123 Oct 28 14:32 small_file.txt
5. Вывод цвета в терминале: --color=always. Если вы хотите сохранить цвета при перенаправлении вывода команды, используйте:
ls --color=always | less -R
6. Показываем только директории: -d */. Хотите видеть только папки в каталоге?
ls -d */
Documents/ Downloads/Scripts/
7. Группировка файлов и папок: --group-directories-first. Полезно, если вы хотите видеть папки в начале списка:
ls --group-directories-first
Documents/ Downloads/ file1.txt file2.txt
8. Показываем inode каждого файла: -i. Каждый файл в Linux имеет свой уникальный inode. Используйте -i, чтобы увидеть их:
ls -i
123456 file1.txt
123457 file2.txt
Теперь Вы владеете не просто командой, а целым инструментом для работы с файлами. Попробуйте описанные опции, чтобы сделать управление файлами более удобным и эффективным
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10🗿1
LDAP: зачем нужен и чем помогает
LDAP (Lightweight Directory Access Protocol) - это стандартный протокол для доступа и управления распределёнными каталогами данных. Если говорить проще, LDAP помогает хранить и быстро находить информацию о пользователях, группах, устройствах или других объектах в сети.
Этот инструмент стал неотъемлемой частью корпоративной инфраструктуры, где нужно организовать централизованное управление данными. Давайте разберём, зачем нужен LDAP и как он облегчает жизнь системным администраторам и IT-командам.
Зачем нужен LDAP?
Централизованное управление пользователями
Вместо того чтобы создавать отдельные учётные записи на каждом сервере или сервисе, вы можете хранить все данные пользователей в одном месте. Это значительно упрощает администрирование.
Единая точка аутентификации (SSO)
С помощью LDAP можно настроить единую точку входа для всех сервисов. Например, пользователь входит в систему один раз, и этот логин работает для почты, файловых серверов, систем мониторинга и других ресурсов.
Упрощённое управление группами
LDAP позволяет быстро добавлять, удалять и редактировать группы пользователей. Например, создайте группу «Администраторы», чтобы предоставить всем её членам доступ к определённым ресурсам.
Интеграция с другими системами
LDAP поддерживается большинством корпоративных приложений и служб:
Сервера: Apache, Nginx, Samba.
Почтовые системы: Postfix, Dovecot.
Инструменты DevOps: Jenkins, GitLab.
Операционные системы: Windows, macOS, Linux.
Широкий охват объектов
Кроме пользователей и групп, в LDAP можно хранить:
Информацию о принтерах и устройствах.
Политики безопасности.
Структуру организации (отделы, филиалы).
Как LDAP помогает в реальной жизни?
1. Управление доступом
Представьте, что у вас 100 сотрудников. Вместо того чтобы вручную создавать каждому доступ к десяткам серверов, вы настраиваете LDAP. Теперь достаточно добавить пользователя в базу, и он получит нужные права.
2. Быстрый поиск данных
LDAP поддерживает мощные запросы для поиска объектов. Например, можно легко найти всех сотрудников из отдела маркетинга или пользователей, чей пароль истекает через 7 дней.
Пример запроса через
3. Автоматизация задач
LDAP позволяет автоматизировать ротацию паролей, управление правами доступа и синхронизацию данных между системами.
Преимущества LDAP:
Кому и когда нужен LDAP?
LDAP идеально подходит для компаний с:
В следующей статье разберемся с установкой и настройкой
BashTex📱 #linux #utils
LDAP (Lightweight Directory Access Protocol) - это стандартный протокол для доступа и управления распределёнными каталогами данных. Если говорить проще, LDAP помогает хранить и быстро находить информацию о пользователях, группах, устройствах или других объектах в сети.
Этот инструмент стал неотъемлемой частью корпоративной инфраструктуры, где нужно организовать централизованное управление данными. Давайте разберём, зачем нужен LDAP и как он облегчает жизнь системным администраторам и IT-командам.
Зачем нужен LDAP?
Централизованное управление пользователями
Вместо того чтобы создавать отдельные учётные записи на каждом сервере или сервисе, вы можете хранить все данные пользователей в одном месте. Это значительно упрощает администрирование.
Единая точка аутентификации (SSO)
С помощью LDAP можно настроить единую точку входа для всех сервисов. Например, пользователь входит в систему один раз, и этот логин работает для почты, файловых серверов, систем мониторинга и других ресурсов.
Упрощённое управление группами
LDAP позволяет быстро добавлять, удалять и редактировать группы пользователей. Например, создайте группу «Администраторы», чтобы предоставить всем её членам доступ к определённым ресурсам.
Интеграция с другими системами
LDAP поддерживается большинством корпоративных приложений и служб:
Сервера: Apache, Nginx, Samba.
Почтовые системы: Postfix, Dovecot.
Инструменты DevOps: Jenkins, GitLab.
Операционные системы: Windows, macOS, Linux.
Широкий охват объектов
Кроме пользователей и групп, в LDAP можно хранить:
Информацию о принтерах и устройствах.
Политики безопасности.
Структуру организации (отделы, филиалы).
Как LDAP помогает в реальной жизни?
1. Управление доступом
Представьте, что у вас 100 сотрудников. Вместо того чтобы вручную создавать каждому доступ к десяткам серверов, вы настраиваете LDAP. Теперь достаточно добавить пользователя в базу, и он получит нужные права.
2. Быстрый поиск данных
LDAP поддерживает мощные запросы для поиска объектов. Например, можно легко найти всех сотрудников из отдела маркетинга или пользователей, чей пароль истекает через 7 дней.
Пример запроса через
ldapsearch :
ldapsearch -x -b "dc=example,dc=com" "(department=Marketing)"
3. Автоматизация задач
LDAP позволяет автоматизировать ротацию паролей, управление правами доступа и синхронизацию данных между системами.
Преимущества LDAP:
Гибкость: поддерживает сложные структуры данных и широкий набор атрибутов.
Масштабируемость: подходит как для небольших компаний, так и для крупных корпораций.
Безопасность: поддержка SSL/TLS для шифрования трафика.
Открытые стандарты: совместим с широким спектром решений.
Кому и когда нужен LDAP?
LDAP идеально подходит для компаний с:
Большим количеством сотрудников и устройств.
Разнообразными сервисами, которые требуют централизованного управления доступом.
Потребностью в единой системе учётных записей.
В следующей статье разберемся с установкой и настройкой
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥1👨💻1
LDAP: Установка и настройка LDAP-сервера в Linux
В этой статье разберём процесс установки и базовой настройки LDAP-сервера на основе OpenLDAP в Linux.
1. Установка OpenLDAP. Установка необходимых пакетов:
На Ubuntu/Debian:
На CentOS/RHEL:
2. Инициализация и настройка LDAP-сервера
2.1. Настройка slapd через утилиту конфигурации (для Ubuntu/Debian):
Во время настройки система запросит:
DNS-домен: например, bashtex.com.
Организацию: введите имя вашей компании или группы, например, BashTex
Пароль администратора (admin): задайте надёжный пароль.
2.2. Проверка статуса службы. Убедитесь, что сервер работает:
3. Создание базовой структуры LDAP. Для работы LDAP необходимо задать базовую структуру: организационные единицы (OU), пользователи и группы.
3.1 Создание LDIF-файла с базовой структурой. Создайте файл base.ldif со следующим содержимым:
3.2. Применение структуры. Загрузите данные в LDAP:
Введите пароль, указанный при настройке slapd.
4. Добавление пользователей. Создайте LDIF-файл с пользователем:
Чтобы сгенерировать хэш пароля:
4.1. Загрузите пользователя в LDAP:
5. Проверка LDAP. Просмотр записей в LDAP:
5.1. Поиск пользователей:
Дополнительная настройка
1. Установка SSL/TLS для защиты соединений:
Убедитесь, что установлен certbot или аналогичный инструмент, и настройте сертификаты. Затем укажите их в конфигурации /etc/ldap/ldap.conf:
2. Интеграция с другими сервисами:
LDAP можно использовать для аутентификации пользователей в таких системах, как:
SSH: настройте PAM через libpam-ldap.
Web-сервисы: интеграция с Apache, Nginx.
Почтовые серверы: например, Postfix или Dovecot.
Установив OpenLDAP и создав базовую структуру, вы сможете расширять её для любых корпоративных нужд.
BashTex📱 #linux #security
В этой статье разберём процесс установки и базовой настройки LDAP-сервера на основе OpenLDAP в Linux.
1. Установка OpenLDAP. Установка необходимых пакетов:
На Ubuntu/Debian:
sudo apt update
sudo apt install slapd ldap-utils
На CentOS/RHEL:
sudo yum install openldap openldap-servers openldap-clients
sudo systemctl enable slapd
sudo systemctl start slapd
2. Инициализация и настройка LDAP-сервера
2.1. Настройка slapd через утилиту конфигурации (для Ubuntu/Debian):
sudo dpkg-reconfigure slapd
Во время настройки система запросит:
DNS-домен: например, bashtex.com.
Организацию: введите имя вашей компании или группы, например, BashTex
Пароль администратора (admin): задайте надёжный пароль.
2.2. Проверка статуса службы. Убедитесь, что сервер работает:
sudo systemctl status slapd
3. Создание базовой структуры LDAP. Для работы LDAP необходимо задать базовую структуру: организационные единицы (OU), пользователи и группы.
3.1 Создание LDIF-файла с базовой структурой. Создайте файл base.ldif со следующим содержимым:
dn: ou=users,dc=bashtex,dc=com
objectClass: organizationalUnit
ou: users
dn: ou=groups,dc=bashtex,dc=com
objectClass: organizationalUnit
ou: groups
3.2. Применение структуры. Загрузите данные в LDAP:
ldapadd -x -D "cn=admin,dc=example,dc=com" -W -f base.ldif
Введите пароль, указанный при настройке slapd.
4. Добавление пользователей. Создайте LDIF-файл с пользователем:
dn: uid=jdoe,ou=users,dc=bashtex,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: jdoe
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 1000
gidNumber: 1000
homeDirectory: /home/jdoe
loginShell: /bin/bash
userPassword: {SSHA}yourpasswordhash
Чтобы сгенерировать хэш пароля:
slappasswd
4.1. Загрузите пользователя в LDAP:
ldapadd -x -D "cn=admin,dc=bashtex,dc=com" -W -f user.ldif
5. Проверка LDAP. Просмотр записей в LDAP:
ldapsearch -x -LLL -b "dc=example,dc=com" "(objectClass=*)"
5.1. Поиск пользователей:
ldapsearch -x -b "ou=users,dc=example,dc=com" "(uid=jdoe)"
Дополнительная настройка
1. Установка SSL/TLS для защиты соединений:
Убедитесь, что установлен certbot или аналогичный инструмент, и настройте сертификаты. Затем укажите их в конфигурации /etc/ldap/ldap.conf:
TLS_CACERT /etc/ssl/certs/ca-certificates.crt
2. Интеграция с другими сервисами:
LDAP можно использовать для аутентификации пользователей в таких системах, как:
SSH: настройте PAM через libpam-ldap.
Web-сервисы: интеграция с Apache, Nginx.
Почтовые серверы: например, Postfix или Dovecot.
Установив OpenLDAP и создав базовую структуру, вы сможете расширять её для любых корпоративных нужд.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍2
Как проверить существование файла в скрипте
При написании Bash-скриптов часто возникает необходимость проверить, существует ли файл (или директория), прежде чем продолжить выполнение. Давайте разберём несколько подходов с примерами.
1. Проверка существования файла. Самый простой способ проверить, существует ли файл:
2. Проверка, что это обычный файл. Если нужно убедиться, что это именно файл (а не директория или символическая ссылка):
3. Проверка существования директории. Чтобы проверить, существует ли директория:
4. Проверка прав доступа к файлу. Проверить доступ на чтение:
5. Проверка нескольких условий. Можно комбинировать проверки:
Пример: Реальный сценарий. Предположим, вы пишете скрипт для архивации файла, только если он существует.
Полезный совет: Для проверки в одном условии часто используют флаг || (или):
Проверка существования файла или директории - это базовая, но важная часть автоматизации с помощью Bash. Правильное использование этих проверок позволит вашим скриптам работать надёжно и избегать ошибок.
BashTex📱 #bash
При написании Bash-скриптов часто возникает необходимость проверить, существует ли файл (или директория), прежде чем продолжить выполнение. Давайте разберём несколько подходов с примерами.
1. Проверка существования файла. Самый простой способ проверить, существует ли файл:
if [ -e "/path/to/file" ]; then
echo "Файл существует."
else
echo "Файл не найден."
fi
2. Проверка, что это обычный файл. Если нужно убедиться, что это именно файл (а не директория или символическая ссылка):
if [ -f "/path/to/file" ]; then
echo "Это файл."
else
echo "Это не файл или его не существует."
fi
3. Проверка существования директории. Чтобы проверить, существует ли директория:
if [ -d "/path/to/directory" ]; then
echo "Директория существует."
else
echo "Директория не найдена."
fi
4. Проверка прав доступа к файлу. Проверить доступ на чтение:
if [ -r "/path/to/file" ]; then
echo "Файл доступен для чтения."
fi
Проверить доступ на запись:
bash
Копировать код
if [ -w "/path/to/file" ]; then
echo "Файл доступен для записи."
fi
Проверить доступ на выполнение:
bash
Копировать код
if [ -x "/path/to/file" ]; then
echo "Файл доступен для выполнения."
fi
5. Проверка нескольких условий. Можно комбинировать проверки:
if [ -f "/path/to/file" ] && [ -w "/path/to/file" ]; then
echo "Файл существует и доступен для записи."
else
echo "Файл не существует или недоступен для записи."
fi
Пример: Реальный сценарий. Предположим, вы пишете скрипт для архивации файла, только если он существует.
#!/bin/bash
FILE="/path/to/file"
ARCHIVE="/path/to/archive"
if [ -f "$FILE" ]; then
tar -czf "$ARCHIVE/archive.tar.gz" "$FILE"
echo "Файл заархивирован."
else
echo "Файл не найден. Архивация не выполнена."
fi
Полезный совет: Для проверки в одном условии часто используют флаг || (или):
[ -f "/path/to/file" ] || echo "Файл не найден."
Проверка существования файла или директории - это базовая, но важная часть автоматизации с помощью Bash. Правильное использование этих проверок позволит вашим скриптам работать надёжно и избегать ошибок.
BashTex
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥3