Админские угодья
1.46K subscribers
458 photos
40 videos
220 links
Всё для системного администратора

По всем вопросам : @Sofiia_artamonova
Download Telegram
This media is not supported in your browser
VIEW IN TELEGRAM
Yoink.vim

Плагин Vim, который поддерживает историю yank для переключения между ними при вставке.

https://github.com/svermeulen/vim-yoink
Создание уведомлений и напоминаний на рабочем столе из Linux терминала

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

https://letsdebug.it/post/30-linux-desktop-notifications/
1
Libtree

Утилита, позволяющая получить список разделяемых библиотек (shared libraries) в виде дерева, либо в виде путей до этих библиотек в системе.


1. Скачиваем libtree:

$ wget https://github.com/haampie/libtree/releases/download/v3.0.1/libtree_x86_64 -O libtree
$ chmod +x libtree


2. Проверяем нужный нам файл:

$ ./libtree /bin/nano
/bin/nano
├── libmagic.so.1 [default path]
│ └── libz.so.1 [default path]
├── libtinfo.so.6 [default path]
└── libncursesw.so.6 [default path]
└── libtinfo.so.6 [default path]


При необходимости углубиться и получить зависимости для отображаемых библиотек просто добавляем -v, -vv или -vvv соответственно.

$ ./libtree -vvv /bin/nano
/bin/nano
├── libmagic.so.1 [default path]
│ ├── libz.so.1 [default path]
│ │ └── libc.so.6 [default path]
│ │ └── ld-linux-x86-64.so.2 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
├── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
├── libtinfo.so.6 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
└── libncursesw.so.6 [default path]
├── libtinfo.so.6 [default path]
│ └── libc.so.6 [default path]
│ └── ld-linux-x86-64.so.2 [default path]
└── libc.so.6 [default path]
└── ld-linux-x86-64.so.2 [default path]


Отобразить полный путь до файла на сервере можно с помощью опции -p:

$ ./libtree -p -vvv /bin/ping
/bin/ping
├── /lib64/libcap.so.2 [default path]
│ └── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
├── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
└── /lib64/libidn2.so.0 [default path]
├── /lib64/libunistring.so.2 [default path]
│ └── /lib64/libc.so.6 [default path]
│ └── /lib64/ld-linux-x86-64.so.2 [default path]
└── /lib64/libc.so.6 [default path]
└── /lib64/ld-linux-x86-64.so.2 [default path]


По умолчанию, информация о некоторых библиотеках не выводится в libtree. Подробнее об этом в выводе команды:

$ ./libtree --help


https://github.com/haampie/libtree
1
Как отлаживать bash-script-ы по шагам

Мне всегда хотелось иметь возможность отлаживать bash-scripts так же, как и любой другой код, т.е. по шагам, и bash такую возможность предусмотрел, но о ней не все знают. Несмотря на довольно большой опыт использования Linux, я дошёл до неё только недавно.

Волшебная строчка, которую нужно добавить после #!/bin/bash, чтоб скрипт можно было отлаживать по шагам

#!/bin/bash

trap 'echo "# $BASH_COMMAND";read' DEBUG

echo line1
echo line2

echo line3



Процесс отладки
Запускаем скрипт, перед выполнением каждой команды выводится то, что будет исполняться, затем интерпретатор начинает ожидать нажатия клавиши <ENTER>.

Если понимаем, что что-то пошло не так, нажимаем Ctrl+C и выходим из отладки.

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

команда read, которая умеет ожидать ввода чего-нибудь с клавиатуры (в данном случае нам нужно только либо ENTER либо Ctrl+C

переменная окружения $BASH_COMMAND, валидная внутри обработчика команды trap.

# Online Bash Shell.
# Code, Compile, Run and Debug Bash script online.
# Write your code in this editor and press "Run" button to execute it.

trap 'echo "# $BASH_COMMAND";read' DEBUG

echo line1
echo line2

echo line3

echo "Hello World";
👍31
Mikrotik Manual:System/Backup

Функция резервного копирования в RouterOS позволяет сохранить текущую конфигурацию вашего устройства, которую затем можно восстановить на том же или другом устройстве (с тем же названием/номером модели). Это очень удобно, так как позволяет легко восстановить конфигурацию устройства или повторно применить ту же конфигурацию на резервном устройстве. Файл резервного копирования системы также содержит MAC-адреса устройства, которые также восстанавливаются при загрузке файла резервного копирования.

❗️Предупреждение: если на маршрутизаторе установлены The Dude и user-manager, то системная резервная копия не будет содержать конфигурацию этих сервисов, поэтому необходимо дополнительно позаботиться о сохранении их конфигурации. Используйте предоставленные инструменты для сохранения/экспорта конфигурации, если хотите её сохранить.

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


Сохранение резервной копии

Sub-menu: /system backup save

dont-encrypt (yes | no; Default: no) Отключить шифрование файла резервной копии. Обратите внимание, что начиная с версии RouterOS v6.43, без указанного пароля файл резервной копии не будет зашифрован.

encryption (aes-sha256 | rc4; Default: aes-sha256) Алгоритм шифрования, используемый для шифрования файла резервной копии. Обратите внимание, что RC4 не считается безопасным методом шифрования и доступен только для обеспечения совместимости со старыми версиями RouterOS.

name (string; Default: [identity]-[date]-[time].backup) Имя файла для резервной копии.

password (string; Default: ) Пароль для зашифрованного файла резервной копии. Обратите внимание, что начиная с версии RouterOS v6.43, без указанного пароля файл резервной копии не будет зашифрован.



❗️Предупреждение: если пароль не указан в версиях RouterOS, предшествующих v6.43, то файл резервной копии будет зашифрован паролем текущего пользователя, за исключением случаев, когда используется свойство dont-encrypted или пароль текущего пользователя пуст.

Файл резервной копии будет доступен в меню /file и его можно скачать с помощью FTP или через Winbox.


Загрузка резервной копии

Sub-menu: /system backup load

name (string; Default: ) Имя файла резервной копии.

password (string; Default: ) Пароль для зашифрованного файла резервной копии.


Пример

Чтобы сохранить конфигурацию маршрутизатора в файле test, введите пароль:


[admin@MikroTik] > /system backup save name=test password=<YOUR_PASSWORD>
Configuration backup saved
[admin@MikroTik] > /system backup


Чтобы просмотреть файлы, хранящиеся на маршрутизаторе:


[admin@MikroTik] > /file print
# NAME TYPE SIZE CREATION-TIME
0 test.backup backup 12567 sep/08/2018 21:07:50
[admin@MikroTik] >


Чтобы загрузить сохраненный файл резервной копии, выполните тест:


[admin@MikroTik] > /system backup load name=test
password: <YOUR_PASSWORD>
Restore and reboot? [y/N]:
y
Restoring system configuration
System configuration restored, rebooting now


Облачное резервное копирование
Начиная с версии RouterOS v6.44, можно безопасно хранить файл резервной копии вашего устройства на облачных серверах MikroTik.
👍31
Копируем структуру директорий в Linux

В этой статье мы расскажем как в две команды скопировать структуру директорий без файлов через командрую строку Linux.

Сначала необходимо перейти в директорию, где находятся нужная структура
# cd /dir1

Затем выполняем команду, которая находит директории и сохраняет пути к ни в файл
# find . -type d > dirs.txt

Теперь необходимо перенести этот файл в директорию, где мы хотим воссоздать структуру
# mv ./dirs.txt /dir2

Переходим туда
# cd /dir2

И используя xargs читаем из файла пути и создаем по ним структуру директорий
# xargs mkdir -p < dirs.txt
2
Команда curl. Синтаксис. Примеры использования

Сurl – утилита командной строки для скачивания и загрузки данных. Она выросла из проекта шведского программиста Даниэля Стенберга. Изначально в середине 90-х, на заре развития Интернета, он разрабатывал бота, который должен был загружать с веб-страницы курсы валют и сообщать пользователям IRC эквивалент шведских крон в долларах США. Со временем проект развивался, появлялась поддержка различных протоколов и новые функции. Теперь curl используется для передачи любых данных и ряда других полезных задач. Рассмотрим основные моменты работы с этим инструментом.

https://telegra.ph/Komanda-curl-Sintaksis-Primery-ispolzovaniya-09-26
👩‍💻 Шпаргалка по PowerShell / Краткий справочник

https://gist.github.com/pcgeek86/336e08d1a09e3dd1a8f0a30a9fe61c8a
Please open Telegram to view this post
VIEW IN TELEGRAM
2
Изменение порта для подключения по SSH

Чтобы изменить порт для подключения по SSH необходимо отредактировать файл конфигурации SSH демона. Откроем данный файл текстовым редактором:
vim /etc/ssh/sshd_config
Найдем строку Port 22 и изменим её, указав новый порт для подключения. Например Port 25022.

Выходим, сохраняем файл и перезагружаем SSH следующей командой:
service sshd restart

После перезапуска SSH, он станет доступен по новому порту, а текущая сессия на старом останется активной. Поэтому не отключаясь для проверки попробуем подключится по новому порту - если не пускает, то возможно в системе работает фаервол и нужно в нем разрешить новый порт, например в iptables это делается так (где 25022 наш новый порт):
iptables -A INPUT -p tcp --dport 25022 -j ACCEPT

Можно разрешить средствами iptables подключение к SSH только с указанного диапазона IP адресов:
iptables -A INPUT -d 192.168.0.0/24 -p tcp --dport 25022 -j ACCEPT

где 192.168.0.0/24 - IP адрес сети и маска сети, с которых разрешено подключение по SSH. Далее проверяем подключение по SSH на новом порту ssh <user>@<ip> -p <port> - если подключение выполняется, то можем удалить правило iptables подключения по SSH по старому порту:
iptables -D INPUT -p tcp --dport 22 -j ACCEPT

Посмотреть в системе на каком порту и на каких сетевых интерфейсах работает SSH можно следующей командой:
netstat -tulpan | grep ssh
👍3
Общие сетевые протоколы
👍71
Определение прошивки и версии драйвера устройств в ESXi

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

https://telegra.ph/Opredelenie-proshivki-i-versii-drajvera-ustrojstv-v-ESXi-07-03
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
jless — CLI-просмотрщик JSON с подсветкой синтаксиса 🔧

https://jless.io/
Автоматизация AWS SSO с помощью Terraform

Использование Terraform для автоматизации установки и настройки ресурсов SSO, упрощения управления пользователями и повышения уровня безопасности.

https://medium.com/cloud-native-daily/automate-aws-sso-using-terraform-2f219a45c16f
2
Работа с архивами

Создать .tar.gz:
tar -czvf file.tar.gz /full/path — создать .tar.gz (архив)
tar -cjvf file.tar.bz2 /full/path — создать .tar.bz2 (архив)

Распаковать .tar:
tar -xvf file.tar.gz

Распаковать gz:
gunzip yourfile.gz

Распаковать многотомный архив:
7za x arch.7z.001

Получить листинг файлов в архиве:
tar -tf <path_to_tarfile>

Извлечь конкретный файл из архива:
tar -xf <path_to_tarfile> [<file_1_in_archive> <file_2_in_archive> ..]

Скопировать файл на сервер:
scp -P 12322 file.tar [email protected]:/home/user
3
🔥 Современный процесс загрузки Linux 🔥

Power On — Включение компьютера

1. Инициализация BIOS/UEFI
При включении компьютера загружается прошивка BIOS или UEFI из энергонезависимой памяти (NVRAM). Она отвечает за инициализацию оборудования, выполнение самотестирования (POST) и запуск процесса загрузки.

2. Поиск оборудования
BIOS/UEFI проверяет подключенные компоненты системы, такие как процессор, оперативная память, дисковые накопители и периферийные устройства.

3. Выбор загрузочного устройства (HDD, USB, PXE…)
После обнаружения оборудования BIOS/UEFI позволяет выбрать устройство, с которого будет загружена операционная система. Это может быть локальный диск, сеть или другой носитель.

4. Определение EFI-раздела (ESP)
Если используется UEFI, система определяет EFI System Partition (ESP) на загрузочном устройстве. Этот раздел содержит загрузочные файлы и другие важные данные для загрузки ОС.

5. Загрузка загрузчика (например, GRUB2)
BIOS/UEFI передает управление загрузчику, такому как GRUB (Grand Unified Bootloader). GRUB предоставляет меню выбора ОС или автоматически загружает установленный по умолчанию Linux.

6. Определение ядра Linux
GRUB или другой загрузчик выбирает ядро Linux, основываясь на конфигурационных файлах и версиях ядра.

7. Загрузка выбранного ядра
Загрузчик загружает выбранное ядро Linux в оперативную память. Ядро – это центральный компонент ОС, отвечающий за инициализацию оборудования и управление ресурсами системы.

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

9. Запуск Init/systemd (PID 1)
Ядро запускает инициализационную систему (init) или systemd, которая становится первым процессом в системе (PID 1). В современных дистрибутивах по умолчанию используется systemd, который управляет службами и процессами системы.

10. Выполнение стартовых скриптов
Init/systemd выполняет стартовые скрипты и инициализирует системные службы. Эти скрипты настраивают сеть, подключают файловые системы и выполняют другие важные задачи.

11. Готовая к работе система.
После завершения всех этапов загрузки система полностью загружена и готова к использованию. Вы можете войти в систему и запускать приложения, работать с файлами и выполнять другие задачи.
👍1
Шпаргалка по Tmux: установка, настройка, работа

Tmux (ти-макс) — это менеджер терминалов, который позволяет работать с несколькими сессиями в одном окне. То есть вместо нескольких открытых окон терминала — вы используете одно, которое можно делить на несколько окон.

Установка и настройка Tmux

Устанавливается Tmux из стандартных репозиториев Linux:
apt-get install tmux

После установки рекомендуем сразу отредактировать конфигурационный файл ти-макса (/etc/tmux.conf) и внести следующие изменения:
set -g mouse on

Эта строчка кода позволит свободно перемещать границы разделения окон с помощью курсора мышки.


Работа с Tmux

Для работы с ти-миксом используется широкий набор горячих клавиш, состоящих из базового сочетания Ctrl + b и отдельных целевых клавиш (n,p,w,b и т.д.).

Работа с сессиями в Tmux
Для создания рабочей сессии без идентификатора — достаточно ввести tmux в терминале. Будет создана сессия 0:

Идентификатор сессии отображается внизу слева в квадратных скобках. Для создания именной сессии достаточно ввести следующую команду:
tmux new -s название сессии

Поскольку ти-макс завершает соединение с сохранением состояния сессии, правильным способом возобновить работу ти-макса будет его запуск командой:
tmux attach || tmux new

Команда запускает проверку уже созданных сессий и если активных подключений нет — создается новое подключение.
Просмотреть список созданных сессий можно командой:
tmux ls

Команда вернёт список следующего вида:
0: 1 windows (created Mon Aug 30 13:02:31 2021) (attached)

Если в списке одна сессия, то командой tmux attach она будет автоматически восстановлена, а если в списке несколько сессий — необходимо ввести следующую команду:
tmux attach -t наименование сессии

В нашем случае сессия называется 0.
Сменить сессию можно также, находясь в другой сессии. Для этого нужно воспользоваться сочетанием клавиш Ctrl + b, s.

Выйти из сессии можно с помощью сочетания клавиш Ctrl + b, d. А завершить сессию командой:
tmux kill-session -t название сессии

Закрыть все сессии можно командой:
tmux kill-server
👍31
📌Какая разница между командами GREP, AWK и SED

Команды grep, awk и sed – это мощные утилиты в Unix/Linux, которые используются для обработки и манипуляции текстом. Они имеют разные цели, хотя в некоторых случаях их можно использовать взаимозаменяемо.

1. grep – Поиск строк
- Используется для поиска строк, соответствующих заданному шаблону (обычно регулярному выражению).
- Выводит найденные строки или их части.
- Основная задача – фильтрация текста.

Примеры:

grep "error" log.txt # Найти строки, содержащие "error"
grep -i "warning" log.txt # Игнорировать регистр
grep -E "fail|error" log.txt # Использовать расширенные регулярные выражения (ERE)
grep -v "INFO" log.txt # Исключить строки, содержащие "INFO"




2. sed – Потоковый редактор
- Позволяет заменять, удалять, изменять текст на основе шаблонов.
- Работает построчно, но может также обрабатывать многострочные паттерны.
- Может использоваться для быстрого редактирования файлов.

Примеры:

sed 's/apple/orange/' file.txt # Заменить первое вхождение "apple" на "orange" в каждой строке
sed 's/error/ERROR/g' file.txt # Заменить все вхождения "error" на "ERROR"
sed '/DEBUG/d' file.txt # Удалить строки, содержащие "DEBUG"
sed -i 's/foo/bar/g' file.txt # Редактировать файл на месте (без создания копии)




3. awk – Анализ и обработка текста
- Используется для извлечения данных, обработки полей, манипуляции с текстом.
- Работает как мини-программа: может выполнять арифметические операции, фильтрацию и форматирование.
- Использует колонки (разделенные пробелами или другими разделителями) для обработки данных.

Примеры:

awk '{print $1, $3}' file.txt # Вывести 1-й и 3-й столбцы
awk -F ":" '{print $1}' /etc/passwd # Вывести имена пользователей (разделитель - двоеточие)
awk '$3 > 50 {print $1, $3}' file.txt # Вывести строки, где 3-й столбец > 50
awk '{sum+=$3} END {print "Sum:", sum}' file.txt # Подсчитать сумму 3-го столбца




Основные отличия между grep, sed и awk

grep: основное назначение - поиск строк по шаблону
grep: что делает лучше всего? - фильтрация строк по регулярным выражениям

sed: основное назначение - поиск и замена текста
sed: что делает лучше всего? - удаление, вставка строк в файле

awk: основное назначение - работа с колонками и данными
awk: что делает лучше всего? - анализ данных, извлечение полей, обработка значений

Когда использовать?
- Нужно просто найти строку в файле? → grep
- Нужно заменить или удалить текст? → sed
- Нужно обработать данные, работать с колонками? → awk

Каждая из этих утилит может быть использована совместно для более сложных задач, например:

grep "error" log.txt | awk '{print $2, $5}' | sed 's/:/-/'

(Ищем ошибки, берем 2-й и 5-й столбцы, заменяем : на `-`)
👍3
Static-get или портативные утилиты в Linux

Static-get — инструмент, с помощью которого можно скачать статически слинкованный бинарный файл нужной нам утилиты. Такой файл будет работать практически на любом дистрибутиве. В данный момент, в базе static-get доступно 930 пакетов и количество постепенно растёт.

Установка и использование.
Каких-то специфических шагов для установки делать не потребуется, но наличие wget (почему-то без него первый запуск скрипта не выполнялся корректно) и tar будет обязательным.


# dnf install git wget tar


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


# git clone https://github.com/minos-org/minos-static
# cd minos-static/
# ./static-get


Итак, с помощью скрипта мы можем: выполнить поиск нужной программы, скачать архив с ней, обновить её при необходимости, установить программу в систему и удалить её.

Скрипту так же можно передать некоторые параметры для работы — в каком репозитории искать пакеты, для какой архитектуры, какого формата они должны быть. Имеется возможность выполнить dry-run запуск или выполнить установку в verbose режиме. Несколько примеров работы ниже:

— Скачиваем и запускаем nano:


# ./static-get --extract nano
# ./nano/bin/nano --version
GNU nano, version 2.4.2
(C) 1999..2015 Free Software Foundation, Inc.
Email: [email protected] Web: https://www.nano-editor.org/
Compiled options: --disable-libmagic --disable-nls --disable-utf8



— Устанавливаем qemu в систему:


# ./static-get --install qemu
qemu-1.4.0-1.tar.xz
# /bin/qemu-io --version
qemu-io version 0.0.1


— Удаляем qemu:


# ./static-get --remove qemu
# /bin/qemu-io --version
-bash: /bin/qemu-io: No such file or directory


— Ищем gcc в репозитории:


# ./static-get --search gcc
gcc-4.6.1-2.tar.xz:672ba63bc0dd505104f22e4c3295c0e6


В своей работе static-get базируется на нескольких проектах — bifrost-autobuild, morpheus-autobuild, rlsd2-autobuild, misc-autosync. Бинарные файлы описываются в специальных рецетах (предпочтительны рецепты для bifrost), а после сборки архивы с пакетами публикуются в репозитории s.minos.io, откуда скриптом и выполняется установка.
2
📌 Шпаргалка по командам Docker
3
Проверка портов

Проверить порты можно с помощью следующих команд:

nc: Netcat – простая утилита Unix, которая считывает и записывает данные через сетевые соединения, используя протокол TCP или UDP.
nmap: Nmap («Network Mapper») – это инструмент с открытым исходным кодом для исследования сети и аудита безопасности. Он был разработан для быстрого сканирования больших сетей.

telnet: Утилита telnet используется для интерактивного взаимодействия с другим хостом по протоколу TELNET.
netstat: Утилита netstat позволяет увидеть открытые в системе порты, а также открытые на данный момент сетевые соединения.

ss: Утилита ss — это современная альтернатива для команды netstat. В отличие от netstat, которая берет информацию из каталога /proc, утилита ss напрямую связывается со специальной подсистемой ядра Linux

lost: Утилита lsof позволяет посмотреть все открытые в системе соединения, в том числе и сетевые.

https://telegra.ph/Proverka-portov-09-17
3