• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Soft Использование библиотеки sh в Python для упрощения работы с командной строкой

sh_1.jpg


Добрый вечер, амигос)) Прошу не судить строго ибо это моя первая статья на форуме…во-первых, не очень люблю писать, во-вторых, между работой, кодингом и похеком сложно найти время на статьи))
Ну да ладно, к делу….Не так давно я понял, что без знания Python в пентесте просто беда, без его мощи, силы и красоты…особенно при работе с сетью…Не тратя ни секунды на сомнения поступил на курс Python для пентестера, который не так давно (буквально вчера) успешно закончил…Говорить про курс можно много и долго….Курс просто ВЕЛИКОЛЕПЕН…Ну и ОГРОМНОЕ СПАСИБО создателям курса и куратору Дмитрию (@f22)…Более чутких, мудрых и профессиональных наставников на моём пути ещё не было…уж можете мне поверить, я уже давно живу на белом свете и многое повидал…Честно говоря до курса был внутренний страх перед языком, но как и WAPT, курс Python для пентестера помог мне обрести невиданную веру в себя и буквально влюбил меня в этот язык…Ну и сейчас редкий день обходится без кодинга…

Это была прелюдия…но не мог не сказать спасибо людям, благодаря которым я стал немножко кодером)) Дык вот, в своих изысканиях я наткнулся на интереснейшую библиотеку python…Она является ПОЛНОЦЕННОЙ заменой subprocess
И носит название она – sh… ( и sh на Github )

Библиотека sh - мощный инструмент для работы с командной строкой в Python. Она позволяет разработчикам выполнять команды, получать результаты команд, работать с переменными среды, выполнять команды в фоновом режиме, выполнять команды с помощью других оболочек, пользователей, контейнеров, языков программирования и систем. Это незаменимый инструмент для разработчиков, которые работают с командной строкой в Python. Работает с python 3.8 – 3.11. Библиотека позволяет вызывать любую программу так , если бы это была функция

Прежде чем мы начнем использовать библиотеку sh, необходимо ее установить:

Bash:
pip install sh

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

Python:
from sh import ifconfig


print(ifconfig("wlan0"))

Output

Bash:
wlan0   Link encap:Ethernet  HWaddr 00:00:00:00:00:00
        inet addr:192.168.1.100  Bcast:192.168.1.255  Mask:255.255.255.0
        inet6 addr: ffff::ffff:ffff:ffff:fff/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:0 (0 GB)  TX bytes:0 (0 GB)


Обратите внимание, что это не функции Python, они запускают двоичные команды в вашей системе путем динамического разрешения ваших $PATH, подобно тому, как это делает Bash, а затем оборачивают двоичный файл в функцию.
Таким образом, все программы в вашей системе будут легко доступны вам из Python. sh полагается на различные системные вызовы Unix и работает только в Unix-подобных операционных системах - Linux, macOS, BSD и т.д.
В частности, Windows не поддерживается.

Основные возможности библиотеки sh

Исполнение команды без аргументов:

Python:
import sh

result = sh.ls()
print(result)

В этом примере мы вызываем команду ls для вывода содержимого текущей директории.

Передача аргументов в команду:
Python:
import sh

result = sh.grep("search_text", "file.txt")
print(result)

Пайплайны команд:

Python:
import sh

result = sh.grep("error", "/var/log/syslog") | sh.sort("-rn") | sh.head("-n", "10")
print(result)

Этот пример демонстрирует создание пайплайна из нескольких команд для выполнения сложных операций.

Команды можно выполнять с переменными среды:

Python:
import sh

# Установка переменной среды
sh.env.PATH = '/usr/local/bin:/usr/bin:/bin'

# Выполнение команды ls -l
sh.ls('-l')

Пример выполнения команды в фоновом режиме:

Python:
import sh

# Выполнение команды ls -l в фоновом режиме
sh.ls('-l', _bg=True)

По умолчанию библиотека sh использует оболочку sh, но можно выполнять команды с помощью других оболочек, таких как bash или zsh:

Python:
import sh

# Выполнение команды ls -l с помощью оболочки bash
sh.bash.ls('-l')

Команды можно выполнять от других пользаков, с помощью других контейнеров, таких как Docker или Singularity, с помощью других языков программирования, таких как Perl или Ruby

Python:
import sh

# Выполнение команды ls -l от имени пользователя root
sh.sudo.ls('-l')

# Выполнение команды ls -l в контейнере Docker
sh.docker.run('ubuntu', 'ls -l')

# Выполнение команды ls -l с помощью языка программирования Perl
sh.perl.ls('-l')

Ну и ещё много приятных плюшек))) О них вы узнаете в документации....Кстати, документация у проекта ПРЕКРАСНАЯ))

Преимущества использования библиотеки sh

  • Упрощенное взаимодействие с внешними программами.
  • Чистый и понятный синтаксис.
  • Возможность передачи аргументов и обработки результата выполнения.

Заключение

Библиотека sh открывает широкие возможности по автоматизации системных задач, обработке данных и управлению внешними утилитами прямо из вашего Python кода.
Пользуйтесь ею для оптимизации вашего рабочего процесса и максимального удобства в разработке.

Желаю всем удачи!!!


sh_1.jpg
 
Последнее редактирование модератором:
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!