Haskell Dockerfile Linter
Интеллектуальный распаковщик Dockerfile, помогающий создавать лучшие образы Docker. Линтер разбирает Docker-файл на AST и выполняет правила поверх AST. Он опирается на поддержку ShellCheck для проверки Bash-кода внутри инструкций RUN.
https://github.com/hadolint/hadolint
Интеллектуальный распаковщик Dockerfile, помогающий создавать лучшие образы Docker. Линтер разбирает Docker-файл на AST и выполняет правила поверх AST. Он опирается на поддержку ShellCheck для проверки Bash-кода внутри инструкций RUN.
https://github.com/hadolint/hadolint
👍2
Как защитить сервер Linux
Ограничьте, кто может использовать sudo
Почему
sudo позволяет учетным записям выполнять команды от имени других учетных записей, включая root. Мы хотим убедиться, что только нужные нам учетные записи могут использовать sudo.
Цели
привилегии sudo ограничены теми, кто входит в указанную нами группу.
Примечания
Возможно, ваша сборка уже сделала это, или у вас уже есть специальная группа, предназначенная для этой цели, поэтому сначала проверьте.
Debian создаёт группу sudo. Чтобы просмотреть пользователей, которые входят в эту группу (таким образом, имеют привилегии sudo):
Шаги
1 - Создайте группу:
2 - Добавьте учетную запись(и) в группу:
Вам нужно будет сделать это для каждой учетной записи на вашем сервере, которой нужны привилегии sudo.
3 - Создайте резервную копию файла конфигурации sudo /etc/sudoers:
4 - Отредактируйте файл конфигурации
5 - Скажите sudo, чтобы только пользователи из группы sudousers могли использовать sudo, добавив эту строку, если ее еще нет:
Ограничьте, кто может использовать sudo
Почему
sudo позволяет учетным записям выполнять команды от имени других учетных записей, включая root. Мы хотим убедиться, что только нужные нам учетные записи могут использовать sudo.
Цели
привилегии sudo ограничены теми, кто входит в указанную нами группу.
Примечания
Возможно, ваша сборка уже сделала это, или у вас уже есть специальная группа, предназначенная для этой цели, поэтому сначала проверьте.
Debian создаёт группу sudo. Чтобы просмотреть пользователей, которые входят в эту группу (таким образом, имеют привилегии sudo):
cat /etc/group | grep "sudo"
Шаги
1 - Создайте группу:
sudo groupadd sudousers
2 - Добавьте учетную запись(и) в группу:
sudo usermod -a -G sudousers user1
sudo usermod -a -G sudousers user2
sudo usermod -a -G sudousers ...
Вам нужно будет сделать это для каждой учетной записи на вашем сервере, которой нужны привилегии sudo.
3 - Создайте резервную копию файла конфигурации sudo /etc/sudoers:
sudo cp --archive /etc/sudoers /etc/sudoers-COPY-$(date +"%Y%m%d%H%M%S")
4 - Отредактируйте файл конфигурации
sudo /etc/sudoers:
sudo visudo
5 - Скажите sudo, чтобы только пользователи из группы sudousers могли использовать sudo, добавив эту строку, если ее еще нет:
%sudousers ALL=(ALL:ALL) ALL
👍3❤2
Используем библиотеку
psutil
для Python, что бы получить исчерпывающую информацию о состоянии CPU и системы в целом.
import psutil
import time
from tabulate import tabulate
def get_cpu_usage():
return psutil.cpu_percent(interval=1)
def get_memory_usage():
memory = psutil.virtual_memory()
return {
'Всего': f'{memory.total / (1024**3):.2f} ГБ',
'Используется': f'{memory.used / (1024**3):.2f} ГБ',
'Свободно': f'{memory.available / (1024**3):.2f} ГБ',
'Процент использования': f'{memory.percent}%'
}
def get_top_processes(n=10):
processes = []
for proc in sorted(psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']),
key=lambda x: x.info['cpu_percent'],
reverse=True)[:n]:
try:
processes.append([
proc.info['pid'],
proc.info['name'],
f"{proc.info['cpu_percent']:.2f}%",
f"{proc.info['memory_percent']:.2f}%"
])
except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
pass
return processes
def main():
print("=== Мониторинг системы ===")
print(f"\nЗагрузка CPU: {get_cpu_usage()}%")
print("\nИспользование памяти:")
for key, value in get_memory_usage().items():
print(f"{key}: {value}")
print("\nТоп процессов по использованию CPU:")
top_processes = get_top_processes()
print(tabulate(top_processes,
headers=['PID', 'Название', 'CPU %', 'Память %'],
tablefmt='grid'))
if __name__ == '__main__':
main()
👍2
Autobase
Это инструмент, разработанный для автоматизации развёртывания и управления PostgreSQL-кластерами с использованием Ansible. Он поддерживает широкий набор функций, включая настройку репликации, автоматизацию резервного копирования с помощью инструментов, таких как pgBackRest и WAL-G, мониторинг состояния кластеров, а также настройку высокодоступной инфраструктуры (HA).
Проект упрощает настройку PostgreSQL и снижает вероятность ошибок, обеспечивая удобные плейбуки для типичных задач. Его можно использовать как для новых установок, так и для работы с существующими конфигурациями.
https://github.com/vitabaks/autobase
Это инструмент, разработанный для автоматизации развёртывания и управления PostgreSQL-кластерами с использованием Ansible. Он поддерживает широкий набор функций, включая настройку репликации, автоматизацию резервного копирования с помощью инструментов, таких как pgBackRest и WAL-G, мониторинг состояния кластеров, а также настройку высокодоступной инфраструктуры (HA).
Проект упрощает настройку PostgreSQL и снижает вероятность ошибок, обеспечивая удобные плейбуки для типичных задач. Его можно использовать как для новых установок, так и для работы с существующими конфигурациями.
https://github.com/vitabaks/autobase
👍1
YouPlot — это утилита командной строки для визуализации данных. Она поддерживает построение графиков без зависимости от Python или сложных библиотек. Инструмент прост в использовании, легковесен и подходит для быстрого создания графиков прямо из терминала. Поддерживает разные типы диаграмм, включая линейные, столбчатые и точечные.
https://github.com/red-data-tools/YouPlot
https://github.com/red-data-tools/YouPlot
Мониторинг и оптимизация дискового пространства в Linux
Мониторинг использования:
• Проверить свободное место:
• Размер директории:
• Топ-10 крупных папок:
• Найти большие файлы (>1ГБ):
Очистка места:
• Удалить старые логи:
• Очистить кэш:
• Удалить временные файлы:
• Удалить старые ядра:
Автоматизация:
• Добавить в crontab задачу для регулярной очистки логов:
Оптимизация:
• Перенос крупных папок:
• Сжатие логов:
• Удаление дублированных файлов:
Полезные утилиты:
• ncdu — анализ диска:
• iotop — мониторинг операций с файлами:
• fslint — поиск мусорных файлов:
Мониторинг в реальном времени:
• Свободное место:
• Загрузка диска процессами:
• Отслеживание изменений в директории:
Мониторинг использования:
• Проверить свободное место:
df -h
• Размер директории:
du -sh /путь/к/директории
• Топ-10 крупных папок:
du -ah /путь | sort -rh | head -n 10
• Найти большие файлы (>1ГБ):
find / -type f -size +1G 2>/dev/null
Очистка места:
• Удалить старые логи:
find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;
• Очистить кэш:
sudo apt-get clean
sudo dnf clean all
• Удалить временные файлы:
sudo rm -rf /tmp/* /var/tmp/*
• Удалить старые ядра:
sudo apt-get autoremove --purge
Автоматизация:
• Добавить в crontab задачу для регулярной очистки логов:
0 3 * * 7 find /var/log -type f -name "*.log" -mtime +30 -exec rm -f {} \;
Оптимизация:
• Перенос крупных папок:
mv /большая/папка /mnt/новый_диск
ln -s /mnt/новый_диск /большая/папка
• Сжатие логов:
gzip /var/log/*.log
• Удаление дублированных файлов:
fdupes -r /путь
Полезные утилиты:
• ncdu — анализ диска:
sudo apt install ncdu && ncdu /
• iotop — мониторинг операций с файлами:
iotop
• fslint — поиск мусорных файлов:
sudo apt install fslint
Мониторинг в реальном времени:
• Свободное место:
df -h
• Загрузка диска процессами:
iotop
• Отслеживание изменений в директории:
inotifywait -m /путь
👍2
Шпаргалка по скриптам Bash
Основы написания скриптов на Bash
Условные операторы
Циклы Bash
Арифметические операторы
Арифметические условные операторы
Операторы сравнения строк
Основы написания скриптов на Bash
Условные операторы
Циклы Bash
Арифметические операторы
Арифметические условные операторы
Операторы сравнения строк
👍3
This media is not supported in your browser
VIEW IN TELEGRAM
Walk — это инструмент на Go, который позволяет рекурсивно обходить директории и выполнять команды для каждого найденного файла или папки.
Ключевые особенности:
- Простая команда для выполнения скриптов или операций над файлами.
- Гибкость и высокая скорость работы.
- Подходит для автоматизации задач, связанных с обработкой файлов.
https://github.com/antonmedv/walk
Ключевые особенности:
- Простая команда для выполнения скриптов или операций над файлами.
- Гибкость и высокая скорость работы.
- Подходит для автоматизации задач, связанных с обработкой файлов.
https://github.com/antonmedv/walk
👍1
Основные команды Linux: Управление пользователями и группами
аналогичны всем вышеуказанным для useradd
-b
– Базовый каталог по умолчанию, в котором создаются домашние каталоги пользователей. Обычно это / home, а пользовательские каталоги — /home/$ USER.-c “text text”
– Текстовая строка для описания id, содержащая, например, полное имя пользователя.-e YYYY-MM_DD
– Дата, когда учетная запись потеряет силу или будет заблокирована.-G gr1,gr2,gr3
– Список дополнительных групп, которым принадлежит пользователь.-o
– Позволяет создать пользователя с неуникальным id.-u
– Неотрицательное цифровое значение id пользователя, которое должно быть уникальным, если не определено иначе опцией -o. По умолчанию используется самое маленькое значение, не меньше, чем UID_MIN, причем больше, чем id любого из существующих пользователей.usermod user
– изменение настроек пользователя с именем user в системеаналогичны всем вышеуказанным для useradd
-L
– блокировка учетной записи-U
– разблокировка учетной записиuserdel user
– удаляет пользователя user из системы-r
– удаление домашнего каталога пользователяusers
– Выдаются имена пользователей, которые в текущий момент зарегистрированы в системеgroupadd group
– добавление (создание) новой группы group в системе-f
– Выйти со статусом успешного выполнения, если группа уже существует. Удобна при написании скриптов, когда нет необходимости проверять, существует ли группа, прежде чем пытаться ее создавать.-g
– Задать id группы вручную.-o
– Разрешить группу с неуникальным id.groupmod group
– изменение информации о группе group в системе-n group2
задание нового имени group2groupdel group
– удаление группы group из системыpasswd user
– изменяет/устанавливает пароль пользователя user-l
– блокирование учетной записи-d
– удаление пароля учетной записи (блокирование)-f
– установка даты прекращения полномочий-n
– минимальное время действия пароля в днях-x
– максимальное время действие пароля в днях-w
– число дней появления предупреждения об окончании действия пароля-i
– число дней, после которых пароль потеряет силу и учетка заблокируется.-S
– вывод сообщения о статусе пользователяgpasswd group
– изменяет/устанавливает пароль группы group (Наличие пароля группы позволяет пользователям временно войти в группу при помощи команды newgrp, если им известен пароль группы.)id who
– просмотр информации о пользователе/группе who (принадлежность к группам, UID, GID)ulimit
– ограничение пользовательских ресурсов:-a
– отображение всех возможных ресурсов-f
– ограничение размера файла-t
– процессорное время