Системный администратор
26.4K subscribers
3.06K photos
3K videos
208 files
3.29K links
Все для системного администратора.

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

РКН clck.ru/3KoDXp
Download Telegram
Было / стало

📲 Мы в MAX

👉 @i_odmin
👍31🔥6❤‍🔥3🥴211😁1🤩1😍1
Шпаргалка по systemd

Управление состояниями системы:

1. Перезагрузка системы:

systemctl reboot


2. Выключение системы:

systemctl poweroff


3. Перевести систему в спящий режим:

systemctl suspend


4. Перевести систему в гибернацию:

systemctl hibernate


5. Перевести систему в гибридный режим сна:

systemctl hybrid-sleep


Работа с юнит-файлами:

1. Показать путь к юнит-файлу службы:

systemctl show -p FragmentPath <имя_сервиса>


2. Редактирование юнит-файла службы:

systemctl edit <имя_сервиса>


Команда откроет конфигурацию в редакторе. Можно использовать флаг --full для редактирования полной версии юнит-файла.

3. Переактивация всех юнитов после изменений:

systemctl daemon-reload


4. Показать конфигурацию службы:

systemctl cat <имя_сервиса>


5. Показать все зависимости службы:

systemctl list-dependencies <имя_сервиса>


Логи:

1. Просмотр логов службы:

journalctl -u <имя_сервиса>


2. Просмотр системных логов с конца:

journalctl -e


3. Просмотр логов для текущей сессии:

journalctl -b


4. Просмотр логов ядра:

journalctl -k


Другие полезные команды:

1. Получить статус загрузки:

systemctl is-system-running


2. Перевести систему в однопользовательский режим (rescue mode):

systemctl rescue


3. Перевести систему в режим восстановления (emergency mode):

systemctl emergency


Описание формата юнит-файлов:

Юнит-файлы обычно хранятся в /etc/systemd/system/ или /lib/systemd/system/.

- [Unit] — Определяет общие атрибуты юнита, такие как описание и зависимости.
- [Service] — Конфигурация для сервисов, например, что запускать (`ExecStart=`) и как управлять процессом.
- [Install] — Настройки для включения или отключения юнита при загрузке.

Пример юнит-файла:

[Unit]
Description=Пример сервиса
After=network.target

[Service]
ExecStart=/usr/bin/пример-программы
Restart=on-failure

[Install]
WantedBy=multi-user.target


📲 Мы в MAX

👉 @i_odmin
👍81🔥1
Media is too big
VIEW IN TELEGRAM
Настройка двух интернет-провайдеров на MikroTik с резервированием

В данном видео мы настроим два интернет-провайдера на MikroTik и реализуем автоматическое переключение с одного провайдера на другой в случае недоступности первого.

00:00 Вступление
00:58 Настройка основного интернета
05:01 Настройка резервного интернета
06:39 Ручное переключение
09:13 Автоматическое переключение
10:02 Добавляем маршрут
11:16 Netwatch
11:57 Пишем команды
14:07 Проверка работы
15:28 Важный нюанс

источник

📲 Мы в MAX

👉 @i_odmin
👍91
🧠 RegExp: Как найти строки с IP-адресами в логах

Частая задача — выцепить IP-адреса из логов. Вот регулярка и однострочник, которые помогут:


grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/log/nginx/access.log


📌 Что делает:
- -Eo — включаем расширенные регулярки и выводим только совпадения
- ([0-9]{1,3}\.){3}[0-9]{1,3} — шаблон для IPv4-адресов

💡 Можно дополнительно убрать дубликаты и отсортировать по частоте:


grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head


🚀 Покажет топ IP-адресов по количеству обращений — удобно для анализа трафика и выявления подозрительной активности.

📲 Мы в MAX

👉 @i_odmin
👍5🔥4
alias — команда, позволяющая создавать более краткие или более привычные псевдонимы для часто используемых команд

Команда alias позволяет всего лишь связать псевдоним с произвольной командой. Механизм псевдонимов позволяет устанавливать более короткие или привычные имена для часто используемых команд. Еще одним преимуществом данного механизма является возможность использования в составе псевдонимов аргументов команд. Впервые данный механизм был реализован в рамках командной оболочки csh, после чего он был перенесен в такие командные оболочки, как bash и другие.

Синтаксис команды для установки псевдонима зависит от используемой командной оболочки. В случае командных оболочек, основанных на Bourne shell (ksh, bash, и других, но не sh), синтаксис является следующим:

$ alias <псевдоним>=<команда>

В том случае, если при вызове команды должна осуществляться передача аргументов, следует использовать одинарные или двойные кавычки:

$ alias <псевдоним>="<команда> <аргумент> ..."

В случае же командных оболочек, основанных на csh (csh, tcsh и других), кавычки не требуются:

$ alias <псевдоним> <команда> [аргументы …]

Несложно заметить, что главное отличие в данном случае заключается в использовании знака равенства и необходимости использования кавычек. При вызове команды alias без аргументов будет выведен список объявленных в текущее время псевдонимов.

После установки псевдоним будет работать лишь в рамках текущей сессии командной оболочки. Для того, чтобы активировать этот псевдоним на постоянной основе, вам придется добавить его в один из файлов конфигурации используемой в текущее время командной оболочки. В случае командной оболочки bash псевдонимы для отдельных пользователей чаще всего размещаются в файле конфигурации ~/.bashrc, а общесистемные псевдонимы — в файле конфигурации /etc/profile. В случае командной оболочки tcsh аналогичными файлами конфигурации являются файлы ~/.tcshrc и /etc/login соответственно.

Примеры
Простой псевдоним для пользователей операционной системы DOS:

$ alias dir="ls -l"

А это пример более сложного псевдонима:

$ alias topcom='sort ~/.bash_history | uniq -ci | sort -r | less'

Данный псевдоним упрощает обращение к списку наиболее часто используемых команд и может стать шаблоном для новых псевдонимов.

А это еще один пример псевдонима для ознакомления со списком смонтированных дисковых разделов:

$ alias mnt='mount | grep -i /dev/[h]d[a..g] | sort'

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

Например, даже такая простая функция, как

$ bak () { cp -a $1 $1.bak }

не может быть преобразована в псевдоним из-за использования переменной "$1".

Установка псевдонима на постоянной основе
Для установки псевдонима на постоянной основе для всех пользователей, всех командных оболочек (ksh, bash, …) и всех типов командных оболочек (использующихся и не использующихся для входа в систему) вам придется:

- модифицировать файл конфигурации /etc/profile для командных оболочек, использующихся для входа в систему
- модифицировать файл конфигурации /etc/bash_bashrc для командных оболочек, не использующихся для входа в систему

Деактивация псевдонима
Используйте команду unalias.

📲 Мы в MAX

👉 @i_odmin
👍7🤔1
🚀 Подборка полезных IT каналов в Max


Системное администрирование, DevOps 📌

https://max.ru/i_odmin Все для системного администратора
https://max.ru/bash_srv Bash Советы
https://max.ru/sysadminof Книги для админов, полезные материалы
https://max.ru/i_odmin_book Библиотека Системного Администратора
https://max.ru/i_devops DevOps: Пишем о Docker, Kubernetes и др.
https://max.ru/tipsysdmin Типичный Сисадмин

1C разработка 📌
https://max.ru/odin1c_rus Cтатьи, курсы, советы, шаблоны кода 1С

Программирование C++📌

https://max.ru/cpp_lib Библиотека C/C++ разработчика

Программирование Go📌
https://max.ru/golang_lib Библиотека Go (Golang) разработчика

Программирование React📌
https://max.ru/react_lib React

Программирование Python 📌
https://max.ru/python_of Python академия.
https://max.ru/BookPython Библиотека Python разработчика

Java разработка 📌
https://max.ru/bookjava Библиотека Java разработчика

GitHub Сообщество 📌
https://max.ru/githublib Интересное из GitHub

Базы данных (Data Base) 📌
https://max.ru/database_info Все про базы данных

Фронтенд разработка 📌
https://max.ru/frontend_1 Подборки для frontend разработчиков

Библиотеки 📌
https://max.ru/programmist_of Книги по программированию
https://max.ru/proglb Библиотека программиста
https://max.ru/bfbook Книги для программистов

Программирование 📌
https://max.ru/bookflow Лекции, видеоуроки, доклады с IT конференций
https://max.ru/itmozg Программисты, дизайнеры, новости из мира IT
https://max.ru/php_lib Библиотека PHP программиста 👨🏼‍💻👩‍💻

Шутки программистов 📌
https://max.ru/itumor Шутки программистов

Защита, взлом, безопасность 📌
https://max.ru/thehaking Канал о кибербезопасности
https://max.ru/xakkep_1 Хакер Free

Книги, статьи для дизайнеров 📌

https://max.ru/odesigners Статьи, книги для дизайнеров

Математика 📌
https://max.ru/Pomatematike Канал по математике
https://max.ru/phismat_1 Обучающие видео, книги по Физике и Математике

Вакансии 📌
https://max.ru/progjob Вакансии в IT

Мир технологий 📌
https://max.ru/mir_teh Канал для любознательных


Бонус 📌
https://max.ru/piterspb_78 Свежие новости Санкт-Петербурга
https://max.ru/mockva_life Свежие новости Москвы
🤮21🤡6💩21👍1👎1
📂 Как найти количество открытых файлов в Linux

🔹 Проверка общего количества открытых файлов:

lsof | wc -l

- lsof — выводит список всех открытых файлов.
- wc -l — считает количество строк (то есть файлов).


🔹 Количество открытых файлов процессом:

lsof -p <PID> | wc -l

- <PID> — ID интересующего процесса.

Чтобы узнать PID процесса:

ps aux | grep <имя_процесса>



🔹 Использование /proc:

ls /proc/<PID>/fd | wc -l

- /proc/<PID>/fd — каталог с дескрипторами открытых файлов процесса.


🔹 Сводка по всему серверу через /proc:

ls /proc/*/fd 2>/dev/null | wc -l

- Показывает общее количество всех открытых файлов на сервере.


🔹 Ограничения (лимиты) на количество открытых файлов:
- Для текущей сессии:

ulimit -n

- Системные лимиты:

cat /proc/sys/fs/file-max

- Использование и максимальное значение:

cat /proc/sys/fs/file-nr

Расшифровка file-nr:
- 1-е число — открытые дескрипторы файлов,
- 2-е число — дескрипторы в очереди освобождения,
- 3-е число — максимальное количество дескрипторов.


🔹 Проверка лимитов процесса:

cat /proc/<PID>/limits | grep "open files"



⚙️ Быстрые советы:
- Если приближается к лимиту — увеличивайте значение через /etc/security/limits.conf.

📲 Мы в MAX

👉 @i_odmin
👍43
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21
Media is too big
VIEW IN TELEGRAM
Протокол TCP

00:00 - Варианты подтверждения доставки в TCP
00:54 - Остановка и ожидание
01:19 - Скользящее окно
01:42 - Почему выгодно использовать скользящее окно
03:45 - Как работает скользящее окно
05:31 - Типы подтверждений в TCP
07:11 - Итоги

источник

📲 Мы в MAX

👉 @i_odmin
👍4🔥1
Софт для VDS-сервера, на который стоит обратить внимание новичкам

Если вы арендовали свой первый VDS-сервер и не знаете, с чего начать, это нормально — поначалу всё может казаться сложным: терминал, настройки, безопасность… Чтобы упростить старт, я собрал список утилит, которые стоит установить в первую очередь. Они помогут настроить сервер под ваши задачи, повысят удобство его использования и защитят от потенциальных угроз.

https://habr.com/ru/companies/ruvds/articles/902596/

📲 Мы в MAX

👉 @i_odmin
👍9🔥6
💻 Полезные команды Linux. Корректное выключение, перезагрузка и выход из системы


🔌 Выключение системы:


sudo shutdown -h now


> Немедленно завершить работу системы.


sudo shutdown -h +10 "Выключение через 10 минут"


> Запланированное выключение с сообщением.


sudo poweroff


> Альтернатива shutdown -h now, завершает работу и отключает питание.



🔄 Перезагрузка:


sudo reboot


> Стандартная перезагрузка.


sudo shutdown -r now


> Немедленная перезагрузка.


sudo systemctl reboot


> Современный способ на системах с systemd.



🚪 Выход из текущей сессии:


exit


> Завершение текущей shell-сессии (для терминала).


logout


> Выход из системы, если вы вошли через консоль.



💡 Быстрые подсказки:

* -h = halt (выключить)
* -r = reboot (перезагрузить)
* +минуты — отложенное действие
* wall — отправка сообщения всем пользователям

📲 Мы в MAX

👉 @i_odmin
👍4
Shell скрипт для управления Linux- пользователями

Функциональные возможности

Создание пользователей
Просмотр списка существующих пользователей
Сброс пароля для существующих пользователей
Блокировка / Разблокировка пользовтеля
Просмотр всех заблокированных пользователей
Создание резервной копии домашнего каталога пользователя
Генерирование SSH ключей для пользователя
Повышение пользователя до админа и обратно
Удаление пользователя
Запись всех действий в журнал actions.log

Резервные копии
Скрипт создает каталог резервных копий в папке скрипта и создает архив tar.gz с именем, содержащим - имя пользователя и текущую дату

Генерация SSH ключа
Для генерации используется ssh-keygen, в результате будут отображены сведения о том, куда был сохранен ключ и отображено содержимое публичного ключа:

https://github.com/m0zgen/user-manager

📲 Мы в MAX

👉 @i_odmin
👍6🔥2
Команда grep используется в Unix/Linux для поиска строк, соответствующих регулярному выражению, в одном или нескольких файлах или потоках ввода.

Синтаксис:


grep [опции] ПАТТЕРН [ФАЙЛ...]


Примеры использования:

1. Поиск строки в файле:


grep "ошибка" журнал.txt


Ищет строки, содержащие слово "ошибка" в файле журнал.txt.

2. Игнор регистра:


grep -i "ошибка" журнал.txt


Найдёт "ошибка", "Ошибка", "ОШИБКА" и т.д.

3. Рекурсивный поиск по директории:


grep -r "TODO" ./src


Ищет слово "TODO" во всех файлах внутри каталога src.

4. Вывод только совпавших частей (без всей строки):


grep -o "http[s]\?://[^ ]\+"


Ищет URL в потоке ввода.

5. Показать номера строк:


grep -n "ошибка" журнал.txt


6. Инвертированный поиск (показать строки без совпадений):


grep -v "успешно" журнал.txt


7. Использование регулярных выражений (расширенные):


grep -E "foo|bar" файл.txt


8. Поиск с подсветкой результата:


grep --color "pattern" файл.txt


📲 Мы в MAX

👉 @i_odmin
👍8🔥21
Депутат Госдумы Гусев предложил создать список «белых VPN»

В Государственной думе поступило предложение о формировании перечня одобренных VPN-протоколов. Эти технологические решения должны обеспечивать функционирование коммерческих организаций и государственных структур.

С данным предложением выступил депутат Дмитрий Гусев. По его утверждению, VPN является основной технологией для обеспечения безопасности информации. Крупные компании и некоторые государственные системы используют её в своей деятельности. Дополнительно он предложил обеспечивать доступ к мобильной сети тем людям, которые имеют подтверждённую учётную запись на портале «Госуслуги». Также депутат считает необходимым составить список российских хостинг-провайдеров, которые заслуживают доверия.

И возникают вопросы о том, является ли это решение способом согласования интересов защиты данных и доступа к ресурсам или методом усиления надзорных функций.

Как вам такая инициатива?

📲 Мы в MAX

👉 @i_odmin
🤬22🤡15🖕32👍1😁1
Подборка хаков с grep для продвинутых


🔥 1. Поиск в архивированных логах


zgrep "CRITICAL" /var/log/syslog.3.gz


Использует zgrep, аналог grep, работающий с .gz - архивами.



🎯 2. Поиск точного слова, а не подстроки


grep -w "main" код.c


Найдёт main, но не domain или maintain.



🌈 3. Подсветка совпадений


grep --color=always "TODO" файл.txt


Цветовая подсветка совпадений, особенно удобно с less -R.



🧱 4. Исключение некоторых папок при рекурсивном поиске


grep -r --exclude-dir={.git,node_modules} "token" .


Пропускает указанные директории.



🚦 5. Только совпадения (без всей строки)


grep -oE "ID-[0-9]{4}" журнал.log


Выдаст только совпавшие фрагменты, например: ID-1234.



🔁 6. Найти строки, идущие ПЕРЕД или ПОСЛЕ совпадения


grep -A3 "panic" системный_лог.txt # 3 строки после
grep -B2 "panic" системный_лог.txt # 2 строки до
grep -C5 "panic" системный_лог.txt # 5 строк до и после




🧪 7. Поиск по нескольким шаблонам сразу


grep -E "ERROR|WARN|FATAL" журнал.log


Или так, с отдельным шаблонным файлом:


grep -f patterns.txt журнал.log


Где patterns.txt содержит:


ERROR
WARN
FATAL




👁 8. Найти только имена файлов с совпадением


grep -rl "import numpy" .


Удобно для массовой рефакторинга или аудита.



🧹 9. Удалить лишний мусор из grep - вывода


grep "Session" журнал.log | cut -d' ' -f2- | sort | uniq


Например, выводим только нужные поля, убираем повторы.



⚙️ 10. Использование grep в пайплайне для live-аналитики


tail -f /var/log/nginx/access.log | grep --line-buffered "404"


Реальное время: мониторинг 404 ошибок на веб-сервере.

📲 Мы в MAX

👉 @i_odmin
👍6🔥2👎1
Часто JSON в базе становится компромиссом: удобно хранить, но сложно быстро читать и индексировать.

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

Если вы работаете с динамическими данными и хотите делать это без потери производительности — подключайтесь.

На открытом уроке разберём:
- как устроен JSONB внутри PostgreSQL
- какие индексы реально ускоряют запросы
- как писать SQL, который работает на больших объёмах
- покажем практические сценарии: конфиги, события, генерация JSON-ответов прямо в базе

📌 Встречаемся 5 мая в 20:00 МСК, регистрация открыта: https://vk.cc/cX0EkF

Урок проходит в преддверии старта курса «PostgreSQL для администраторов баз данных и разработчиков». Скидка на ранее бронирование курса 15% - все подробности у менеджера.

Реклама. ООО «Отус онлайн‑образование», ОГРН 1177746618576
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Подборка часто используемых команд для первоначальной настройки устройств 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

📲 Мы в MAX

👉 @i_odmin
👍8🔥31
Интернет для избранных, рынок для своих: как Минцифры готовит зачистку связи в России

На Хабре вышел материал о том, что под видом новой системы лицензирования рынок связи могут серьезно перекроить в пользу крупных игроков. Автор считает, что больше всего пострадают небольшие региональные провайдеры — те, кто часто держит интернет в посёлках, райцентрах и малых городах.

Если малых операторов начнут выдавливать с рынка, это приведёт не к «порядку», а к снижению конкуренции, ухудшению сервиса и росту зависимости регионов от нескольких федеральных гигантов. В статье подчёркивается, что именно местные компании нередко быстрее чинят аварии, лучше знают территорию и работают там, куда крупному бизнесу идти просто невыгодно.

Что это значит на практике:
— в небольших населённых пунктах связь может стать хуже;
— сроки устранения аварий могут вырасти;
— у людей и бизнеса станет меньше выбора;
— крупным игрокам будет проще диктовать цены и условия.

Автор называет происходящее не модернизацией, а «зачисткой» рынка, и предупреждает: если законопроект примут в таком виде, последствия затронут не только операторов, но и обычных пользователей, предпринимателей и целые регионы. Сейчас документ ещё в стадии разработки, и именно поэтому дискуссия особенно важна.

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

♻️ Сделай репост, чтобы помочь другим.

📲 Мы в MAX

👉 @i_odmin
Please open Telegram to view this post
VIEW IN TELEGRAM
🤬18🖕31💯1🤣1🦄1