Добрый вечер, амигос)) Прошу не судить строго ибо это моя первая статья на форуме…во-первых, не очень люблю писать, во-вторых, между работой, кодингом и похеком сложно найти время на статьи))
Ну да ладно, к делу….Не так давно я понял, что без знания 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 кода.Пользуйтесь ею для оптимизации вашего рабочего процесса и максимального удобства в разработке.
Желаю всем удачи!!!
Последнее редактирование модератором: