Типичный Сисадмин
1.25K subscribers
361 photos
43 videos
199 links
⚙️Информация для системного администратора
Download Telegram
Подборка шпаргалок по Linux
2👍1
Kubernetes: эффективные команды

Расшировать параметр секрета.
kubectl get secret/db -o yaml | grep DB_PASSWORD | sed 's/.*DB_PASSWORD:\s//' | base64 --decode
где db - имя секрета, DB_PASSWORD - один из параметров секрета.

Удалить все поды используя helm.
helm ls --all --short | xargs -L1 helm delete

Удалить все поды в состоянии Evicted.
kubectl get pods | grep Evicted | awk '{print $1}' | xargs kubectl delete pod

Скрипт для просмотра занятого пространства образами docker.
#!/usr/bin/env bash
for container in `kubectl get pods --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'`
do
echo -e "$container\t\t $(docker image ls
параметр секрета.
kubectl get secret/db -o yaml | grep DB_PASSWORD | se--format='{{println .Size}}')"
done


Скрипт для для установления соответствия между задеплоеными подами, нодами, где они находятся и зоной в которой располагаются.
#!/usr/bin/env bash

set -euo pipefail

PODZONES=()
for POD in $(kubectl get pods -o custom-columns=NAME:.metadata.name --no-headers)
do
NODE=$(kubectl get pod ${POD} -o=jsonpath='{.spec.nodeName}')
ZONE=$(kubectl get nodes -o json | jq -r --arg NODE "${NODE}" '.items[].metadata | {name, labels} | select(.name==$NODE) | .labels."topology.kubernetes.io/zone"')
PODZONES+=(${ZONE})
echo -e "${POD}\t${NODE}\t${ZONE}"
done

CPODS=$(kubectl get pods -o custom-columns=NAME:.metadata.name --no-headers | wc -l)
CNODES=$(kubectl get nodes -o custom-columns=NAME:.metadata.name --no-headers | wc -l)
CZONES=$(kubectl get nodes -o json | jq -r '.items[].metadata.labels."topology.kubernetes.io/zone"' | sort | uniq -c)
echo "----------ИТОГО:----------"
echo -e "Всего подов:\t${CPODS}"
echo -e "Всего нод:\t${CNODES}"
echo -e "Количество зон нод:\n${CZONES}"
echo "Количество подов в зонах:"
printf "%s\n" "${PODZONES[@]}" | sort | uniq -c
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
Понимание DHCP: Упрощение управления сетью

DHCP (Dynamic Host Configuration Protocol) — это сетевой протокол, который автоматизирует процесс назначения IP-адресов и других параметров конфигурации устройств в сети. Вместо того чтобы вручную задавать каждому устройству IP-адрес, DHCP позволяет делать это автоматически, что значительно упрощает управление сетью.

Как работает DHCP?
1. Запрос клиента (DHCP Discover): Когда устройство подключается к сети, оно отправляет широковещательное сообщение с запросом IP-адреса.
2. Ответ сервера (DHCP Offer): DHCP-сервер получает запрос и предлагает доступный IP-адрес из своего пула.
3. Запрос IP-адреса (DHCP Request): Устройство принимает предложенный адрес и отправляет запрос на его закрепление.
4. Подтверждение (DHCP Acknowledgment): Сервер подтверждает назначение адреса и отправляет дополнительные параметры, такие как маска подсети, шлюз и DNS-серверы.

Преимущества использования DHCP
- Упрощенное управление: Автоматическое распределение IP-адресов исключает вероятность ошибок, связанных с ручной конфигурацией.
- Гибкость: Легко подключать и отключать устройства без необходимости их настройки.
- Эффективное использование адресов: Сервер перераспределяет адреса, которые больше не используются.
- Масштабируемость: DHCP подходит как для небольших домашних сетей, так и для крупных корпоративных сетей.

Дополнительные функции DHCP
- Резервирование адресов: Возможность назначать фиксированные IP-адреса определенным устройствам (например, серверам или принтерам).
- Период аренды: Сервер устанавливает временные рамки использования IP-адреса, после чего клиент должен обновить его.

Заключение
DHCP значительно упрощает управление сетями, минимизируя ручную работу администратора. Этот протокол стал стандартом в большинстве современных сетей, благодаря своей надежности, гибкости и удобству.
👍4
Утилиты на PowerShell для системных администраторов

Работая на первой линии тех.поддержки, я часто сталкивался с рутиной, особенно очень хотелось минимизировать подключение к рабочему столу пользователей для сбора информации и как-то автоматизировать этот процесс, что привело меня к осваиванию языка PowerShell и написанию скриптов, которые в последствии оформились в самостоятельные программы. Некоторые из них я решил выложить на GitHub, возможно для кого-то они будут полезны.

https://habr.com/ru/articles/799463/

https://github.com/Sync1er/ChernigovEugeniyUtilities
Подборка из 4 альтернативых SSH клиентов

1. Mosh

Mosh - это замена интерактивных терминалов SSH. Он более надежен и отзывчив, особенно при работе через Wi-Fi, сотовую связь и на дальних расстояниях.
Mosh - это свободное программное обеспечение, доступное для GNU/Linux, BSD, macOS, Solaris, Android, Chrome и iOS.


2. Teleport

Teleport с открытым исходным кодом был разработан для обеспечения доступа к необходимой инфраструктуре без замедления работы. С помощью одного инструмента инженеры получают унифицированный доступ к серверам Linux и Windows, кластерам Kubernetes, базам данных и приложениям DevOps, таким как AWS Management Console, CI/CD, контроль версий и панели мониторинга во всех средах.


3. Eternal Terminal

Удаленный терминал для занятых и нетерпеливых
Eternal Terminal (ET) - это удаленная оболочка, которая автоматически переподключается, не прерывая сеанса.

4. tmux

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

Работает на OpenBSD, FreeBSD, NetBSD, Linux, macOS и Solaris.
👍3
Шпаргалка по PowerShell / Краткий справочник

https://gist.github.com/pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a
Шпаргалка по файловой системе linux
3
Шпаргалка по работе с Tmux (терминальный мультиплексор)

1. Установка

CentOS (нужен подключенный репо EPEL)
# yum install tmux
Fedora
# dnf install tmux
Ubuntu/Debian
# apt-get install tmux


2. Конфигурационные файлы

(пользователя, системный):
~/.tmux.conf
/etc/tmux.conf


До версии 2.1
set -g mouse-resize-pane on
set -g mouse-select-pane on
set -g mouse-select-window on
set -g mode-mouse on



3. Работа с Tmux

Старт
# tmux //без параметров будет создана сессия 0
# tmux new -s session1 //новая сессия session1. Название отображается снизу-слева в квадратных скобках в статус строке. Далее идет перечисление окон. Текущее окно помечается звездочкой.

Префикс (с него начинаются команды)
<C-b> (CTRL + b)

Новое окно (нажать CTRL+b, затем нажать с)
<C-b c>

Список окон
<C-b w> // переключиться курсором вверх-вниз

Переключение
<C-b n> // следующее окно
<C-b p> // предыдущее окно
<C-b 0> // переключиться на номер окна

Окна можно делить на панели (Panes)
Как в тайловых (мозаичных) оконных менеджерах.

Деление окна горизонтально
<C-b ">
либо команда
# tmux split-window -h

Деление окна вертикально
<C-b %>
либо команда
# tmux split-window -v

Переход между панелей
<C-b стрелки курсора> // либо режим мыши

Изменение размеров панелей
<C-b c-стрелки> // либо режим мыши

Закрытие окон
<C-b x> // нужно подтвердить y
либо
# exit

Отключение от сессии
<C-b d>
либо
# tmux detach

Список сессий
# tmux ls

Подключиться к работающей сессии
# tmux attach //подключение к сессии, либо к единственной, либо последней созданной
# tmux attach -t session1 // подключение к сессии session1

Выбрать сессию
<C-b s>

Завершение сессии
# tmux kill-session -t session1

Завершить все сессии
# tmux kill-server

Список поддерживаемых комманд
# tmux list-commands

Дополнительная информация
# man tmux
Шпаргалка по awk для Linux
👍2
Чем отличается команда rm от unlink?

Обе эти команды умеют удалять, но в 99% используется именно rm, потому что про unlink вы либо не слышали, либо rm с головой хватает.

Есть ошибочное мнение, что unlink предназначен для удаления лишь ссылок — команда вполне может удалять обычные файлы. А если углубиться, то весь процесс удаления в Linux, это удаление ссылок.

У unlink есть всего лишь два ключа запуска help и version. Очень ограниченный инструмент, но чем инструмент проще, тем проще его синтаксис.

# unlink /tmp/hardlink
# unlink /tmp/file


Софт очень молчаливый — после удаления, он промолчит и ничего не выведет на экран.

Команда unlink использует системную команду unlink, в то время как команда rm использует системный вызов unlinkat. Оба системных вызова практически одинаковы.

Unlink не умеет работать с wildcard и globbing шаблонами. Так же вы не сможете с помощью нее удалить каталог.

Запустим команду и пытаемся насильно удалить файл которого нет в каталоге:

rm -f test.txt

И получаем - НИЧЕГО. То есть rm -f не вернул ошибку, что файл отсутствует. А если сделать так:

unlink test.txt

получим ошибку:

unlink: cannot unlink 'test.txt': No such file or directory

То есть если нужно будет обработать результат выполнения команды rm -f, то будет непонятно, существовал ли вообще файл.

С unlink можно гибче обрабатывать эксепшены в скриптах. А еще при использовании команды unlink отсутствует проверка безопасности. Она удалит файл, защищенный от записи. Хотя современная версия rm теперь тоже так умеет.

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

chattr +i test.txt

chattr позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).

Ключ i - сделает файл неизменяемым. Чтобы снять с файла этот аттрибут, в команде которая выше, замените знак «+» на «-».
👍3
Основные команды Linux: Управление пользователями и группами

last – Показывает, какие пользователи последними входили в систему (и покидали ее), выполняя для этого поиск в файле /var/log/wtmp в обратном порядке; также показывает информацию о загрузках системы, ее остановках и изменениях ее уровней запуска
lastb – Показывает неудачные попытки входа в систему, которые записаны в файле /var/log/btmp
w – показать пользователей онлайн
whoami – имя, под которым вы залогинены.
finger user@host – показать информацию о user (без указания пользователя – выведет список пользователей, залогиненых в системе) на хосте host, утилита не чувствительна к регистру символов
write user [terminal] – начать сеанс общения с пользователем user на терминале terminal
talk user@host – чат с пользователем user на компьютере host
wall message – разместить сообщение message на всех терминалах.
mesg y/n – включение – y и выключение – n возможности принимать сообщения на консоли
su user – создание оболочки (подоболочки текущей оболочки) с правами пользователя user (без указания пользователя – вызывается оболочка root)
-, -l, –login – все 3 параметра имеют одно значение – загрузить окружение вызываемого пользователя (выполняются все стартовые сценарии и подгружаются переменные окружения вызываемого пользователя)
-с command – выполнить команду command с правами суперпользователя и “понизить” права в исходные после завершения команды.
useradd user – добавление нового регистрационного имени пользователя user в системе
-g group – задает основную группу (primary group) для нового пользователя. По умолчанию используется стандартная группа, указанная в файле /etc/default/useradd.
-d dir – доманий каталог (home directory) нового пользователя. По умолчанию используется $ HOMEDIR/user
-s shell – полный путь к программе (шеллу), используемой в качестве начального командного интерпретатора для пользователя
-m – Создает начальный каталог нового пользователя, если он еще не существует. Копирует скелетные файлы и другие каталоги из /etc/skel в домашний каталог.
👍2
kcp - это прототип сервера API Kubernetes, который не является кластером Kubernetes. Если вас интересуют API-интерфейсы, подобные Kubernetes, но для других инструментов, возможно, будет интересно посмотреть.

https://github.com/kcp-dev/kcp
Rufus: надежная утилита форматирования USB

Форматирование USB, флэш-карт и виртуальных дисков в FAT/FAT32/NTFS/UDF/exFAT/ReFS/ext2/ext3
Создание загрузочных USB-накопителей DOS, используя FreeDOS или MS-DOS (Windows 8.1 или более ранние версии)
Создание загрузочных дисков BIOS или UEFI, включая загрузочные диски UEFI NTFS
Создание загрузочных дисков из загрузочных ISO (Windows, Linux и т.д.)
Создание загрузочных дисков из загрузочных образов дисков, включая сжатые.
Создание установочных дисков Windows 11 для ПК, не оснащенных TPM или Secure Boot
Создание дисков Windows To Go
Создание постоянных разделов Linux
Создание образов дисков VHD/DD
Вычисление контрольных сумм MD5, SHA-1, SHA-256 и SHA-512 выбранного образа
Улучшение процесса установки Windows путем автоматической настройки параметров OOBE (локальная учетная запись, параметры конфиденциальности и т.д.)
Выполняйте проверку плохих блоков, включая обнаружение "поддельных" флеш-накопителей
Загрузка официальных розничных ISO-образов Microsoft Windows 7, Windows 8, Windows 10 или Windows 11
Загружать ISO-файлы UEFI Shell
Современный и привычный пользовательский интерфейс, встроенная поддержка 38 языков
Малая занимаемая площадь. Не требует установки.
Портативный. Совместимость с Secure Boot.
100% свободное программное обеспечение (GPL v3)

https://github.com/pbatard/rufus
👍1🔥1