Системный администратор
25.9K subscribers
2.83K photos
2.5K videos
203 files
2.95K links
Все для системного администратора.

По всем вопросам @evgenycarter

РКН clck.ru/3KoDXp
Download Telegram
Forwarded from Bash Советы
Спецсимволы в bash

Далее перечислены символы и синтаксические конструкции, имеющее особое значение в bash. Для ввода спецсимволов как они есть используют кавычки или спецсимвол \ отменяющий специальное значение следующего символа

\ Экранирование. Отменяет специальное значение следующего символа
\\ Символ "\"

# Комментарий, не работает в кавычках и в некоторых подстановках переменных и преобразовании основания чисел
echo "Это #не комментарий"
echo 'Это # не комментарий’
echo Это \# не комментарий
echo Это # Вот комментарий.
echo ${PATH#*:} #Специальная переменная
echo $(( 2#101011 )) #Преобразование системы счисления в арифметической подстановке.

>, >> - перенаправление стандартного вывода программы в файл
< - перенаправление стандартного ввода программы из файла
<<TERM перенаправление стандартного ввода программы из текста текущего скрипта со следующей строки до строки, состоящей из слова TERM.
|- перенаправление стандартного вывода программы на стандартный ввод другой программы

; Разделитель команд в строке
echo hello; echo world

;; Разделитель альтернатив в операторе case
case "$VARiable" in
abc) echo "$VARiable = abc" ;;
xyz) echo "$VARiable = xyz" ;;
esac

. Аналог команды source (#include в С++). Выполняет скрипт в текущем интерпретаторе.
. myconf

".." Двойные кавычки, отменяют действие спецсимволов кроме $ .. и \

'...' Апострофы, отменяют действие всех спецсимволов в том числе и \, по этому нельзя включить апостроф в строку ограниченную апострофами

: Нулевая команда, всегда возвращает нулевой код ответа. В сочетании с перенаправлением ">" создает файл, или обнуляет существующий. В сочетании с перенаправлением ">>" создает файл, или изменяет время модификации существующего
:> data.xxx # File “data.xxx” now empty.
(можно и без двоеточия)

Шаблоны в именах файлов. Если подходящие имена находятся, то они подставляются в командную строку как отдельные аргументы (возможно с пробелами внутри). Если имена не находятся, то шаблон остается как есть.

* Шаблон заменяющий любую последовательность символов
? Шаблон заменяющий ровно один символ
[xyz] Шаблон заменяющий один из перечисленных символов
{xxx,yyy,zzz,...} Подстановка одного из вариантов в шаблон. В скобках не должно быть неэкранированных пробелов
grep Linux file*.{txt,htm*} # Ищет слово “Linux” в файлах вида “fileA.txt”, “file2.txt”, “fileR.html”, “file-87.htm”, etc.

$ Подстановка значения переменной, арифметического выражения или стандартного вывода программы. Если значение содержит пробелы, то при подстановке оно разбивается на отдельные аргументы.
$A содержимое переменной A
$$ PID процесса
$? Код возврата из последней выполненной программы или функции, а также код возврата самого скрипта
$((2*2)) подстановка результата вычисления арифметического выражения
$(cmd) подстановка стандартного вывода программы
... тоже, что и $(...) – подстановка стандартного вывода программы

Пример: A=EE; echo $A $(echo QQ) $((7+5))
Результат: EE QQ 12
Ошибка: $A=ZZ
Результат: bash: EE=ZZ: command not found

(...) Группировка команд
(A=hello; echo $A)
Для выполнения группы в скобках запускается новый интерпретатор
A=123
(A=321)
echo A = $A # A = 123
# "A" внутри скобок – локальная переменная.

(...) Создание массива ( только в bash версии > 2)
Array=(element1 element2 element3)

[] Элемент массива ( только в bash версии > 2)
Array[1]=slot_1
echo ${Array[1]}

{1..10} - подстановка чисел от 1 до 10
{c..n} - подстановка символов от "c" до "n"

{...} Создание безымянной функции, удобно для перенаправления ввода/вывода нескольких команд в один файл. В отличие от настоящей функции видимости переменных не изменяется.
PACK=mysql
{
echo
echo "Archive Listing:"
rpm -qpl ${PACK} # Список фалов в пакете rpm
echo
rpm -i --test ${PACK} # Проверка, установлен ли пакет.
} > "${PACK}.txt" весь вывод в один файл.

[...] Встроенная функция test для вычисления логических выражений

((...)) Арифметическая подстановка, вычисляет арифметическое выражение в стиле языка Си внутри скобок

& - запуск программы в фоновом режиме
bash$ sleep 10 &
[1] 850
[1]+ Done sleep 10

👉@bash_srv
Media is too big
VIEW IN TELEGRAM
Введение в Linux – Полный курс для начинающих (Eng ver)

Если вы новичок в Linux, этот курс предназначен для вас. Вы познакомитесь со многими инструментами, которые ежедневно используют как системные администраторы Linux, так и миллионы пользователей, работающих с дистрибутивами Linux, такими как Ubuntu, на своих компьютерах. Курс научит вас работать с графическим интерфейсом Linux и его мощной экосистемой командной строки.

⌨️ (0:00:00) Introduction
⌨️ (0:01:38) Chapter 1. Introduction to Linux Families
⌨️ (0:07:39) Chapter 2. Linux Philosophy and Concepts
⌨️ (0:16:37) Chapter 3. Linux Basics and System Startup
⌨️ (1:05:36) Chapter 4. Graphical Interface
⌨️ (1:34:29) Chapter 5. System Configuration from the Graphical Interface
⌨️ (2:04:27) Chapter 6. Common Applications
⌨️ (2:12:57) Chapter 7. Command Line Operations
⌨️ (3:25:50) Chapter 8. Finding Linux Documentation
⌨️ (3:36:53) Chapter 9. Processes
⌨️ (4:07:51) Chapter 10. File Operations
⌨️ (4:31:11) Chapter 11. Text Editors
⌨️ (4:49:25) Chapter 12. User Environment
⌨️ (5:13:32) Chapter 13. Manipulating Text
⌨️ (5:40:04) Chapter 14. Network Operations

источник

👉 @i_odmin
Удаление бакетов в S3: что стоит учесть?
Объектное хранилище S3 — надёжный способ работать с большими объёмами данных. 27 мая проведем митап для тех, кто хочет точно понимать, как устроены ключевые процессы S3 — от настройки версионирования до безопасного удаления бакетов.

В формате демо разберём
🔹 настройку версионирования, multipart-загрузок и lifecycle-политик
🔹 автоматизацию очистки бакета (включая delete marker и незавершённые multipart-загрузки)
🔹 как подготовить бакет к удалению
🔹 настройку политик доступа, временных ссылок и шифрование на стороне сервера SSE

Спикер
Евгения Тарашкевич, инженер K2 Cloud

Формат
Онлайн-митап

Ждем администраторов, девопсов, системных архитекторов и всех, кто работает с S3.

Зарегистрироваться>>
Генерируем пароль в терминале Linux

Будем использовать /dev/urandom и утилиты makepasswd, pwgen.

Используем /dev/urandom
При чтении устройство /dev/urandom возвращает бесконечный набор случайных байтов. Этот вывод можно отфильтровать с помощью утилиты tr. Затем, вывод передать команде xargs которая, по умолчанию выполняет команду echo и ей передается всё, что было прочитано из стандартного ввода. А с помощью утилиты head можно указать необходимое количество символов в пароле.

То есть сгенерировать пароль в Linux поможет следующая команда:
$ tr -dc A-Za-z0-9_ < /dev/urandom | head -c 10 | xargs
AurTdatFbw


Вы можете сделать bash функцию и записать её в ваш .bashrc:
$ nano .bashrc
genpasswd() {
local l=$1
[ "$l" == "" ] && l=16
tr -dc A-Za-z0-9_ < /dev/urandom | head -c ${l} | xargs
}


Затем применим изменения и попробуем сгенерировать пароль:
$ . .bashrc
~$ genpasswd 5
Hbe7a
$ genpasswd 10
PDbt1tjBg0


Используем makepasswd

Утилита makepasswd может также помочь сгенерировать пароль в Linux. Она также использует /dev/urandom, чтобы создавать случайные пароли. Вы можете установить её с помощью apt:
$ sudo apt install makepasswd

Просто выполните эту команду без параметров чтобы получить случайный пароль:
$ makepasswd
5q6m4jMHJ


Можете указать количество символов в пароле с помощью опции chars и можете создать несколько паролей с помощью опции count:
$ makepasswd --chars 4 --count 3
1d65
R5Xe
Lhes


Можно создать пароли и сразу вывести их зашифрованный хеш с помощью опции crypt-md5:
$ makepasswd --chars 4 --count 3 --crypt-md5
DWBN $1$awZ5uNo/$r50RTWsihcMKEVQzoDyoZ1
xLN7 $1$h4ThtOu1$Bsmqhr/Tq/IIdGPtAVGda.
A2R2 $1$bss49Rj7$y.9nAbyr749N.eYRUF155.



Используем pwgen

Утилита pwgen генерирует легко запоминаемые пароли. Но также можешь генерировать случайные пароли. Устанавливается она также, с помощью apt:
$ sudo apt install pwgen

Если выполнить её без опций, то вы увидите список из легко запоминаемых паролей:
$ pwgen
Xu6Phei7 Ree2ud9e ohphah8I iiZ8Efoo foG0moh3 aSho2neL Phero4Ud thiCh9ei
uvaeChu0 eeCie5Um Wovie0do Eibuo3Ou Sai1Ovah po3OhT9j XeYei9ei eiQu2mai

....

Вы можете указать количество необходимых паролей с помощью опции -N и указать количество символов в пароле с помощью опции -n:
$ pwgen -N 3 -n 5
aeCo2 Le7oy uv6Oh


Существует также опция -s чтобы создавать более сложные пароли (их сложнее запомнить и подобрать):
$ pwgen -N 3 -n 5 -s
fY60V y6FIU 9XEt4


Я не заметил разницу в использовании опции -s, но в инструкции написано, что без этой опции пароль легче подобрать.

👉 @i_odmin
Forwarded from Bash Советы
🧠 Bash-совет дня: Проверка скорости интернет-соединения прямо из терминала

Если тебе нужно быстро проверить скорость интернета на сервере (например, VPS), не устанавливая громоздкие GUI-программы — вот решение:


#!/bin/bash

# Проверяем наличие speedtest-cli
if ! command -v speedtest &> /dev/null; then
echo " Устанавливаем speedtest-cli..."
apt update && apt install -y speedtest-cli # Для Debian/Ubuntu
# yum install -y speedtest-cli # Для RHEL/CentOS
fi

# Запускаем тест скорости
echo "🚀 Проверяем скорость интернет-соединения..."
speedtest


📝 Альтернатива без установки — через curl:


curl -s https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py | python3 -


📊 Удобно использовать при диагностике проблем с сетью, особенно на серверах в разных дата-центрах.

👉@bash_srv
Как упростить хранение логов и работу с данными?

В помощь отделу ИБ, DevOps- и SRE-инженерам, дата-аналитикам и разработчикам Selectel предлагает облако для OpenSearch.

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

Кроме производительного железа, бесперебойной работы и быстрого масштабирования в облаке Selectel для OpenSearch вы получите:

● бесплатные автоматические бекапы,
● возможность использовать диски разной производительности для холодного и горячего хранения
● Dashboard из коробки для аналитики и управления

Создайте кластер в OpenSearch за несколько кликов в Selectel по ссылке: https://slc.tl/4c9yj

Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqwCvHSk
Media is too big
VIEW IN TELEGRAM
SQL за полтора часа в одном видео! Полный базовый курс по SQL. Базы данных курс для начинающих!

00:00:00 Введение
00:02:43 Платные курсы и что изучать дальше
00:04:55 Коротко об онлайн редакторе
00:07:11 Что такое база данных
00:08:10 Что такое CRUD
00:10:05 Запрос на создание первой таблицы
00:11:57 Типы данных у атрибутов(колонок) (DATA TYPES)
00:17:26 Прописываем атрибуты(колонки) первой таблицы
00:21:07 Создаем первую таблицу (CREATE TABLE)
00:21:38 Проверка на наличие таблицы при создании (IF NOT EXISTS)
00:22:18 Запрос на удаление таблицы(DROP TABLE)
00:22:33 Проверка на наличие таблицы при удалении(IF EXISTS)
00:22:57 Запрос на добавление объекта в таблицу (INSER INTO table)
00:23:35 Запрос на чтение(получение) объектов из таблицы(SELECT * FROM table)
00:24:18 Модификаторы для атрибутов(колонок) таблицы(NOT NULL, DEFAULT, UNIQUE)
00:29:26 Изменение уже существующей таблицы(ALTER TABLE, ADD, DROP, RENAME, MODIFY COLUMN)
00:36:08 Удаление объектов из таблицы(DELETE FROM table)
00:37:06 Редактирование объекта в таблице(UPDATE table)
00:39:03 Первичный ключ(PRIMARY KEY)
00:45:37 Композиция в бд
00:50:38 "Иностранный" ключ(FOREIGN KEY)
00:57:26 Индексы в бд(INDEX)
00:59:24 Готовим данные для темы алиас, юнион и слияние таблиц
01:03:30 Слияние таблиц(INNER JOIN)
01:06:02 Слияние таблиц(LEFT JOIN)
01:06:53 Слияние таблиц(RIGHT JOIN)
01:07:26 Слияние таблиц(FULL JOIN/OUTER JOIN) и Union
01:09:04 Алиас(table AS alias)
01:12:18 Select Distinct в SQL
01:13:42 AND OR NOT в SQL
01:16:18 ORDER BY и LIMIT в SQL
01:17:35 MIN и MAX в SQL
01:18:25 COUNT SUM AVG в SQL
01:19:29 LIKE в SQL
01:21:31 IN и BETWEEN в SQL
01:22:50 GROUP BY в SQL
01:25:17 EXISTS в SQL
01:27:37 ANY и SOME в SQL
01:29:00 INSERT INTO в SQL
01:30:40 Отношения в базе данных
01:32:11 Отношения один к одному
01:33:09 Отношения один ко многим
01:34:09 Отношения многие ко многим
01:37:10 Отношения один к одному и один ко многим "через"
01:39:10 SQL инъекции

источник

👉 @i_odmin
🌐 MPLS и корпоративные сети: невостребованные опции или жизненно необходимый функционал?

Понимание основ технологий MPLS позволяет на качественно новом уровне рассмотреть применение их в сегменте корпоративных сетей.

Также сравнение типов сервисов, предоставляемых набором технологий MPLS, позволяют выявить ограничения в использовании какого- либо иного сервиса в корпоративных сетях.

На уроке:
- Рассмотрим основы MPLS
- Узнаем, как реализуются сервисы на базе MPLS
- Реализуем на практике один из сервисов MPLS

👉 Регистрация и подробности о курсе Network Engineer. Professional https://vk.cc/cLVEwC

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
🖥 Базовый курс Ubuntu

1. Основные зарезервированные папки в ubuntu linux
2. Команды ubuntu linux о системе, озу, цпу, жёсткий диск
3. Создание, удаление, изменение файлов и папок в ubuntu linux
4. Менеджер зависимостей в ubuntu linux
5. Процессы, мониторинг и остановка процессов в ubuntu
6. Systemctl start, stop, reload, status, enable в ubuntu linux
7. Пользователи. Создание, удаление пользователей в ubuntu linux
8. Sudoers, visudo, root пользователь и привилегии в ubuntu linux
9. Права и доступы в ubuntu linux
10. Общие рекомендации к ubuntu linux

источник

👉 @i_odmin
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 KVM: Управление виртуальными машинами из консоли (шпаргалка)

🔧 1. Проверка поддержки виртуализации:


egrep -c '(vmx|svm)' /proc/cpuinfo


Если результат > 0 — виртуализация поддерживается.

🔧 2. Установка KVM и утилит:


sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager


Для CentOS/RHEL:


sudo yum install qemu-kvm libvirt virt-install bridge-utils virt-manager


🔧 3. Проверка запуска демонов:


sudo systemctl enable --now libvirtd
sudo systemctl status libvirtd




📂 Основные команды управления ВМ:

📌 Список виртуальных машин:


virsh list --all


📌 Запуск ВМ:


virsh start <vm_name>


📌 Остановка ВМ (корректно):


virsh shutdown <vm_name>


📌 Жёсткое выключение (аналог выдернуть шнур):


virsh destroy <vm_name>


📌 Автозапуск при загрузке хоста:


virsh autostart <vm_name>


📌 Удаление ВМ:


virsh undefine <vm_name>


📌 Снимок (snapshot):


virsh snapshot-create-as <vm_name> <snapshot_name>


📌 Восстановление из снимка:


virsh snapshot-revert <vm_name> <snapshot_name>


📌 Консоль к ВМ (требуется virtio):


virsh console <vm_name>




🛠 Создание новой ВМ из образа:


virt-install \
--name vm1 \
--ram 2048 \
--vcpus=2 \
--disk path=/var/lib/libvirt/images/vm1.qcow2,size=20 \
--os-type=linux \
--os-variant=ubuntu20.04 \
--network network=default \
--graphics none \
--console pty,target_type=serial \
--location /iso/ubuntu-20.04.iso \
--extra-args 'console=ttyS0'




💾 Управление образами:

📌 Создать образ диска:


qemu-img create -f qcow2 /var/lib/libvirt/images/vm1.qcow2 20G


📌 Проверка и инфо о диске:


qemu-img info /path/to/image.qcow2




🔗 Сетевые настройки:

📌 Список сетей:


virsh net-list --all


📌 Создание мостовой сети (bridge):
Редактировать /etc/netplan/*.yaml или /etc/network/interfaces (в зависимости от дистрибутива).

📌 Применить изменения:


netplan apply




📎 Полезное:

📌 Список ISO-образов, путь по умолчанию:
/var/lib/libvirt/images/ или /iso/

📌 Управление пулом хранения:


virsh pool-list
virsh vol-list default




💡 Советы:

– Используйте virt-top для мониторинга ВМ в реальном времени.
– Изучите virt-clone для клонирования ВМ.
– Используйте virsh dumpxml и virsh edit для тонкой настройки конфигурации ВМ.

👉 @i_odmin_book
Хотите перестать тратить часы на рутинные задачи сборки релизов 1С и автоматизировать весь процесс одним нажатием?

На открытом вебинаре 21 мая в 20:00 МСК вы узнаете, как использовать Docker, Jenkins и OneScript для автоматизации сборки релизов 1С. Разберёмся с настройкой окружения контейнера и запуском конфигурации напрямую из репозитория.

После урока вы сократите время на сборку и получите навыки для профессионального роста как DevOps-инженер 1С.

🚀 Присоединяйтесь к открытому вебинару и получите специальную скидку на курс «DevOps 1С»: https://vk.cc/cLX1z2

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Bash Советы
🧠 Bash совет дня — Отслеживаем подозрительные sudo-команды в реальном времени 🕵️

Хочешь знать, кто и что запускает через sudo прямо сейчас? Настроим простой мониторинг:


#!/bin/bash

logfile="/var/log/auth.log"

tail -F "$logfile" | grep --line-buffered "sudo" | while read line; do
echo "[ALERT] 🔐 $(date): $line"
done


📌 Что делает:

* Следит за /var/log/auth.log в реальном времени.
* Отфильтровывает строки, связанные с sudo.
* Выводит каждое срабатывание с пометкой времени.

🔥 Пример вывода:


[ALERT] 🔐 2025-05-15 10:23:42: user1 : TTY=pts/0 ; PWD=/home/user1 ; USER=root ; COMMAND=/bin/bash


💡 Используй для:

* Мониторинга активности админов или подозрительных действий.
* Настройки моментального оповещения (можно расширить, чтобы слать в Telegram, Slack и т.д.).

📦 Можно оформить как systemd-сервис, чтобы монитор запускался автоматически.

👉@bash_srv