Прозрачное программное обеспечение: Безопасность цепочек поставок ПО
Авторы знакомят нас с основными векторами атак, такими как мобильные и социальные сети, банковские системы и системы розничной торговли и даже критически важные инфраструктуры, а также с системами защиты, на которые мы все полагаемся.
Вы узнаете, как защититься от угроз, и познакомитесь с практическими рекомендациями как для потребителей, так и для поставщиков ПО. «Прозрачное программное обеспечение» — ценный источник знаний для специалистов по кибербезопасности и безопасности приложений, а также для профессионалов, работающих в области безопасности промышленных систем управления, облачной безопасности, мобильной безопасности, DevOps и DevSecOps.
Автор: Крис Хьюз, Тони Тернер
Год: 2025
📂 Скачать книгу
👉 DevOps Portal | #книги
Авторы знакомят нас с основными векторами атак, такими как мобильные и социальные сети, банковские системы и системы розничной торговли и даже критически важные инфраструктуры, а также с системами защиты, на которые мы все полагаемся.
Вы узнаете, как защититься от угроз, и познакомитесь с практическими рекомендациями как для потребителей, так и для поставщиков ПО. «Прозрачное программное обеспечение» — ценный источник знаний для специалистов по кибербезопасности и безопасности приложений, а также для профессионалов, работающих в области безопасности промышленных систем управления, облачной безопасности, мобильной безопасности, DevOps и DevSecOps.
Автор: Крис Хьюз, Тони Тернер
Год: 2025
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2
Комбайн для работы с архивами в консоли Linux
При работе с архивами в командной строке Linux есть одно неудобство: у каждой программы-архиватора свой набор ключей, который необходимо помнить, либо постоянно заглядывать в man. Эта проблема легко решается, если использовать утилиту atool, так как с ее помощью вы сможете работать с любым форматом архивов.
1️⃣ Установка atool
Программу можно скачать с официальной страницы, либо установив с помощью пакетного менеджера вашего дистрибутива:
2️⃣ Создание архивов
Для создания архива используется команда:
Создать несколько архивов можно вот так:
3️⃣ Просмотр архивов
Что бы просмотреть содержимое архива введите
4️⃣ Распаковка архивов
Для распаковки архива используется команда
5️⃣ Перепаковка архивов
atool также можно использовать для перепаковки архивов в другой формат. Это делается командой
6️⃣ Сравнение архивов
Сравнить два архива можно командой
7️⃣ Единая команда
Вместо всех этих команд возможно использовать команду atool с соответствующим ключем:
Заключение
Как вы могли увидеть, atool это очень простая и, в то же время, мощная программа. Разобравшись с ней один раз вы больше не будете испытывать проблем с запоминанием ключей для множества консольных архиваторов🎹
👉 DevOps Portal
При работе с архивами в командной строке Linux есть одно неудобство: у каждой программы-архиватора свой набор ключей, который необходимо помнить, либо постоянно заглядывать в man. Эта проблема легко решается, если использовать утилиту atool, так как с ее помощью вы сможете работать с любым форматом архивов.
Программу можно скачать с официальной страницы, либо установив с помощью пакетного менеджера вашего дистрибутива:
sudo apt install atool (Debian/Ubuntu/Linux Mint)
sudo dnf install atool (Fedora)
sudo pacman -S atool (Archlinux)
Для создания архива используется команда:
apack имя_архива.формат [список_файлов]
К примеру, командаapack backup.tgz first second third
создаст в текущей директории архив backup.tgz и запакует в него файлы first, second и third. Причём формат создаваемого архива автоматически определяется из имени.Создать несколько архивов можно вот так:
apack -e -F .tar.gz dir1 dir2 dir3
В этом примере три директории dir будут упакованы в три разных архива. Ключ -e означает выполнять команду отдельно для каждого аргумента, ключ -F указывает формат создаваемых архивов. Подобным образом эти ключи действуют и в других командах, как будет показано ниже.Что бы просмотреть содержимое архива введите
als имя_архива
Просмотреть содержимое нескольких архивов:als -e *.tgz
Что бы вывести на экран содержимое файла, находящегося в архиве, можно использовать командуacat имя_архива имя_файла_в_архиве
Для распаковки архива используется команда
aunpack имя_архива [имя_файла_в_архиве]
Если в архиве содержится всего один файл, то он будет распакован в текущую директорию. Если же файлов несколько, то будет создана директория совпадающая с именем архива и файлы распакуются в неё. Если вам нужно распаковать архив в другую директорию, то можете её указать после ключа -X:aunpack -X /tmp archive.zip
Распаковать несколько архивов можно указав ключ -e:aunpack -e *.tar.gz
atool также можно использовать для перепаковки архивов в другой формат. Это делается командой
arepack старый_архив новый_архив
При этом старый архив не удаляется. Если вам необходимо перепаковать несколько архивов RAR в формат 7Z, то можно использовать следующую командуarepack -F .7z -e *.rar
Сравнить два архива можно командой
adiff архив1 архив2
atool использует программу diff для сравнения файлов.Вместо всех этих команд возможно использовать команду atool с соответствующим ключем:
atool -l вместо als
atool -x вместо aunpack
atool -a вместо apack
atool -c вместо acat
atool -d вместо adiff
atool -r вместо arepack
Возможно, такой вариант кому-то покажется предпочтительным.Заключение
Как вы могли увидеть, atool это очень простая и, в то же время, мощная программа. Разобравшись с ней один раз вы больше не будете испытывать проблем с запоминанием ключей для множества консольных архиваторов
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥7
Как разделить большой файл на маленькие части и потом их объединить?
Иногда файлы становятся слишком громоздкими, и деление их на удобные кусочки становится необходимостью. Сегодня мы расскажем вам о команде split, которая поможет сделать это быстро и просто.
📂 Как разделить файл на части:
В этой команде:
-
-
-
🧩 Как объединить файлы в один:
📄 Как разбить текстовый файл по строкам:
Если вам нужно разделить текстовый файл, на несколько файлов по количеству строк, то мы можем использовать команду split с опцией -l, которая задает количество строк в каждом файле, на которые мы разбиваем исходный файл.
Мы разделили исходный текстовый файл, на файлы по 1000 строк в каждом. Объединение файлов выполняется также, как описано в предыдущем пункте.
Заключение
Мы рассмотрели простейшие способы разделения файла на несколько частей с использованием командной строки.
Для разделения файлов используется команда split. Для объединения файлов мы использовали команду cat.
Чтобы получить более подробную информацию по команде split, выполните в терминале:
Так что, не бойтесь работать с большими данными в Linux!💪
👉 DevOps Portal
Иногда файлы становятся слишком громоздкими, и деление их на удобные кусочки становится необходимостью. Сегодня мы расскажем вам о команде split, которая поможет сделать это быстро и просто.
split --bytes=1024M file.mkv file.part.
В этой команде:
-
file.mkv — имя вашего большого файла.-
file.part. — префикс для имен файлов-частей (например, file.part.aa, file.part.ab и так далее).-
--bytes=1024M — размер каждой части (здесь мы выбрали 1024 мегабайта).🧩 Как объединить файлы в один:
cat file.part.* > file.mkv
Если вам нужно разделить текстовый файл, на несколько файлов по количеству строк, то мы можем использовать команду split с опцией -l, которая задает количество строк в каждом файле, на которые мы разбиваем исходный файл.
split -l 1000 textfile.txt textfile.part.
Мы разделили исходный текстовый файл, на файлы по 1000 строк в каждом. Объединение файлов выполняется также, как описано в предыдущем пункте.
Заключение
Мы рассмотрели простейшие способы разделения файла на несколько частей с использованием командной строки.
Для разделения файлов используется команда split. Для объединения файлов мы использовали команду cat.
Чтобы получить более подробную информацию по команде split, выполните в терминале:
man split
Так что, не бойтесь работать с большими данными в Linux!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🤯1
Привилегированные порты
Привилегированные порты - сетевые порты, номера которых находятся в диапазоне от 0 до 1023. Они так называются, поскольку только процессы, выполняемые с правами root user могут быть привязаны к ним. Обычным пользователям запрещено привязываться к таким портам.
Их концепция основана на безопасности и контроле доступа. Резервируя эти меньшие номера портов для процессов с привилегиями root, операционная система гарантирует, что только авторизованные и доверенные приложения могут прослушивать эти порты, которые обычно связаны с важными сетевыми службами.
Если вы хотите проверить, открыт или закрыт удаленный порт, вы можете использовать команду nmap:
👉 DevOps Portal
Привилегированные порты - сетевые порты, номера которых находятся в диапазоне от 0 до 1023. Они так называются, поскольку только процессы, выполняемые с правами root user могут быть привязаны к ним. Обычным пользователям запрещено привязываться к таким портам.
Их концепция основана на безопасности и контроле доступа. Резервируя эти меньшие номера портов для процессов с привилегиями root, операционная система гарантирует, что только авторизованные и доверенные приложения могут прослушивать эти порты, которые обычно связаны с важными сетевыми службами.
Если вы хотите проверить, открыт или закрыт удаленный порт, вы можете использовать команду nmap:
nmap -p <port_number> <host_or_ip>Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥4🤔1
Flatpak - это отличный способ установки и управления приложениями в Linux. Вот пять команд, которые помогут вам мастерски обращаться с Flatpak через терминал:
sudo apt install flatpak # для Ubuntu/Debian
sudo dnf install flatpak # для Fedora
sudo pacman -S flatpak # для Archlinux
При этом, стоит помнить, что большинство современных Linux-дистрибутивов имеют встроенную поддержку Flatpak. К таким относятся, например, Fedora, Manjaro, Linux Mint.
flatpak install название-приложения
Где взять название приложения? Переходим на сайт Flathub и выбираем то, что нужно. После нажатия кнопки Install, появится команда для ввода в терминал (также доступно скачивание установочного пакета, но менеджер приложений вашего дистрибутива должен уметь работать с такими пакетами), где и будет название приложения. Нет желания рыскать по сайтам? Смотрите команду №4.
flatpak update
flatpak search ключевое-слово
flatpak uninstall название-приложения
Если при этом вы забыли опять-таки имя приложения, то можете воспользоваться бонусной командой №6 😏
flatpak list
Эти команды сделают работу с Flatpak в терминале максимально удобной и эффективной
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15😁2🤯1
Пять GitHub проектов, которые помогут вам стать лучшим инженером DevOps
1️⃣ How they SRE
Подборка общедоступных ресурсов о том, как технологические и технически подкованные организации по всему миру практикуют Site Reliability Engineering (SRE).
▶️ https://github.com/upgundecha/howtheysre
2️⃣ Awesome Scalability
Паттерны масштабируемых, надежных и производительных крупномасштабных систем
▶️ https://github.com/binhnguyennus/awesome-scalability
3️⃣ DevOps Exercises
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. Вопросы для интервью по DevOps
▶️ https://github.com/bregman-arie/devops-exercises
4️⃣ Test your sysadmin skills
Сборник тестовых вопросов и ответов по Linux Sysadmin. Проверьте свои знания и навыки в различных областях с помощью этих вопросов и ответов.
▶️ https://github.com/trimstray/test-your-sysadmin-skills
5️⃣ Awesome Site Reliability Engineering
Составленный список ресурсов по надежности сайта и производственному инжинирингу.
▶️ https://github.com/dastergon/awesome-sre
👉 DevOps Portal | #ресурсы
Подборка общедоступных ресурсов о том, как технологические и технически подкованные организации по всему миру практикуют Site Reliability Engineering (SRE).
Паттерны масштабируемых, надежных и производительных крупномасштабных систем
Linux, Jenkins, AWS, SRE, Prometheus, Docker, Python, Ansible, Git, Kubernetes, Terraform, OpenStack, SQL, NoSQL, Azure, GCP, DNS, Elastic, Network, Virtualization. Вопросы для интервью по DevOps
Сборник тестовых вопросов и ответов по Linux Sysadmin. Проверьте свои знания и навыки в различных областях с помощью этих вопросов и ответов.
Составленный список ресурсов по надежности сайта и производственному инжинирингу.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍23❤1
Легкий путь обмена файлами: Transfer.sh для Linux-энтузиастов и системных администраторов
Transfer.sh — это очень удобная и простая штука, которая позволяет обмениваться файлами с помощью curl/wget. И да, это без регистрации и SMS. Лимиты весьма щедрые — до 10 гигабайт на файл, и ваши файлы хранятся на сервере в течение 14 дней.
Что еще круто? Вам доступна возможность зашифровать файл перед отправкой и даже проверить его на наличие вирусов. И вот что интересно: в команде curl можно указать дополнительные заголовки -H "Max-Downloads: 1" -H "Max-Days: 5". Это означает, что файл смогут скачать только один раз, и через пять дней он автоматически удалится. Удобно, правда?
Итак, вопрос — это же не слишком безопасно, так ведь? Да, вы абсолютно правы. Этот сервис подходит скорее для передачи некритичной информации. Не стоит использовать его для чего-то чрезвычайно секретного. Например, его могут использовать системные администраторы для передачи логов заказчикам.
Не забудьте заглянуть на сайт Transfer.sh и изучить все возможности, которые они предоставляют. Там есть много примеров, и вы быстро разберетесь
👉 DevOps Portal
Transfer.sh — это очень удобная и простая штука, которая позволяет обмениваться файлами с помощью curl/wget. И да, это без регистрации и SMS. Лимиты весьма щедрые — до 10 гигабайт на файл, и ваши файлы хранятся на сервере в течение 14 дней.
Что еще круто? Вам доступна возможность зашифровать файл перед отправкой и даже проверить его на наличие вирусов. И вот что интересно: в команде curl можно указать дополнительные заголовки -H "Max-Downloads: 1" -H "Max-Days: 5". Это означает, что файл смогут скачать только один раз, и через пять дней он автоматически удалится. Удобно, правда?
Итак, вопрос — это же не слишком безопасно, так ведь? Да, вы абсолютно правы. Этот сервис подходит скорее для передачи некритичной информации. Не стоит использовать его для чего-то чрезвычайно секретного. Например, его могут использовать системные администраторы для передачи логов заказчикам.
Не забудьте заглянуть на сайт Transfer.sh и изучить все возможности, которые они предоставляют. Там есть много примеров, и вы быстро разберетесь
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1
Важной составляющей работы с любого рода сервисами или приложениями является изучение логов, где отображается вся нужная информация, будь до ошибки или успешные авторизации или ответы сервера. При этом, не имеет значения являетесь ли вы системным администратором, разработчиком или обычным пользователем, который разворачивает в рамках домашней среды какой-либо сервис или приложение: логи нужны всем. Поэтому ниже расскажу про три команды для работы с логами в Linux, которые использую чаще всего. Но перед этим давайте узнаем где логи хранятся и какие они.
Естественно, место, где будут храниться логи можно определить самостоятельно через конфигурационные файлы. Но мы остановимся на классическом варианте - системной папке:
/var/log/...
Внутри нее могут располагаться как отдельные файлы-логи (имеющие расширение log), так и директории с названиями сервисов внутри которых находятся логи. Есть, естественно, исключения. Например, Docker. У него логи запущенных контейнеров находятся в другом месте:
/var/lib/docker/containers/<id_контейнера>/<id_контейнера>-json.log
Опять-таки, повторюсь, что чаще всего местоположение логов, заданное разработчиками программы или сервиса указывается в конфигурационных файлах и может, при желании, меняться пользователем. Системные логи, чаще всего, хранятся в /var/log.
Расскажу, опять-таки, про классическую схему того, какие логи бывают.
🔤 <имя_сервиса>.log - содержат данные обо всех взаимодействиях с сервисом (доступ, ошибки, информация и пр.)
Указанные имена логов являются стандартными, конкретный вариант уже зависит от того, как решили разработчики или пользователь. Используя конфигурационные файлы вы можете задать любое имя для файла с логами. Теперь уже перейдем к командам.
При использовании этой команды в терминал будет выведено все содержимое лога:
cat /var/log/<имя_лога>.log
Удобно, когда лог небольшой, в обратном случае вывод может занять длительное время.
Напомню, что команда tail выводит по-умолчанию 10 последних строк содержимого файла. Но при использовании ключа -f в выхлоп будут попадать строки лога в режиме реального времени.
tail -f /var/log/<имя_лога>.log
Удобно запустить такую команду и начать тестирование сервиса или программы, чтобы сразу видеть влетающую информацию.
Бывает так, что логи разрастаются до неимоверных размеров. Решается это настройкой так называемой ротации (про нее расскажу отдельно в следующий раз), но если лог разросся до размеров, которые нужно занулить здесь и сейчас, то указанная команда подойдет в самый раз:
echo -n > /var/log/<имя_лога>.log
Почему нельзя решить проблему простым удалением лога при помощи rm? Некоторые сервисы используют проверку наличия файла для записи лога и если он отсутствует, то считают это ошибкой и перестают работать. Поэтому вместо кажущегося очевидного удаления файла лога нужно его просто занулить.
Работа с логами не составляет каких-то сложностей. Помимо указанных выше команд можно использовать практически все другие инструменты, применяемые к работе с файлами в Linux. В логах можно искать информацию, сортировать ее вывод в терминал, применять редактор sed и так далее. Чтобы не утруждать пользователя или администратора просмотров логов вручную существуют автоматизированные системы сбора и обработки логов, которые позволяют собирать информацию сразу с нескольких серверов.
Поддержите пост лайком, если он оказался полезным 🤝
Please open Telegram to view this post
VIEW IN TELEGRAM
👍40❤3
Как вывести лог Docker за определенное время? 🗓
Чуть ранее мы говорили про работу с логами. В том сообщении я упоминал про Docker и то, что в его случае логи работы контейнеров хранятся в JSON-файлах и не совсем удобны для ознакомления. Особенно, если контейнер работает давно и за это время в логи нападало много всего и он весит под сотню мегабайт. Поэтому логичнее будет выводить содержимое лога Docker в отдельный файл и делать это за определенное время. Как? Расскажу ниже👇
1️⃣ Вывод списка запущенных контейнеров
Начнем с основной команды, которая позволяет вывести список запущенных контейнеров и получить о них основную информацию:
После ввода команды вы увидите удобный выхлоп, где нас интересует имя или ID нужного контейнера.
2️⃣ Вывод логов конкретного контейнера
Здесь есть два способа: менее удобный и совсем неудобный. Где какой решайте сами🤷♂️ Первый способ заиметь доступ к логу контейнера указан был в сообщении про работу с логами, где я указывал место хранения логов Docker:
Но, как говорилось ранее, вы получаете лютый JSON, где вообще ничего непонятно. Второй способ - использовать команду для вывода логов конкретного контейнера:
По сути, команда вываливает в терминал содержимое JSON-файла из способа №1. Что делать дальше с этой информацией решает каждый сам, кому-то может оно и поможет, ну а мы идем дальше...
3️⃣ Сохраняем логи за определенный период в отдельный файл
Совместим все, что узнали в пунктах выше и приправим ключом --since, который позволяет задать временной отрезок, с которого будет выведен лог. Вдобавок используя перенаправление вывода сохраним это все в отдельный файл, чтобы потом его изучить:
Данный пример выведет содержимое лога контейнера Docker за последний час. Ну а что делать, если нужно вывести данные с прошлого месяца? Все просто!
Здесь YYYY - год (2023, например), MM - месяц (09) и DD - день (21). Порядок идет именно такой, так как все эти ваши европейцы и американцы, создавшие Linux и большую часть того, что связано с программированием, используют такой формат даты. Всю эту информацию перенаправляем в файл с расширением log, который потом можно использовать как душе угодно.
4️⃣ Добавляем временную метку в логи
Но даже после использования команды в п. 3 у вас получится файл, в котором все будет в кучу и не поймешь когда и во сколько какое событие, описанное в логе произошло. Поэтому нужно добавить временную метку, делается это при помощи ключа -t.
Вот теперь-то вы получите информативный лог о том, что происходило с вашим сервисом внутри контейнера!
Полученную в конце команду вы можете использовать вместе с сервисом Transfer.sh, чтобы без лишней головомойки делиться логами с кем нужно
👉 DevOps Portal
Чуть ранее мы говорили про работу с логами. В том сообщении я упоминал про Docker и то, что в его случае логи работы контейнеров хранятся в JSON-файлах и не совсем удобны для ознакомления. Особенно, если контейнер работает давно и за это время в логи нападало много всего и он весит под сотню мегабайт. Поэтому логичнее будет выводить содержимое лога Docker в отдельный файл и делать это за определенное время. Как? Расскажу ниже
Начнем с основной команды, которая позволяет вывести список запущенных контейнеров и получить о них основную информацию:
docker ps
После ввода команды вы увидите удобный выхлоп, где нас интересует имя или ID нужного контейнера.
Здесь есть два способа: менее удобный и совсем неудобный. Где какой решайте сами
/var/lib/docker/containers/<id_контейнера>/<id_контейнера>-json.log
Но, как говорилось ранее, вы получаете лютый JSON, где вообще ничего непонятно. Второй способ - использовать команду для вывода логов конкретного контейнера:
docker logs <имя_или_ID_контейнера>
По сути, команда вываливает в терминал содержимое JSON-файла из способа №1. Что делать дальше с этой информацией решает каждый сам, кому-то может оно и поможет, ну а мы идем дальше...
Совместим все, что узнали в пунктах выше и приправим ключом --since, который позволяет задать временной отрезок, с которого будет выведен лог. Вдобавок используя перенаправление вывода сохраним это все в отдельный файл, чтобы потом его изучить:
docker logs <имя_или_ID_контейнера> --since 60m > mydocker.log
Данный пример выведет содержимое лога контейнера Docker за последний час. Ну а что делать, если нужно вывести данные с прошлого месяца? Все просто!
docker logs <имя_или_ID_контейнера> --since YYYY-MM-DD > mydocker.log
Здесь YYYY - год (2023, например), MM - месяц (09) и DD - день (21). Порядок идет именно такой, так как все эти ваши европейцы и американцы, создавшие Linux и большую часть того, что связано с программированием, используют такой формат даты. Всю эту информацию перенаправляем в файл с расширением log, который потом можно использовать как душе угодно.
Но даже после использования команды в п. 3 у вас получится файл, в котором все будет в кучу и не поймешь когда и во сколько какое событие, описанное в логе произошло. Поэтому нужно добавить временную метку, делается это при помощи ключа -t.
docker logs <имя_или_ID_контейнера> --since YYYY-MM-DD -t > mydocker.log
Вот теперь-то вы получите информативный лог о том, что происходило с вашим сервисом внутри контейнера!
Полученную в конце команду вы можете использовать вместе с сервисом Transfer.sh, чтобы без лишней головомойки делиться логами с кем нужно
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4❤1
Kubernetes-examples
Это репозиторий содержит множество примеров Kubernetes
👉 https://github.com/AdminTurnedDevOps/kubernetes-examples
👉 DevOps Portal | #ресурсы
Это репозиторий содержит множество примеров Kubernetes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍3
Разберем, как мониторить процессы, управлять их состоянием и настраивать автоматическое выполнение задач.
Процесс — это программа, запущенная в системе. У каждого процесса есть уникальный идентификатор (PID), родительский процесс (PPID) и состояние (активный, спящий и т. д.).
Основные действия с процессами:
Команды для работы с процессами
ps aux
Выводит список всех процессов с подробной информацией:
top
Показывает процессы в реальном времени. Нажмите q, чтобы выйти.
htop
Если не установлено, добавьте:
sudo apt install htop
kill <PID>
Например:
kill 1234
Чтобы принудительно завершить процесс:
kill -9 <PID>
kill -STOP <PID>
kill -CONT <PID>
ps -o pid,ni,cmd -p <PID>
renice -n 10 -p <PID>
long_running_command &
Узнать PID фонового процесса:
jobs -l
echo "backup.sh" | at 02:00
Если at не установлен:
sudo apt install at
1. Открыть редактор crontab:
crontab -e
2. Добавить задачу (пример: запуск каждую минуту):
* * * * * /path/to/script.sh
htop для удобной работы с процессами, если командная строка кажется сложной.pkill firefox
iotop (для ввода-вывода) и nmon (общий мониторинг).Управление процессами — это важнейшая часть работы в Linux. Знание этих инструментов позволит вам не только следить за состоянием системы, но и эффективно решать проблемы производительности.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍10❤6
Мониторинг сети с помощью Python: Начни с SNMP и PySNMP
Мониторинг сетевой инфраструктуры — это основа стабильной работы ИТ-экосистемы. С помощью Python и библиотеки PySNMP можно собрать данные о состоянии устройств и использовать их для анализа или визуализации. Сегодня рассмотрим пример простого скрипта для сбора информации через SNMP.
Что такое SNMP?
SNMP (Simple Network Management Protocol) — это стандартный протокол управления сетями. Он используется для:
🔹 Сбора метрик с устройств (CPU, память, трафик интерфейсов).
🔹 Отправки уведомлений о событиях.
🔹 Управления конфигурацией.
Установка PySNMP
Для работы установим библиотеку PySNMP:
Пример скрипта: Сбор метрик интерфейса
Вот пример кода, который получает статистику интерфейса по OID:
Как это работает:
1. getCmd выполняет запрос на устройство по указанному OID.
2. CommunityData указывает тип доступа (public — стандартное имя сообщества для чтения).
3. Результат содержит текущую метрику (например, объем входящего трафика на интерфейсе).
Применение:
🔹 Получите данные о загрузке процессора, памяти или состоянии интерфейсов.
🔹 Интегрируйте скрипт в существующую систему мониторинга.
🔹 Расширьте функционал для уведомлений или построения графиков.
Что дальше?
Для визуализации собранных данных можно использовать библиотеки, такие как Matplotlib или Pygal. Это позволяет легко строить графики, показывающие состояние сети.
👉 DevOps Portal
Мониторинг сетевой инфраструктуры — это основа стабильной работы ИТ-экосистемы. С помощью Python и библиотеки PySNMP можно собрать данные о состоянии устройств и использовать их для анализа или визуализации. Сегодня рассмотрим пример простого скрипта для сбора информации через SNMP.
Что такое SNMP?
SNMP (Simple Network Management Protocol) — это стандартный протокол управления сетями. Он используется для:
Установка PySNMP
Для работы установим библиотеку PySNMP:
pip install pysnmp
Пример скрипта: Сбор метрик интерфейса
Вот пример кода, который получает статистику интерфейса по OID:
from pysnmp.hlapi import *
# Укажите параметры устройства
snmp_target = '192.168.1.1'
community = 'public'
oid = '1.3.6.1.2.1.2.2.1.10.1' # OID для входящего трафика интерфейса
# Запрос SNMP
def get_snmp_data(target, community, oid):
iterator = getCmd(
SnmpEngine(),
CommunityData(community, mpModel=0),
UdpTransportTarget((target, 161)),
ContextData(),
ObjectType(ObjectIdentity(oid))
)
error_indication, error_status, error_index, var_binds = next(iterator)
if error_indication:
print(f"Error: {error_indication}")
elif error_status:
print(f"Error: {error_status.prettyPrint()}")
else:
for var_bind in var_binds:
print(f"{var_bind[0]} = {var_bind[1]}")
# Выполнение запроса
get_snmp_data(snmp_target, community, oid)
Как это работает:
1. getCmd выполняет запрос на устройство по указанному OID.
2. CommunityData указывает тип доступа (public — стандартное имя сообщества для чтения).
3. Результат содержит текущую метрику (например, объем входящего трафика на интерфейсе).
Применение:
Что дальше?
Для визуализации собранных данных можно использовать библиотеки, такие как Matplotlib или Pygal. Это позволяет легко строить графики, показывающие состояние сети.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤1
Если вы хотите очистить пустые каталоги, команда find может упростить эту работу:
$ find . -type d -empty -exec rmdir -v {} +Параметр -type d выполняет поиск каталогов, -empty выбирает пустые каталоги, а -exec rmdir {} выполняет команду rmdir для их удаления.
Команда rmdir гарантирует, что каталог пуст перед его удалением.
В качестве альтернативы, вы также можете использовать эту команду для выполнения той же задачи:
$ find . -type d -empty -deletePlease open Telegram to view this post
VIEW IN TELEGRAM
👍26🔥4❤1
KodeKloud Free Labs — площадка c интерактивными заданиями и реальными сценариями, которые помогут погрузиться в практическое применение принципов DevOps и облачных технологий, не выходя из браузера.
В бесплатных лабах сейчас есть: Linux, Кубер, Docker, GiT, Python и прочие прелести.
👉 DevOps Portal | #ресурсы
В бесплатных лабах сейчас есть: Linux, Кубер, Docker, GiT, Python и прочие прелести.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20🔥9❤2🤝1
Чем отличается CMD от ENTRYPOINT в Dockerfile?
Инструкции CMD и ENTRYPOINT выполняются в момент запуска контейнера, тольо инструкция CMD позволяет переопределить передаваемые команде аргументы.
Пример 1. CMD: Опишем сборку образа в Dockerfile.
В инструкцию CMD передаются 2 аргумента. Выполним сборку образа docker build -t test . и запустим контейнер.
Теперь передадим 2 новых аргумента для запуска контейнера.
ping заменен на traceroute, IP адрес заменен на 1.1.1.1.
Пример 2. ENTRYPOINT: Опишем сборку образа в Dockerfile.
В инструкцию ENTRYPOINT передаются 2 аргумента. Выполним сборку образа docker build -t test . и запустим контейнер.
Теперь передадим изменим один из аргументов для запуска контейнера.
Как видим, аргумент передать контейнеру нельзя.
👉 DevOps Portal
Инструкции CMD и ENTRYPOINT выполняются в момент запуска контейнера, тольо инструкция CMD позволяет переопределить передаваемые команде аргументы.
Пример 1. CMD: Опишем сборку образа в Dockerfile.
FROM alpine
CMD ["ping", "8.8.8.8"] В инструкцию CMD передаются 2 аргумента. Выполним сборку образа docker build -t test . и запустим контейнер.
$ docker run test
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=43 time=32.976 ms
64 bytes from 8.8.8.8: seq=1 ttl=43 time=31.998 ms
64 bytes from 8.8.8.8: seq=2 ttl=43 time=31.843 ms
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 31.708/33.316/36.823 msТеперь передадим 2 новых аргумента для запуска контейнера.
$ docker run test traceroute 1.1.1.1
traceroute to 1.1.1.1 (1.1.1.1), 30 hops max, 46 byte packets
1 172.17.0.1 (172.17.0.1) 0.017 ms 0.016 ms 0.009 ms
2 192.168.168.1 (192.168.168.1) 0.996 ms 1.553 ms 2.069 ms
3 * * *
4 lag-2-435.bgw01.samara.ertelecom.ru (85.113.62.125) 1.454 ms 1.427 ms 1.984 ms
5 172.68.8.3 (172.68.8.3) 19.685 ms 15.722 ms 15.565 ms
6 172.68.8.2 (172.68.8.2) 15.846 ms 22.696 ms 35.093 ms
7 one.one.one.one (1.1.1.1) 17.439 ms 17.670 ms 24.202 msping заменен на traceroute, IP адрес заменен на 1.1.1.1.
Пример 2. ENTRYPOINT: Опишем сборку образа в Dockerfile.
FROM alpine
ENTRYPOINT ["ping", "8.8.8.8"]В инструкцию ENTRYPOINT передаются 2 аргумента. Выполним сборку образа docker build -t test . и запустим контейнер.
$ docker run test2
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=43 time=36.189 ms
64 bytes from 8.8.8.8: seq=1 ttl=43 time=44.120 ms
64 bytes from 8.8.8.8: seq=2 ttl=43 time=44.584 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 36.189/41.631/44.584 msТеперь передадим изменим один из аргументов для запуска контейнера.
$ docker run test2 ping 1.1.1.1
BusyBox v1.31.1 () multi-call binary.
Usage: ping [OPTIONS] HOST
Send ICMP ECHO_REQUEST packets to network hosts
-4,-6 Force IP or IPv6 name resolution
-c CNT Send only CNT pings
-s SIZE Send SIZE data bytes in packets (default 56)
-i SECS Interval
-A Ping as soon as reply is recevied
-t TTL Set TTL
-I IFACE/IP Source interface or IP address
-W SEC Seconds to wait for the first response (default 10)
(after all -c CNT packets are sent)
-w SEC Seconds until ping exits (default:infinite)
(can exit earlier with -c CNT)
-q Quiet, only display output at start
and when finished
-p HEXBYTE Pattern to use for payloadКак видим, аргумент передать контейнеру нельзя.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥6🤔4
Linux. Карманный справочник. 4-е изд
Автор: Дэниел Джей
Год: 2024
📂 Скачать книгу
👉 DevOps Portal | #книги
Автор: Дэниел Джей
Год: 2024
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥9
This media is not supported in your browser
VIEW IN TELEGRAM
Dockly
Это интерактивный терминальный интерфейс для управления контейнерами Docker.
Утилита позволяет в режиме реального времени просматривать активные контейнеры, образы и сети, выполнять команды, такие как перезапуск или удаление контейнеров, а также получать доступ к их логам и ресурсам.
Подходит для разработчиков и администраторов, которым нужен быстрый и удобный способ мониторинга и управления Docker-средами.
GitHub: dockly
👉 DevOps Portal
Это интерактивный терминальный интерфейс для управления контейнерами Docker.
Утилита позволяет в режиме реального времени просматривать активные контейнеры, образы и сети, выполнять команды, такие как перезапуск или удаление контейнеров, а также получать доступ к их логам и ресурсам.
Подходит для разработчиков и администраторов, которым нужен быстрый и удобный способ мониторинга и управления Docker-средами.
GitHub: dockly
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥3🤝1