Типичный Сисадмин
1.25K subscribers
363 photos
43 videos
201 links
⚙️Информация для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
Canarytokens

Эти токены используются для предупреждения о том, что кто-то смотрит то, что ему не следует. Позволяет встраивать ссылки (HTTP или DNS) практически во все, что угодно.

https://github.com/thinkst/canarytokens
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Linux Kernel Manager and Activity Monitor

Утилита отображает информацию о текущем состоянии ядра, выводит данные о загруженных в ядро модулях и позволяет работать с ними.

https://github.com/orhun/kmon
👍2
Профилировщик памяти для Linux

Heaptrack отслеживает все выделения памяти и аннотирует эти события с помощью трассировки стека. Специальные инструменты анализа позволяют интерпретировать профиль памяти кучи, чтобы:

⚫️найти «горячие точки», которые необходимо оптимизировать, чтобы уменьшить объем памяти приложения
⚫️найти утечки памяти, т. е. места, где выделяется память, которая никогда не деаллоцируется
⚫️найти «горячие точки» выделения, то есть места в коде, которые вызывают большое количество вызовов выделения памяти
⚫️находить временные выделения, то есть выделения, за которыми непосредственно следует их деаллокация

https://github.com/KDE/heaptrack
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Блокировка Docker Hub для России. Без паники разбираемся как работать дальше

Главной новостью этой недели стала блокировка пользователей из России ресурсом Docker Hub. Она осуществляется по Geo IP.

Ирония в том, что у самого докера есть инструменты, чтобы обойти эту блокировку. Используем докер, чтобы обойти блокировку докера и дальше использовать докер.

В статье три проверенных мною способа, как получить доступ к ресурсу.

https://habr.com/ru/articles/818565/
1
Cамые нужные команд SSH

Запускай команды быстро
Чтобы выполнить всего одну удаленную команду, совсем не обязательно подключаться к SSH, вводить команду, а затем отключаться. Можно сделать это сразу. Например, так можно посмотреть заполненность ФС удаленной машины:
$ ssh user@host df -h
А так — перезагрузить ее:
$ ssh user@host sudo reboot

Составляй списки команд и запускай их разом
Если у тебя есть целый список команд, которые следует выполнить, их можно записать в файл и скормить этот файл SSH:
$ ssh user@host "`cat file.txt`"

Редактируй удаленные файлы локальным редактором
Чтобы отредактировать файл на удаленной машине, не требуется заходить на нее и использовать консольный редактор. На самом деле файл можно открыть в твоем любимом текстовом редакторе на локальной машине (gvim заменяем на свой редактор):
$ gvim scp://user@host//путь/к/файлу

Копируй содержимое удаленного файла в буфер обмена
Если необходимо скопировать содержимое удаленного файла или вывод команды в буфер обмена, не обязательно выводить его на экран или открывать в текстовом редакторе и копировать вручную. Можно использовать следующую команду:
$ ssh user@host cat /путь/к/файлу | xclip
А так можно скопировать вывод команды:
$ ssh user@host uname -a | xclip

Сравнивай удаленный и локальный файл без копирования
Похожий прием можно использовать для сравнения двух файлов:
$ ssh user@host cat /путь/к/удаленному/файлу | diff /путь/к/лoкальному/файлу -

Работай с удаленными файлами с помощью локального файлового менеджера
Не всегда удобно работать с большим количеством файлов с помощью консольных команд или mc, запущенного на удаленной машине. Но всегда можно подключить любой каталог удаленной машины как сетевой диск. Для этого достаточно установить sshfs:
$ sudo apt-get install sshfs
Создать каталог для подключения «сетевого диска»:
$ mkdir remote_files
И подключить его:
$ sshfs user@host:/home/user ~/remote_files/
Теперь все файлы удаленного каталога /home/user будут видны в каталоге ~/remote_files/ и с ними можно работать, как с обычными.

Копируй ключи быстро
Хоть и копирование публичного ключа на удаленный сервер — задача простая, но она требует выполнения нескольких действий вручную. Если тебя это напpягает, скопировать ключ можно в автоматическом режиме:
$ ssh-copy-id user@host
При этом не обязательно копировать основной ключ, с помощью флага -i можно указать любой другой:
$ ssh-copy-id -i ~/my_key.pub user@host

Создай постоянное соединение с машиной
Если в течение дня ты часто подключаешься к одной машине, в том числе на несколько минут или секунд (чтобы просто запустить одну команду, например), есть смысл создать с ней постоянное соединение. Твой комп будет держать соединение открытым и использовать его для каждого подключения к машине. Это намного быстрее и экономичнее с точки зрения трафика и нагрузки на процессор.
Добавь следующие строки в ~/.ssh/config:
Host host
ControlPath ~/.ssh/master-%r@%h:%p
ControlMaster no

А затем создай соединение:
$ ssh -MNf user@host
1
Квоты в Kubernetes: очевидные, менее очевидные и совсем не очевидные

Разберемся как работают квоты в Kubernetes. Там есть немало граблей. Чем квоты хороши, что у них под капотом, в каких задачах используются и почему нужны даже в среде single-tenant?

https://habr.com/ru/companies/oleg-bunin/articles/790112/
System Design 101

О сложных системах простыми словами

В шпаргалке на высоком уровне рассматриваются такие вещи, как протоколы коммуникации, DevOps, CI/CD, архитектурные паттерны, базы данных, кэширование, микросервисы (и монолиты), платежные системы, Git, облачные сервисы etc. Особую ценность представляют диаграммы — рекомендую уделить им пристальное внимание.

https://habr.com/ru/articles/770564/
2
Создаем логические тома LVM на Linux

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

Это краткое руководство по внедрению LVM на вашем linux-сервере или рабочей станции.

https://telegra.ph/Sozdaem-logicheskie-toma-LVM-na-Linux-10-09
👍2
Как удалить файл с именем -rf?

Удаление файла с именем -rf в UNIX/Linux может быть немного сложным, потому что -rf может быть воспринято как опция команды rm. Чтобы удалить файл с таким именем, можно использовать один из следующих способов:

1. Использовать путь к файлу
Укажите полный или относительный путь к файлу, используя ./ перед именем файла:

rm ./-rf

Это укажет командной строке, что -rf — это имя файла, а не параметр.

2. Использовать параметр `--`
Параметр -- сообщает команде rm, что все последующие аргументы следует трактовать как имена файлов, даже если они начинаются с -.

rm -- -rf


Оба этих метода помогут удалить файл с именем -rf безопасно.
👍2
Шпаргалка по ip

Утилита ip — это мощный инструмент для управления сетевыми интерфейсами и маршрутизацией в Linux, который заменяет старую команду ifconfig.

🟢Основные команды

1. Посмотреть информацию об интерфейсах:

ip addr

Отображает информацию обо всех интерфейсах, включая IP-адреса.

2. Посмотреть информацию только об одном интерфейсе:

ip addr show eth0

Показывает информацию только для интерфейса eth0.

3. Активировать интерфейс:

ip link set eth0 up

Включает интерфейс eth0.

4. Отключить интерфейс:

ip link set eth0 down

Отключает интерфейс eth0.

🟢Конфигурация IP-адресов

5. Назначить IP-адрес интерфейсу:

ip addr add 192.168.1.10/24 dev eth0

Назначает IP-адрес 192.168.1.10 с маской 255.255.255.0 (или /24`) интерфейсу `eth0.

6. Удалить IP-адрес с интерфейса:

ip addr del 192.168.1.10/24 dev eth0

Удаляет IP-адрес 192.168.1.10 с интерфейса eth0.

🟢Маршруты и таблицы маршрутизации

7. Просмотр маршрутов:

ip route

Показывает текущие маршруты в системе.

8. Добавить маршрут:

ip route add 192.168.2.0/24 via 192.168.1.1

Добавляет маршрут к сети 192.168.2.0/24 через шлюз 192.168.1.1.

9. Удалить маршрут:

ip route del 192.168.2.0/24

Удаляет маршрут к сети 192.168.2.0/24.

🟢Прочие функции

10. Посмотреть статистику интерфейсов:

ip -s link

Показывает статистику по интерфейсам (переданные и полученные пакеты, ошибки и т.д.).

11. Назначить MAC-адрес интерфейсу:

ip link set dev eth0 address 00:11:22:33:44:55

Устанавливает MAC-адрес для интерфейса eth0.

12. Показать состояние интерфейсов:

ip link show

Отображает состояние всех интерфейсов, включая их статус (up/down).

13. Показать статистику маршрутизации:

ip -s route

Показывает статистику по маршрутам, включая количество использованных пакетов.


- ip заменяет старые команды, такие как ifconfig, route, и netstat, предоставляя более гибкий и мощный интерфейс для управления сетевыми настройками.
- Использование ip вместо ifconfig рекомендуется в большинстве современных Linux-дистрибутивов, так как это более современная и функциональная утилита.

Дополнительную информацию можно получить с помощью команды:

man ip
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Бэкап и очистка журналов Event Log в Windows, размер которых превышает определённое значение

Такой скрипт проверит размер файлов журнала (Event Log) и если обнаружит, что размер одного из них превышает указанное значение, то создаст его резервную копию, а затем очистит журнал.



strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate, (Backup, Security)}!\\" _
& strComputer & "\root\cimv2")

Set colLogFiles = objWMIService.ExecQuery _
("Select * from Win32_NTEventLogFile")

For Each objLogfile in colLogFiles
If objLogFile.FileSize > 100000 Then
strBackupLog = objLogFile.BackupEventLog _
("c:\scripts\" & objLogFile.LogFileName & ".evt")
objLogFile.ClearEventLog()
End If
Next
2
Что такое inode в Linux?

Индексный дескриптор в файловой системе, который хранит метаданные о файлах, за исключением имени файла. В дескрипторе хранится: длина файла в байтах, id устройства с файлом, id пользователя владельца файла, id группы файла, режим файла (права доступа), timestamp последнего изменения файла, счётчик хардлинков, указатели на блоки файла.
👍3
Haskell Dockerfile Linter

Интеллектуальный распаковщик Dockerfile, помогающий создавать лучшие образы Docker. Линтер разбирает Docker-файл на AST и выполняет правила поверх AST. Он опирается на поддержку ShellCheck для проверки Bash-кода внутри инструкций RUN.

https://github.com/hadolint/hadolint
👍2
Как защитить сервер Linux

Ограничьте, кто может использовать 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
👍32
Используем библиотеку 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
👍1