Python + bash
Если вам часто требуется запускать shell команды из Python-кода, какой способ вы используете?
Самый низкоуровневый это функция os.system(), либо os.popen(). Рекомендованный способ это subprocess.call(). Но это всё еще достаточно неудобно.
Советую обратить своё внимание на очень крутую библиотеку sh.
Что она умеет?
🔸 удобный синтаксис вызова команд как функций
# os
import os
os.system("tar cvf demo.tar ~/")
# subprocess
import subprocess
subprocess.call(['tar', 'cvf', 'demo.tar', '~/'])
# sh
import sh
sh.tar('cvf', 'demo.tar', "~/")
🔸 простое создание функции-алиаса для длинной команды
fn = sh.lsof.bake('-i', '-P', '-n')
output = sh.grep(fn(), 'LISTEN')
в этом примере также задействован пайпинг
🔸 удобный вызов команд от sudo
with sh.contrib.sudo:
print(ls("/root"))
Такой запрос спросит пароль. Чтобы это работало нужно соответствующим способом настроить юзера.
А вот вариант с вводом пароля через код.
password = "secret"
sudo = sh.sudo.bake("-S", _in=password+"\n")
print(sudo.ls("/root"))
Это не все фишки. Больше интересных примеров смотрите в документации.
Специально для Windows💀 юзеров
#libs#linux
• Нашел очень крутой ресурс с бесплатными лабораторными работами и туториалами для ИБ специалистов. Единственный минус - не вся информация переведена на русский язык. Никаких видео — только полностью интерактивные лаборатории, разработанные для более быстрого и эффективного обучения. Даже есть ИИ помощник, если возникнут трудности с выполнением заданий...
➡️https://labex.io/ru
• LEARNING PATH:
➡Learn Linux;
➡Learn DevOps;
➡Learn Cybersecurity;
➡Learn Database;
➡Learn Python;
➡Learn Docker;
➡Learn Java;
➡Learn Jenkins;
➡Learn Machine Learning;
➡Learn Kali Linux.
• PROJECTS & TUTORIALS:
➡All Interactive Tutorials;
➡Linux Projects;
➡Python Projects;
➡Java Projects;
➡Numpy Projects;
➡Linux Tutorial;
➡Docker Tutorial;
➡Cybersecurity tutorial;
➡Free Labs;
➡Linux Commands Cheat Sheet.
• PLAYGROUNDS:
➡Online Linux Terminal;
➡Online Docker Playground;
➡Online Python Playground;
➡Online Golang Playground;
➡Online C++ Playground;
➡Online Java Playground;
➡Online Rust Playground;
➡Online MySQL Playground;
➡Online Ansible Playground;
➡Online Jenkins Playground.
• LATEST TUTORIALS:
➡Python Itertools Combinations;
➡Docker Compose with Host Network;
➡Systemctl daemon-reload in Linux;
➡Match Patterns with Bash Regex;
➡DevOps Free Labs;
➡Find Key with Max Value in Python Dictionary;
➡Linux Free Labs;
➡Bash Function Return Values;
➡Area and Circumference of a Circle in C;
➡Cybersecurity Free Labs.
#Linux#DevOps#ИБ
• Весьма любопытный tui тренажёр для обучения основам работы в терминале. Содержит около 70 заданий, которые вам предстоит решить. Проходить увлекательно и полезно, так что рекомендую для самообразования и получения необходимого опыта.
➡️https://github.com/learnbyexample/TUI-apps
• Кстати, у автора есть ещё несколько tui программ, с помощью которых можно потренироваться в работе с awk, grep, sed и регулярками...
#CLI#Linux
• the art of command line - невероятно полезный гайд по использованию командной строки в Linux, к которому приложили руку множество авторов и переводчиков. Еще здесь есть разделы про Windows и macOS, а также универсальные советы, применимые для операционных систем на базе UNIX. Подходит как для новичков, так и для опытных специалистов. Гайд опубликован на разных языках, включая русский.
➡Описание;
➡Основы;
➡Ежедневное использование;
➡Процессинг файлов и информации;
➡Системный дебаггинг;
➡В одну строчку;
➡Сложно, но полезно;
➡MacOS only;
➡Windows only;
➡Больше информации по теме;
➡Дисклеймер.
➡️https://github.com/jlevy/the-art-of-command-line
#Linux#CLI
🪨Все по песочницам!
• Представьте, что вам нужно запустить некоторый процесс Linux в изолированной среде. Так, чтобы он не смог нанести вред системе, на которой запускается. Какие инструменты мы используем в таких случаях? Первое, что приходит в голову, это технологии виртуализации или контейнеризации. Но что, если нам нужно что-то более легковесное и простое в использовании? Bubblewrap — это утилита командной строки, которая является одним из проектов сообщества Containers (знаменито авторством таких инструментов, как Podman, Buildah, Skopeo и др.).
• Когда может быть полезен:
➡Невысокие требования к изоляции процесса и системы;
➡Недопустимы накладные расходы как у более сложных средств изоляции;
➡Тестирование (поведения) программы в разных условиях эксплуатации;
➡Запуск программ/скриптов/кода, полученных из ненадежных источников;
➡Лимитирование расхода ресурсов для отдельно взятого процесса;
➡Изменение структуры файловой системы для запускаемого процесса.
• Стоит сказать, что bubblewrap — это не то ПО, которое предоставляет готовую "песочницу" с определенной политикой безопасности. В некоторых вариантах использования bubblewrap требуется граница безопасности между изолированной средой и реальной системой; в других вариантах использования требуется возможность изменять расположение файловой системы для процессов внутри изолированной среды, но не ставится цель создания границы безопасности. В результате уровень защиты между изолированными процессами и хост-системой определяется аргументами, передаваемыми bubblewrap.
• Таким образом, используя аргументы командной строки, вы сами определяете уровень изоляции запускаемого процесса. При этом под капотом Bubblewrap использует стандартные средства Linux, которые не требуют повышения привилегий пользователя: chroot, clone, seccomp, cgroups, landlock.
• Основные плюсы:
➡Не требуются root-привилегии;
➡Изолирует работу только одного процесса;
➡Может использоваться для изоляции приложений с графическим UI;
➡Предоставляет большой спектр настроек лимитирования;
➡Простая установка и использование;
➡Низкие накладные расходы на изоляцию.
• Основной минус — это то, что ограничение на ресурсы системы устанавливаются только с использованием cgroup. Это значит, что для полноценной работы bwrap в Docker/Kubernetes-контейнере последний придется запустить в privileged-режиме!
➡️https://github.com/containers/bubblewrap
• Дополнительно:
• Firejail — гибкий и мощный инструмент изоляции, который не просто контролирует доступ к файловой системе, а полностью отрезает приложение от основной системы с помощью механизма Linux Namespaces. Подробнее тут: https://t.me/it_secur/1053
#Linux#Песочница
Linux Kernel Teaching. Laboratory
*
Большой и годный сборник лекций и лабораторных работ по ядру Linux. Лекции посвящены теоретическому исследованию ядра Linux.
Лабораторки сделаны в стиле инструкций.
Будет полезно: админам, драйверописателям и специальным разработчикам
*
Link
#linux#kernel
Bashtop, Linux resource monitor that shows usage and stats for processor, memory, disks, network and processes.
#tools#terminal#linux
@thedevs
https://kutt.it/OBxUjn