Все для системного администратора. По всем вопросам @evgenycarter РКН clck.ru/3KoDXp
🖥 KVM: Управление виртуальными машинами из консоли (шпаргалка)
🔧 1. Проверка поддержки виртуализации:
egrep -c '(vmx|svm)' /proc/cpuinfo
sudo apt install qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils virt-manager
sudo yum install qemu-kvm libvirt virt-install bridge-utils virt-manager
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>
virsh snapshot-create-as <vm_name> <snapshot_name>
virsh snapshot-revert <vm_name> <snapshot_name>
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
/etc/netplan/*.yaml
или /etc/network/interfaces
(в зависимости от дистрибутива).
netplan apply
/var/lib/libvirt/images/
или /iso/
virsh pool-list
virsh vol-list default
virt-top
для мониторинга ВМ в реальном времени.virt-clone
для клонирования ВМ.virsh dumpxml
и virsh edit
для тонкой настройки конфигурации ВМ.🌐 MPLS и корпоративные сети: невостребованные опции или жизненно необходимый функционал?
Понимание основ технологий MPLS позволяет на качественно новом уровне рассмотреть применение их в сегменте корпоративных сетей.
Также сравнение типов сервисов, предоставляемых набором технологий MPLS, позволяют выявить ограничения в использовании какого- либо иного сервиса в корпоративных сетях.
На уроке:
- Рассмотрим основы MPLS
- Узнаем, как реализуются сервисы на базе MPLS
- Реализуем на практике один из сервисов MPLS
👉 Регистрация и подробности о курсе Network Engineer. Professional https://vk.cc/cLVEwC
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Как упростить хранение логов и работу с данными?
В помощь отделу ИБ, DevOps- и SRE-инженерам, дата-аналитикам и разработчикам Selectel предлагает облако для OpenSearch.
Вы сможете создать готовый к работе кластер OpenSearch за несколько минут. Это поможет быстро найти, визуализировать и проанализировать данные, события или метрики без ограничений в масштабируемости.
Кроме производительного железа, бесперебойной работы и быстрого масштабирования в облаке Selectel для OpenSearch вы получите:
● бесплатные автоматические бекапы,
● возможность использовать диски разной производительности для холодного и горячего хранения
● Dashboard из коробки для аналитики и управления
Создайте кластер в OpenSearch за несколько кликов в Selectel по ссылке: https://slc.tl/4c9yj
Реклама. АО «Селектел», ИНН 7810962785, ERID: 2VtzqwCvHSk
Генерируем пароль в терминале 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
Введение в 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
🐳❓ Хотите стать экспертом по Docker и микросервисам? Освойте ключевые навыки для разработки, упаковки и развертывания приложений с Docker-образами!
⏰ На открытом вебинаре 13 мая в 20:00 мск мы разберём, как эффективно использовать Docker для контейнеризации и автоматизации процессов развертывания микросервисов. Вы познакомитесь с принципами создания и оптимизации Docker-образов, а также с лучшими практиками DevOps и CI/CD.
Умение использовать Docker для автоматизации и управления микросервисами сделает вас более конкурентоспособным на рынке труда. Получите знания, которые востребованы в крупных компаниях.
👉 Регистрируйтесь на открытый урок и получите скидку на программу обучения «DevOps-практики и инструменты»: https://vk.cc/cLR9VN
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
Что работает у Яндекса — и что можно взять себе
Многие темы на infra.conf — это взгляд изнутри на процессы Яндекса. Как устроена внутренняя инфраструктура и её части. Какие инструменты помогают держать стабильность. Как устроено взаимодействие между командами и почему инженерные решения принимаются именно так.
Будет полезно тем, кто проектирует что-то подобное у себя или просто хочет подсмотреть хорошие подходы.
Конференция состоится 5 июня в Москве, Loft Hall 8. Доступна онлайн-трансляция.
🚀 Подборка Telegram каналов для программистов
Системное администрирование, DevOps 📌
/channel/bash_srv Bash Советы
/channel/win_sysadmin Системный Администратор Windows
/channel/sysadmin_girl Девочка Сисадмин
/channel/srv_admin_linux Админские угодья
/channel/linux_srv Типичный Сисадмин
/channel/devopslib Библиотека девопса | DevOps, SRE, Sysadmin
/channel/linux_odmin Linux: Системный администратор
/channel/devops_star DevOps Star (Звезда Девопса)
/channel/i_linux Системный администратор
/channel/linuxchmod Linux
/channel/sys_adminos Системный Администратор
/channel/tipsysdmin Типичный Сисадмин (фото железа, было/стало)
/channel/sysadminof Книги для админов, полезные материалы
/channel/i_odmin Все для системного администратора
/channel/i_odmin_book Библиотека Системного Администратора
/channel/i_odmin_chat Чат системных администраторов
/channel/i_DevOps DevOps: Пишем о Docker, Kubernetes и др.
/channel/sysadminoff Новости Линукс Linux
1C разработка 📌
/channel/odin1C_rus Cтатьи, курсы, советы, шаблоны кода 1С
/channel/DevLab1C 1С:Предприятие 8
/channel/razrab_1C 1C Разработчик
/channel/buh1C_prog 1C Программист | Бухгалтерия и Учёт
/channel/rabota1C_rus Вакансии для программистов 1С
Программирование C++📌
/channel/cpp_lib Библиотека C/C++ разработчика
/channel/cpp_knigi Книги для программистов C/C++
/channel/cpp_geek Учим C/C++ на примерах
Программирование Python 📌
/channel/pythonofff Python академия.
/channel/BookPython Библиотека Python разработчика
/channel/python_real Python подборки на русском и английском
/channel/python_360 Книги по Python
Java разработка 📌
/channel/BookJava Библиотека Java разработчика
/channel/java_360 Книги по Java Rus
/channel/java_geek Учим Java на примерах
GitHub Сообщество 📌
/channel/Githublib Интересное из GitHub
Базы данных (Data Base) 📌
/channel/database_info Все про базы данных
Мобильная разработка: iOS, Android 📌
/channel/developer_mobila Мобильная разработка
/channel/kotlin_lib Подборки полезного материала по Kotlin
Фронтенд разработка 📌
/channel/frontend_1 Подборки для frontend разработчиков
/channel/frontend_sovet Frontend советы, примеры и практика!
/channel/React_lib Подборки по React js и все что с ним связано
Разработка игр 📌
/channel/game_devv Все о разработке игр
Библиотеки 📌
/channel/book_for_dev Книги для программистов Rus
/channel/programmist_of Книги по программированию
/channel/proglb Библиотека программиста
/channel/bfbook Книги для программистов
БигДата, машинное обучение 📌
/channel/bigdata_1 Big Data, Machine Learning
Программирование 📌
/channel/bookflow Лекции, видеоуроки, доклады с IT конференций
/channel/rust_lib Полезный контент по программированию на Rust
/channel/golang_lib Библиотека Go (Golang) разработчика
/channel/itmozg Программисты, дизайнеры, новости из мира IT
/channel/php_lib Библиотека PHP программиста 👨🏼💻👩💻
/channel/nodejs_lib Подборки по Node js и все что с ним связано
/channel/ruby_lib Библиотека Ruby программиста
/channel/lifeproger Жизнь программиста. Авторский канал.
QA, тестирование 📌
/channel/testlab_qa Библиотека тестировщика
Шутки программистов 📌
/channel/itumor Шутки программистов
Защита, взлом, безопасность 📌
/channel/thehaking Канал о кибербезопасности
/channel/xakep_2 Хакер Free
Книги, статьи для дизайнеров 📌
/channel/ux_web Статьи, книги для дизайнеров
Математика 📌
/channel/Pomatematike Канал по математике
/channel/phis_mat Обучающие видео, книги по Физике и Математике
/channel/matgeoru Математика | Геометрия | Логика
Excel лайфхак📌
/channel/Excel_lifehack
/channel/mir_teh Мир технологий (Technology World)
Вакансии 📌
/channel/sysadmin_rabota Системный Администратор
/channel/progjob Вакансии в IT
Сборка MS-DOS 4.0
Совсем недавно на хабре появилась следующая новость: На GitHub опубликован исходный код MS-DOS 4.00 под лицензией MIT. Раз появились исходные коды, стало сразу интересно: а можно ли собрать эту операционную систему?
Задача оказалась нетривиальной и совсем неочевидной. Оказывается, что исходные файлы DOS не так-то уж и легко переносятся в git, и уж как минимум, не как текстовые файлы в кодировке UTF-8. Но, к счастью, в отличие от утечек исходников MS-DOS 6.0, здесь имеется полный комплект файлов и инструментов, достаточный для корректной сборки и тестирования. Остались сущие нюансы, которые попили много крови.
Поэтому я, как и многие — начал свои эксперименты по сборке MS-DOS 4.0, с исправлением ошибок, а также возможностью исследования исходных кодов и тестирования их на реальном железе.
В статье же изложено краткое руководство по сборке и созданию загрузочной дискетки.
https://habr.com/ru/companies/timeweb/articles/812003/
👉 @i_odmin
👋 Привет, админы!
Сегодня расскажу про один недокументированный нюанс с задачами в Планировщике Windows, с которым недавно столкнулся сам. Был у меня скрипт, который по расписанию должен запускаться от имени системной учетной записи (SYSTEM
). Всё настроено правильно, вручную запускается — работает. Но вот по расписанию не срабатывает. Без ошибок, без логов, просто тишина. 🤔
🔍 После копания выяснилось: если задача запускается от SYSTEM, но в свойствах включена опция "Запускать только при входе пользователя", — она НЕ выполнится, потому что SYSTEM не входит в систему в классическом понимании.
💡 Решение:
1. Зайти в свойства задачи.
2. Переключить опцию на: "Выполнять вне зависимости от входа пользователя".
3. Обязательно включить галку "Не сохранять пароль", если используете обычную учетку (для SYSTEM это не критично).
📌 Ну и по возможности включайте логирование в задаче — пусть пишет вывод скрипта в файл, так проще отлавливать подобные "невидимые" фейлы.
💬 А у вас были странности с Task Scheduler? Может, знаете ещё тонкости, о которых стоит рассказать? Делитесь в комментариях!
👉 @win_sysadmin
Подборка часто используемых команд для первоначальной настройки устройств MikroTik: имя устройства, DNS сервера, Email, время, доступы и т.д.
Установки имени устройства/system identity set name=MyHomeMikrotik
Установка своих DNS серверов и отключение получения их по DHCP/ip dns set servers=8.8.8.8,1.1.1.1
/ip dhcp-client set [find ] use-peer-dns=no
Настройка email клиента для работы с Yandex.Mail
Для корректной работы разрешите в настройках профиля авторизацию SMTP по обычному паролю или [рекомендуется] используйте пароли приложений (почта)/tool e-mail
set address=smtp.yandex.ru from=example@yandex.ru password=example-pass port=587 start-tls=yes user=example@yandex.ru
Настройка синхронизации времени по NTP и MikroTik Cloud Time (Москва)/system ntp client set enabled=yes server-dns-names=time.google.com,0.pool.ntp.org,1.pool.ntp.org,2.pool.ntp.org,3.pool.ntp.org
/system clock set time-zone-autodetect=no
/system clock set time-zone-name=Europe/Moscow
/ip cloud set update-time=yes
Изменение количества строк системного лога/system logging action set memory memory-lines=10000
Очистка системного лога (оставляет сообщение о смене настроек лога)/system logging action set memory memory-lines=1
/system logging action set memory memory-lines=10000
Контроль доступа с IP адресов домена
Это позволяет использовать DynamicDNS для записей своего домена, и получать доступ к устройству с IP адресов, которые будут резолвится с домена. RouterOS будет сам обновлять записи и access-list при изменении записи в домене.
Обратите внимание, в конце 2 строки с move. Это сделано для того, чтобы правило корректно двигалось на первое место при включенном fasttrack (то есть первое место), а также при отключенном (на нулевое место)/ip firewall address-list
add address=access.example.con list=DomainIPsAccess
/ip firewall filter
add action=accept chain=input src-address-list=DomainIPsAccess comment="Allow DomainIPsAccess"
move [find comment="Allow DomainIPsAccess"] 1
move [find comment="Allow DomainIPsAccess"] 0
Отключение ненужных служб доступа (web тоже отключается, осторожно)/ip service disable www,ftp,api,api-ssl,telnet
/ip service enable ssh,winbox
/ip service set ssh address=""
/ip service set winbox address=""
Фикс MTU (нужен редко, но метко)/ip firewall mangle
add chain=postrouting out-interface-list=WAN protocol=tcp tcp-flags=syn,!ack action=change-mss new-mss=clamp-to-pmtu comment="MTU Fix" passthrough=yes
Заблокировать доступ к WiFi по MAC-адресу/interface wireless access-list authentication=no mac-address=8A:EA:B7:2E:38:C1
Поместить клиента WiFi в отдельный VLAN по MAC-адресу/interface wireless access-list
add interface=all mac-address=8A:EA:B7:2E:38:C1 vlan-id=99 vlan-mode=use-tag
Настройка пароля и безопасности WiFi на default профиль/interface wireless security-profiles set default mode=dynamic
-keys authentication-types=wpa2-psk unicast-ciphers=aes-ccm group-ciphers=aes-ccm
wpa2-pre-shared-key=bigpassword
Включение пробросов портов SSH/ip ssh set forwarding-enabled=both
👉 @i_odmin
💪 Рекомендую качественный контент знакомого ИТ-сообщества с 15-летним стажем:
⌨️ ITKB_channel — бесплатное обучение по Windows, Linux, DevOps, Security, Network, программирование
📚 ITKB_Archive — библиотека (книги, курсы, ИТ литература)
✔️ Не можете выбрать между DWH, Data Lake и Data Lakehouse?
Запутались в понятиях и хотите разобраться, какой подход лучше для вас?
⏺ На открытом вебинаре 12 мая в 20:00 МСК мы простым и понятным языком разберём эти три важнейшие архитектуры данных: от проверенных временем DWH до гибких Data Lake и современных Data Lakehouse. Узнаем преимущества, ограничения и подходящие сценарии использования каждого подхода.
После вебинара вы поймёте, как выбрать правильную архитектуру под задачи вашей компании, сэкономите время и ресурсы на внедрение, а также избежите типичных ошибок.
➡️ Регистрируйтесь на вебинар и получите скидку на программу обучения «Data Engineer»:
https://vk.cc/cLFpQp
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Побег от WSL или как превратить старый ноутбук в домашний сервер для хранения данных и удаленной работы
Привет! Хочу поделиться личным опытом превращения старенького ноутбука ASUS X552CL (Intel i5-5200U, 12 ГБ RAM, SSD + HDD), выпущенный 12 лет назад, в полноценный домашний сервер под Linux Ubuntu Server 24.04.5 LTS.
Получилось что-то вроде мини-датацентра на дому — он хранит файлы на жёстком диске с бэкапом в облаке, Docker-контейнеры крутит для дата-аналитики и даже имеет легковесный интерфейс XFCE, при этом есть потенциал к росту до терминала для управления умным домом. Расскажу, почему было решено отказаться от WSL на рабочем ноутбуке Huawei, как настроить удалённый доступ через xRDP (чтобы не было чёрного экрана), запустить там Docker, сборку Superset и JupyterLab с Anaconda (с разными версиями Python), прикрутить Samba-шару для домашнего использования и организовать бэкап в облачном хранилище. В этой статье будет немного технических деталей, щепотка шуток и парочка мемов с советскими плакатами.
https://habr.com/ru/articles/906742/
👉 @i_odmin
Подборка хаков с grep
для продвинутых
🔥 1. Поиск в архивированных логах
zgrep "CRITICAL" /var/log/syslog.3.gz
zgrep
, аналог grep
, работающий с .gz
- архивами.
grep -w "main" код.c
main
, но не domain
или maintain
.
grep --color=always "TODO" файл.txt
less -R
.
grep -r --exclude-dir={.git,node_modules} "token" .
grep -oE "ID-[0-9]{4}" журнал.log
ID-1234
.
grep -A3 "panic" системный_лог.txt # 3 строки после
grep -B2 "panic" системный_лог.txt # 2 строки до
grep -C5 "panic" системный_лог.txt # 5 строк до и после
grep -E "ERROR|WARN|FATAL" журнал.log
grep -f patterns.txt журнал.log
patterns.txt
содержит:
ERROR
WARN
FATAL
grep -rl "import numpy" .
grep
- вывода
grep "Session" журнал.log | cut -d' ' -f2- | sort | uniq
tail -f /var/log/nginx/access.log | grep --line-buffered "404"
🖥 Базовый курс 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
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
🧠 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 -
Удаление бакетов в S3: что стоит учесть?
Объектное хранилище S3 — надёжный способ работать с большими объёмами данных. 27 мая проведем митап для тех, кто хочет точно понимать, как устроены ключевые процессы S3 — от настройки версионирования до безопасного удаления бакетов.
В формате демо разберём
🔹 настройку версионирования, multipart-загрузок и lifecycle-политик
🔹 автоматизацию очистки бакета (включая delete marker и незавершённые multipart-загрузки)
🔹 как подготовить бакет к удалению
🔹 настройку политик доступа, временных ссылок и шифрование на стороне сервера SSE
Спикер
Евгения Тарашкевич, инженер K2 Cloud
Формат
Онлайн-митап
Ждем администраторов, девопсов, системных архитекторов и всех, кто работает с S3.
Зарегистрироваться>>
Спецсимволы в 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
Изменение порта для подключения по 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
👉 @i_odmin
Работа с правами доступа файлов и директорий в Linux# chown vasya /file
Назначить пользователя vasya владельцем файла file# chown -R vasya directory
Рекурсивно обойти директорию directory и назначить пользователя vasya владельцем всех вложенных файлов и директорий# chown vasya:group /file
Назначить владельца и группу для файла /file# chmod ugo+rwx /directory
Установить полные права доступа rwx ( Read Write eXecute ) для всех ugo ( User Group Other ) на директорию /directory. То-же самое можно сделать, используя числовой представление chmod 777 directory# chmod go-rwx /directory
Удалить все права на директорию /directory для группы и остальных# chgrp new_group file
Изменить группу-владельца для file на new_group# chmod o+t /home/public
Установить так называемый STIKY-бит на директорию /home/public. Удалить файл в такой директории может только владелец данного файла# chmod o-t /home/public
Удалить STIKY-бит с директории /home/public# chmod u+s /bin/binary_file
Установить SUID-бит на файл /bin/binary_file. Это позволяет любому пользователю системы, запускать данный файл с правами владельца файла# chmod u-s /bin/binary_file
Удалить SUID-бит с файла /bin/binary_file# chmod g+s /home/public
Установить SGID-бит на директории /home/public# chmod g-s /home/public
Удалить SGID-бит с директории /home/public# find / -perm -u+s
Поиск всех файлов с установленным SUID битом, начиная с корня файловой системы# ls -lh
Листинг текущего каталога с правами доступа
👉 @i_odmin
📕 Консоль запросов в работе с 1С:Аналитика для разработчиков 1C, консультантов 1C и аналитиков
Как применять результаты из консоли запросов в системе компоновки данных и 1С:Аналитике.
📗 На вебинаре 12 мая в 19:00 мск разберём:
1. Всё о вопросах анализа данных — от консоли до 1С:Аналитика;
2. Основы работы с консолью запросов в 1С и особенности написания запросов в 1С;
📘 В результате на практике освоите работу с интеграцией с 1С:Аналитика и переход от анализа данных внутри 1С к элементам BI-систем на примере 1С:Аналитика.
👉 Регистрация и подробности о курсе Бизнес-аналитик 1С: https://vk.cc/cLNdM6
Все участники открытого урока получат скидку на курс "Бизнес-аналитик 1С"
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
Резервное копирование PostgreSQL по-взрослому
Базы данных — замечательный инструмент, без которого сложно представить современное приложение. И как бы сильно я ни любил использовать БД, я просто ненавижу писать SQL-запросы. Поэтому однажды задался вопросом, кто мог бы делать это за меня, при этом несильно теряя в качестве. И, конечно же, на ум пришёл мой AI-друг. Тогда остаётся одна проблема, как скормить ему мою БД. Тут на помощь приходит резервное копирование! Выполнив все необходимые задачи, я решил углубиться в тему и поделиться с Хабром, какие вообще есть виды и, конечно, сравнить их между собой.
https://habr.com/ru/companies/ruvds/articles/900148/
👉 @i_odmin
🌐 OSPF или ISIS: машрутизация между зонами. Как разработать этот функционал и не ошибиться?
Понимание принципов работы маршрутизации между зонами позволяет на качественно новом уровне рассмотреть работу протоколов маршрутизации OSPF и IS-IS, работающих на основе информации о топологии сети и используемых внутри автономных систем (доменов маршрутизации).
Также сравнение отличий в реализации маршрутизации между зонами позволяют выявить ограничения в использовании того либо иного протокола.
На уроке:
- Рассмотрим, как реализована маршрутизация между зонами в OSPF
- Узнаем, как реализована маршрутизация между зонами в ISIS
- Реализуем на практике маршрутизацию между зонами в сети с использованием одного из современных протоколов маршрутизации
👉 Регистрация и подробности о курсе Network Engineer. Professional: https://vk.cc/cLGYNg
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576, www.otus.ru
💡 Bash-совет дня: Мониторинг открытых портов с выводом в Telegram
Автоматизируй контроль за безопасностью своего сервера! Этот простой bash-скрипт проверяет изменения в открытых портах и шлёт уведомление в Telegram, если появились новые или исчезли старые порты.
#!/bin/bash
# Настройки
TG_TOKEN="your_bot_token"
TG_CHAT_ID="your_chat_id"
PORTS_FILE="/var/tmp/open_ports_last.txt"
# Получаем текущие открытые порты
ss -tuln | awk 'NR>1 {print $5}' | cut -d: -f2 | sort -n | uniq > /tmp/open_ports_now.txt
# Если нет предыдущего файла — создаём
if [ ! -f "$PORTS_FILE" ]; then
cp /tmp/open_ports_now.txt "$PORTS_FILE"
exit 0
fi
# Сравниваем с предыдущим состоянием
DIFF=$(diff -u "$PORTS_FILE" /tmp/open_ports_now.txt)
# Если есть изменения — шлём в Telegram
if [ -n "$DIFF" ]; then
MESSAGE="⚠️ Обнаружены изменения в открытых портах:\n\`\`\`\n$DIFF\n\`\`\`"
curl -s -X POST "https://api.telegram.org/bot$TG_TOKEN/sendMessage" \
-d chat_id="$TG_CHAT_ID" \
-d parse_mode="Markdown" \
-d text="$MESSAGE"
cp /tmp/open_ports_now.txt "$PORTS_FILE"
fi
# Уборка
rm -f /tmp/open_ports_now.txt
your_bot_token
и your_chat_id
на свои значения.
*/10 * * * * /path/to/script.sh
Основы компьютерной безопасности
Лекция 1. Основы криптографии
Практика 1. Криптография и её прикладные инструменты
Лекция 2. Основы сетей
Лекция 3. Основы веба
Практика 2. Основы веба
Лекция 4. Атаки на веб
Лекция 5. Безопасность беспроводных сетей Wi-Fi + воркшоп / Wireless security
Лекция 6. Прикладная криптография для самых маленьких. Менеджеры паролей, HTTPS, SSH
источник
👉 @i_odmin
🎯 Основные компоненты системы на базе Linux
1️⃣ Начальный загрузчик — GRUB
Запускается при старте компьютера и загружает ядро системы.
2️⃣ Ядро Linux
Сердце системы: управляет ресурсами, оборудованием и процессами.
3️⃣ Демоны (Daemons)
Фоновые службы, запускаемые при загрузке системы (например, cron
, systemd
).
4️⃣ Командная оболочка (Shell)
Интерфейс между пользователем и системой. Примеры: bash
, zsh
.
5️⃣ Утилиты командной строки
Набор инструментов для работы в терминале: ls
, cp
, grep
, top
и т.д.
6️⃣ Графический сервер
Компонент, управляющий отображением интерфейса (например, X11
, Wayland
).
Работает с видеокартой, мышью, монитором.
7️⃣ Среда рабочего стола
Графический интерфейс пользователя: KDE
, GNOME
, XFCE
и др.
Включает в себя окна, панели, файловые менеджеры и пр.
8️⃣ Программы рабочего стола
Браузеры, текстовые редакторы, почтовые клиенты — всё, что делает Linux удобным для пользователя.
👉 @i_odmin
Столкнулись с падением производительности базы данных?
Не делайте резких движений: вы можете ухудшить ситуацию.
Сначала нужно верно диагностировать причину проблемы.
Возможно вы неправильно выбрали индексы, а быть может дело вообще в самой архитектуре БД – вариантов масса!
На открытом вебинаре «Как ускорить работу и повысить надёжность PostgreSQL»
вы узнаете:
🎯как обеспечить высокую производительность и отказоустойчивость базы данных
🎯как вовремя выявить деградацию производительности с помощью диагностики
Вебинар проведёт Дмитрий Золотов, Kotlin-разработчик в «Яндексе».
Приглашаем технических руководителей, админов БД, девопсов и разработчиков.
Все участники получат в подарок видеоурок «Безопасность в PostgreSQL: защита данных, управление доступом и аудит» и скидку 7% на любой курс OTUS.
6 мая, 19:00 МСК
Бесплатно
Записаться - https://otus.pw/eioB/
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963. erid: 2W5zFJR7f84
Команда grep
используется в Unix/Linux для поиска строк, соответствующих регулярному выражению, в одном или нескольких файлах или потоках ввода.
Синтаксис:
grep [опции] ПАТТЕРН [ФАЙЛ...]
grep "ошибка" журнал.txt
журнал.txt
.
grep -i "ошибка" журнал.txt
grep -r "TODO" ./src
src
.
grep -o "http[s]\?://[^ ]\+"
grep -n "ошибка" журнал.txt
grep -v "успешно" журнал.txt
grep -E "foo|bar" файл.txt
grep --color "pattern" файл.txt