Главная

Monday, 28 October 2024

Release VRAM.

Hello.

Can I release VRAM of my videocard NVIDIA during the GenAI processes? Yes, there are a few ways to release VRAM without outright terminating processes, especially if you’re using GPU-accelerated libraries like PyTorch or TensorFlow, which provide methods to manage and release memory.

Here are some methods to release VRAM without killing processes:


1. Release VRAM in PyTorch

If you’re working in a PyTorch environment, you can release cached memory that’s no longer needed with `torch.cuda.empty_cache()`. This frees up any cached memory that PyTorch may still be holding onto.

```python

import torch

torch.cuda.empty_cache()  # Releases unused VRAM

```

This command does not affect active allocations but clears memory that might be cached by PyTorch.


2. Release VRAM in TensorFlow

In TensorFlow, you can reset the GPU memory allocation by clearing the session:

```python

from tensorflow.keras.backend import clear_session

clear_session()  # Releases memory used by TensorFlow

```

This is particularly helpful if you are done with a model or part of your code and want to free up GPU memory for another task.

Tuesday, 22 October 2024

Forge - сервисы Spaces по сети.

Всем привет.

В последней версии Forge появилась вкладка Spaces куда автор вынес ряд вкусных сервисов: IC-Light, Photomaker, Monster QR Lab, Florence2 и прочее. Все они оформлены виде отдельных дополнительных серверов со стартом локально  https://127.0.0.1 начиная с порта 7861. Если у вас достаточно ОЗУ то можно даже несколько их запустить при необходимости. Но вот наступает момент когда вам хочется чтобы такие сервера были доступны в вашей локальной сети. И очень быстро вы понимаете что все что находится на Spaces не имеет bat-файлов куда можно было бы вставить знакомый всем ключик listen...

Однако выход есть.

Поступаем так:

1) добавляем ключик --listen в COMMANDLINE_ARGS webui-user.bat самого Forge:

set COMMANDLINE_ARGS=--xformers --theme=dark --listen 

2) в файле webui/modules_forge/forge_space.py:

строку 

server_name = '127.0.0.1'

меняем на

server_name = '0.0.0.0'

3) запуcкаем Forge.

4) стартуем необходимый сервис с вкладки Spaces. Он напишет вам что поднят на localhost. Отлично!

5) набираем в url web-браузера другого хоста https://ipaadr:7861 (где ipaadr IP-адрес Forge сервера в вашей сети) и наслаждаемся.

Успехов.

Monday, 21 October 2024

HEIC файл?

Привіт.

Що таке HEIC-файл?

Під час зйомки зображення (або кількох зображень, якщо використовується подвійна камера або функція Live Photos) на iPhone або iPad зберігаються у форматі HEIC.

HEIC означає «контейнер зображень високої ефективності» (скорочено від англ. High Efficiency Image Container). Він є оновленим варіантом формату HEIF (скорочено від англ. High Efficiency Image Format – формат зображень високої ефективності), який компанія Apple традиційно використовує на своїх мобільних пристроях.

Навіщо я вам це пишу? А справа  в тому що з цим форматом нас здорово кинув Microsoft.

А до чого тут Гейтс, - спитаєте ви? - Це ж Apple! 

А я вам відповім. Штатний редактор Paint в Windows 10 має в своєму переліку формат HEIC як такий що може зберігати та відкривати такі файли. Та невже? А от і дзуськи! Ні того ні того він не може зробити з таким форматом. Навіть MS Photo на перегляд формату HEIC відразу біжить в MS Store за платним(!) плагіном HEVС decoder.

В мережі є порада встановити інший безкоштовний плагін для перегляду HEIC з того ж таки магазину. Не поспішайте, бо то ще один жарт від Microsoft - той плагін не працює! І не видаляється після встановлення.

Такі справи.


Saturday, 19 October 2024

Моменты Zabbix.


Всем привет.

Моя давняя шпаргалка по рабочим моментам Zabbix, которая скорее всего мне больше не понадобится, а вам как знать.

1) Housekeeper:

Q: Oбязательно ли параметр housekeeper открывать в конфиге Zabbix-а или молча использовать для этого настройки в GUI ?

A: В конфиге этот параметр регулирует частоту запуска houserkeeper'а, а в GUI настраивают сроки очистки данных в БД, которые очищает как раз housekeeper. Если его не запускать, очистки данных у вас не будет какие бы параметры вы не настроили в GUI.


2) Clone vs Full Clone:

Нажатие на Клонировать сохранит все параметры узла сети и все соединения с шаблонами (с сохранением всех объектов из этих шаблонов). 

Полное клонирование дополнительно сохранит все напрямую добавленные объекты (элементы данных, триггеры, графики и группы элементов данных).

Обратите внимание: при клонировании узла сети, он наследует все сущности из шаблонов, как они настроены изначально в шаблонах. Любые сделанные изменения в этих сущностях на уровне узла сети (такие как интервал опроса элементов данных, измененное регулярное выражение или добавленные прототипы к правилу низкоуровневого обнаружения) не будут скопированы в новый узел сети; они останутся так как есть в шаблоне.


3) Service:

cчитается что для мониторинга любого сервиса достаточно следить всего за 4-мя его параметрами:

  • Latency -  время, которое занимает обработка запроса. Неплохо бы разделять время для корректных ответов и ошибок.
  • Traffic - количество запросов, приходящих к сервису. Например, rps для http-сервисов или bandwidth для стриминга.
  • Errors - запросы, обработанные с ошибками.
  • Saturation - насколько заполнен сервис. Например, для диска это общий объем и занятое место.

Tuesday, 15 October 2024

Network Monitor - Wireshark на минималках.

Всем привет.

Microsoft Network Monitor это классический инструмент сетевой диагностики для Windows, которой позволяет выполнить захват и анализ входящего и исходящего трафика на компьютере. Несмотря на то, что это продукт не развивается и не обновляется уже много лет, его часто используют администраторы, когда нужно выполнить диагностику сетевых подключений. NetMon предоставляет на порядок меньше возможностей и не так хорош в расширенном разборе пакетов, по сравнению с популярным инструментом захвата и анализа WireShark. Однако графический интерфейс Network Monitor гораздо проще и интуитивнее, да и сам продукт легче для старта. 

Сегодня мы рассмотрим, как использовать Network Monitor для захвата и анализа сетевого трафика в реальном времени и для снятия дампа трафика для последующего анализа.

На список поддерживаемых версий ОС не обращайте внимания, он чудесно работает и на Windows 10 и на  Windows 2019. Установить Microsoft Network Monitor 3.4 (последняя версия, другой уже не будет) можно, скачав установщик (NM34_x64.exe) с сайта Microsoft (https://www.microsoft.com/en-us/download/details.aspx?id=4865), или установить пакет с помощью пакетного менеджера winget: winget install Microsoft.NetMon

После установки, запустите Network Monitor с правами администратора.

В окне NetMon нажмите New Capture. По умолчанию Network Monitor, собирает весь трафик, проходящий через интерфейсы компьютеры. За длительный промежуток времени размер такого сетевого дампа может быть весьма значительным. Нажмите кнопку Capture Settings. В этом окне можно настроить фильтры, которые определяют какой трафик должен собирать NetMon. В разделе Load Filter -> Standard Filters есть несколько шаблонов фильтров для типовых задач. В нашем случае нам нужен фильтр по TCP портам. Выберите TCP-> TCP ports.

Friday, 11 October 2024

Детектим виртуалку.

Всем привет.

Известно что для исследования зловреда нужна песочница. В бюджетном варианте какая-нибудь виртуалка с Windows 7 на борту. 10-ку для этого не советуют ибо там кода который следит за вами, и за самим собой немеряно. Но хакеры ребята умные, и потому не леняться писать детекторы виртуального окружения в свой зловред тоже. Честно говоря,  я был удивлен когда мне предложили спрятать виртуалку простой правкой реестра, как на рисунке.

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

Как распознать виртуальную машину?

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

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

В-третьих, если как следует покопаться в реестре виртуальной машины, там можно найти много всяких интересных ключей, характерных только для виртуальных машин.

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

Что же касается общих признаков наличия виртуальной машины, предложенных в свое время госпожой Рутковской (характерное расположение таблиц IDT, GDT и LDT, а также время выполнения операций процессором), то в настоящий момент все эти признаки трудно поддаются анализу и приведению к какому-нибудь общему знаменателю, главным образом из-за многоядерности и многоликости современных процессоров.

Thursday, 10 October 2024

Уровни безопасности ComfyUI Manager.


Всем привет.

Нам машет ComfyUI Manager: This action is not allowed with this security level configuration.

Многие пользователи, которые только начинают пользоваться интерфейсом ComfyUI, возможно, сталкивались с таким сообщением при работе с ComfyUI Manager. Они часто называют его ошибкой по своему незнанию предмета. Когда вы пытаетесь установить расширение из GitHub, то видите неприятное сообщение о том, что установка невозможна. "This action is not allowed with this security level configuration" - т.е это действие не разрешено при данном уровне безопасности конфигурации.

Это связано с недавними изменениями в ComfyUI-Manager:

* V2.48.1: Security policy has been changed. Downloads of models in the list are allowed under the 'normal' security level.

* V2.47: Security policy has been changed. The former 'normal' is now 'normal-', and 'normal' no longer allows high-risk features, even if your ComfyUI is local.

* V2.37 Show a ✅ mark to accounts that have been active on GitHub for more than six months.

* V2.33 Security policy is applied.


Где искать и править?

1. Перейдите в директорию ComfyUI/custom_nodes/ComfyUI-Manager и найдите там файл config.ini.

2. Откройте файл config.ini в режиме редактирования.

3. Найдите строку security_level = <LEVEL>, если такой строки нет(у меня так было), то просто допишите её в самом конце.

4. Выберите уровень безопасности, который вам подходит(?) и пропишите его:

security_level = normal-

Wednesday, 9 October 2024

Параметри WiFi.

Всім привіт.

Ви напевно знаєте, що я люблю користуватися BGInfo. Впевнений що це дуже корисна утіліта для користувача. На днях я вирішив переписати блок коду щодо отримання параметрів мережі, особливо бездротової: назву SSID, номер каналу, рівень сигналу та швидкість передачі даних.

Перший запит відбувається просто:

Get-NetAdapter -Physical | where Status -eq "Up" | select Name,LinkSpeed

а решту параметрів отримуємо з вихлопу netsh wlan show interfaces. І ось тут є цікавинка - LinkSpeed від першого запиту то значення передачі даних адаптера. Як на мене дивно, бо в серфінгу по Інтернет трафік на отримання даних переважає трафик передачі на порядок. Навіщо тоді мені така LinkSpeed? Тому швидкість передачі та отримання я також беру з netsh.

Ось мій код:

 $a = Get-NetAdapter -Physical | where Status -eq "Up" | select Name,LinkSpeed

if (($a.Name -like "Wi-Fi*") -or ($a.Name -like "Беспроводная*")) {

    # It's a Wi-Fi interface

    $b = (get-netconnectionProfile).Name 

    $if01 = (netsh wlan show interfaces)

    $c = $if01 -Match '^\s+Channel' -Replace '^\s+Channel\s+:\s+',''

    $d = $if01 -Match '^\s+Signal' -Replace '^\s+Signal\s+:\s+',''

    $receiveRate = $if01 -Match '^\s+Receive rate \(Mbps\)' -Replace '^\s+Receive rate \(Mbps\)\s+:\s+', ''

    $receiveRate = "$receiveRate Mbps"

    $transmitRate = $if01 -Match '^\s+Transmit rate \(Mbps\)' -Replace '^\s+Transmit rate \(Mbps\)\s+:\s+', ''

    $transmitRate = "$transmitRate Mbps"


# це якщо бажаєте вивести значення в один рядок

#$a.Name+':' +$b +',Ch:' +$c+',Up:' +$d+ ',In:' +$receiveRate+',Out:' +$transmitRate

    Write-Host $a.Name':'$b

    Write-Host 'Channel:'$c

    Write-Host 'Level:'$d

    Write-Host 'Input:'$receiveRate

    Write-Host 'Output:'$transmitRate

    }

else {

    # It's an Ethernet interface

    $a.Name+': '+$a.LinkSpeed

}

 А так виглядає результат:

Щасти.


Tuesday, 8 October 2024

Ручне оновлення в СomfyUI

Привіт усім.

Час від часу мій ComfyUI потребує до себе уваги на рівні командного рядка. Тому я вже маю шпаргалку коли мушу виконувати такі дії як оновлення окремого пакету python. Можливо і вам стане у нагоді.

Оновити pip (дуже часто таке вимагає консоль):

..\python_embeded\python.exe -m pip install --upgrade pip

Підняти версію diffusers до 0.30.3 (якщо того вимагає чергова custom node, але ви не маєте часу виясняти яка саме):

..\python_embeded\python.exe -m pip install diffusers==0.30.3

Оновити інтерфейс керування comfy_cli:

..\python_embeded\python.exe -m pip install --upgrade comfy_cli

Встановити бібліотеку insightface:

..\python_embeded\python.exe -m pip install insightface-0.7.3-cp310-cp310-win_amd64.whl

Встановити все що вимагає нода ComfyUI-SUPIR:

..\python_embeded\python.exe -m pip install -r ..\ComfyUI\custom_nodes\ComfyUI-SUPIR\requirements.txt

Оновити саме СomfyUI:

..\python_embeded\python.exe .\update.py ..\ComfyUI\

До речі за задумкою автора СomfyUI такого оновлення повинно вистачити у більшості випадків. Тому він попереджає нас так:

This will try to update pytorch and all python dependencies, if you get an error wait for pytorch/xformers to fix their stuff. You should not be running this anyways unless you really have to. If you just want to update normally, close this and run update_comfyui.bat instead.

Але якщо нам кортить працювати з новою версією pytorch та xformers (на свій власний ризик!) то ми робимо наступне:

..\python_embeded\python.exe -s -m pip install --upgrade torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu124 xformers -r ../ComfyUI/requirements.txt pygit2

або так, якщо нас цікавить версія developer:

..\python_embeded\python.exe -m pip uninstall torch torchvision torchaudio -y

 ..\python_embeded\python.exe -m pip install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu124

З свого досвіду загальний порядок такий: спочатку оновлюєте СomfyUI, потім робите повний ребут сервера, потім оновлюєте всі встановлені custom nodes, і знову робите повний ребут. Під час цього уважно слідкуєте за всім що пише (або свариться) консоль СomfyUI.

Щасти.

Monday, 7 October 2024

Защита сетевого оборудования.


Всем привет.

Хотя я уже далек от администрирования сетевого оборудования, но для тренировки мозга время от времени пользуюсь виртуальными лабораториями типа  CSRv, FTDv, APIC-EM. Разумеется я не мог не обратить внимания на свежее издание Базаров М. М. "Сети глазами хакера", СПб.: БХВ-Петербург, 2025. Сразу видно что ввиду внешней политики страны издания в первую очередь страдают умные головы в той же стране. Так и здесь, знаменитое издательство "БХВ-Петербург" последние годы все чаще просто переиздает популярные книги прошедших лет, либо книги современных ИТ-писателей из Индии. В данном случае изданы "записки на полях" сетевого инженера-практика. Прошу прощения, но ниже главу из книги я вычитывал трижды, хотя опечатки могли все равно остаться.

Безопасность телекоммуникационных устройств - вопрос острый, особенно в по­следнее время. Атаки на инфраструктуры провайдеров происходят все чаще. Сегодня я покажу вам,  как можно защитить сетевое оборудование от потенциального вторжения. Все команды я буду демонстрироваться на Cisco IOS. Однако сами механизмы безо­пасности реализованы у всех вендоров, отличия лишь в иерархии расположения компонентов и синтаксисе. 

Безопасность коммутационной матрицы САМ 

У Cisco IOS  есть несколько проблем сетевой безопасности.  Давайте посмотрим, на какие из них стоит обратить внимание в первую очередь. 

САМ (Content  Addressable  Memory)  - это  ассоциативная память коммутатора, внутри которой хранится таблица МАС-адресов и связанных с ними портов. Это несложный механизм, однако уже очень давно существует хулиганский вектор DоS-атаки, при которой атакующий переполняет САМ-таблицу с  помощью рас­сылки  Ethernet-кaдpoв  с  рандомизирующимися  МАС-адресами  источника,  что перебивает коммутационную матрицу.  Очень известный прием, но не упомянуть о нем я не могу. 

Защитить САМ-таблицы своих коммутаторов очень просто, достаточно использо­вать Port Security. В нашем случае эта настройка подходит для ограничения количе­ства МАС-адресов за портом коммутатора.  Допустим, если мы настроим ограниче­ние в 20  МАС-адресов на порту, а атакующий начнет в эфире флуд (каким-нибудь macof), то к порту будут уже применяться ограничения - в зависимости от настро­енной политики.  Вот пример конфигурации, при которой ставится ограничение в два МАС-адреса,  а при нарушении этого ограничения порт будет выключен. 

Router01(config)#  interface  range  gX/X 

Router01(config-if)#  switchport port-security maximum  <value> 

Router01(config-if)#  switchport port-security violation shutdown 

При такой конфигурации в момент нарушения политики МАС-адресов порт будет переведен в состояние err-disabled. Чтобы настроить автоматическое восстановле­ние порта из этого состояния, понадобится еще одна команда: 

Router01(config)#  errdisaЬle recovery  interval  120 

Router01(config)#  errdisaЬle recovery  cause  psecure-violation 

Friday, 4 October 2024

Лаборатория с REMnux.

Всем привет.

Форензика (Forensics) - это компьютерная криминалистика, наука о расследовании киберпреступлений, то есть прикладная наука о раскрытии преступлений, связанных с компьютерной информацией. Неотъемлемой частью форензики является исследование цифровых доказательств, использование методов поиска, получения и закрепления данных доказательств.

Когда произошел инцидент, необходимо оперативно получить ответы на следующие вопросы:

  • понять, как была реализована атака;
  • построить сценарий взлома;
  • восстановить хронологию (таймлайн) атаки;
  • собрать артефакты, оставшиеся после атаки следы, и проанализировать их;
  • предложить превентивные защитные меры, чтобы такого впредь не повторилось.

Форензика делится на следующие направления:

  • computer forensics – к ней относится все, что связано с поиском артефактов взлома на локальной машине: анализ ram, hdd, реестра, журналов ОС и т. д.;
  • network forensics – анализ сетевого трафика;
  • forensic data analysis – посвящена анализу файлов, структур данных и бинарных последовательностей, оставшихся после атаки или использовавшихся при вторжении;
  • mobile device forensics – занимается всем, что касается особенностей извлечения данных из android и ios;
  • hardware forensic – экспертиза аппаратного обеспечения и технических устройств прошивки, bios и т. д.

В задачи исследователя входит анализ скомпрометированной машины на наличие доказательств компрометации (улик). То есть, по сути, нам важно понимать, как злоумышленник проник в систему, какие уязвимости он использовал, какие учетные записи были скомпрометированы и т. д.

Важно отметить, что доказательства должны быть сохранены в исходном виде, для того чтобы впоследствии эксперты со стороны защиты не смогли заявить, что эти доказательства были подделаны или изменены.

Экспертиза взломанного хоста состоит из Статического анализа и Динамического анализа.

Статический анализ

Задачи статического анализа:

  • создать образ жесткого диска или дампа оперативной памяти;
  • выявить и восстановить удаленные файлы;
  • остатки аномальных файлов в %temp% и системных директориях;
  • собрать историю серфинга веб-браузера;
  • системные логи события авторизации;
  • аудит доступа к файлам и директориям и т. д.;
  • получить список запущенных в памяти процессов и открытых коннектов сети.

Thursday, 3 October 2024

Автоматическая настройка proxy сервера.

Всем привет. 

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

function FindProxyForURL(url, host)

{ .. }

где,

url – полный URL запрашиваемого документа

host – имя поста извлекаемое из URL. Этот параметр необходим только для удобства. Он содержит всё от :// и до первого / или :. Номер порта не включается в этот параметр.

Функция возвращает строку содержащую один или несколько способов доступа к запрашиваемому документу. Формат строки следующий:

null - если строка null, то использовать прокси сервер не нужно;

DIRECT - прямое соединение без использования прокси сервера;

PROXY host:port - определяет какой именно прокси сервер необходимо использовать;

SOCKS host:port - определяет SOCKS сервер который необходимо использовать.

Wednesday, 2 October 2024

Как использовать Flux, SD3 и KOLORS в Fooocus.

Всем привет.

Как использoвать Flux, SD3 и KOLORS в Fooocus (по материалам Дзен.ру).

Многие пользователи Fooocus на форумах уже задавались вопросом:  можем ли мы использовать новую модель Flux в нашем любимом интерфейсе? Официальной информации от разработчика на этот счёт пока нет. Но то, что писал mashb1t на своём Github, говорит о том, что по крайней мере пока нам не светит работа с Flux в Fooocus. Его право.

Однако, благодаря неугомонным энтузиастам нашелся выход. Если вы пользуетесь только Fooocus и не хотите(и напрасно!) осваивать другие интерфейсы, такие как Forge, Automatic1111 и SwarmUI, то можно попробовать установить SimpleSDXL2. Это тот же Fooocus только "по китайски" с поддержкой работы моделей Flux, SD3 и KOLORS. Да, пока местами сыровато и непривычно, но Оно работает! И тем кто привык к удобству Fooocus может пригодиться. 

Неужели  mashb1t не смог, а какой-то студент из Шанхая смог, подумаете вы? Вовсе нет. Ответ прост - все что связано с Flux, SD3 и KOLORS  в SimpleSDXL2  реализуется через бекенд ComfyUI. Вот такой вот вышел комбайн с интерфейсом Fooocus-a.

Начнем как обычно с того, откуда и как скачать, и что с этим всем делать. Переходим по ссылке на Hugging Face и скачиваем вот этот файл (SimpleSDXL2_win_dev.exe.7z0912). После загрузки нужно создать папку, где будет лежать ваш SimpleSDXL2. Скачанный файл нужно переименовать, то есть удалить цифры в конце имени файла. В итоге у вас получится имя файла с расширением .exe - SimpleSDXL2_win2.exe. Это обычный zip-архив, который распаковывается автоматически. Для этого нужно просто нажать на него, указать путь для распаковки и немного подождать. После того как вы распакуете архив, перейдите в папку и запустите пакетный файл run_SImpleSDXL.bat.

Подождите, пока загрузятся необходимые зависимости. Если вы уже используете Fooocus, то перед запуском файла рекомендуется скопировать ваш уже настроенный файл конфигурации Fooocus (config.txt) в папку SimpleSDXL. Наличие готового файла конфигурации упростит процесс запуска и избавит вас от скачивания кучи ненужных моделей которыми вы вполне возможно и не воспользуетесь никогда.

Внимание: многие пользователи пишут, что для использования интерфейса необходимо скачать огромное количество дополнительных файлов. Для чего мне не совсем понятно, потому что достаточно скачать и распаковать указанный выше архив, а затем загрузить модели Flux, которые вам нужны для работы. Все! Дополнительно не нужно скачивать 30-40 гигабайт архивов которые внутри содержат только модели. Кстати размер общего файла в репозитории под 50 Гб многих отпугивает от использования SimpleSDXL, что вполне не заслуженно. Но если Flux-модели весят уже по 20 Гб то пора бы и привыкнуть.

После того, как скачаются и пропишутся все зависимости, загрузится уже привычный интерфейс Fooocus но с некоторыми отличиями. Их тут будет поболее чем в форке типа DeFooocus.


Как вы видите внешне интерфейс изменился в плане расположения элементов. Для меня это непривычно, а удобно или нет это вопрос вкуса.

Чтобы начать работать с Flux, необходимо выбрать preset Flux+ это Flux[schnell] или Fluxdev, режим для [DEV] моделей (верхняя панелька). Автоматически начнет загружаться модель Flux NF4. Поэтому лучше заранее прописать в config.txt путь с расположением вашей модели (если вы ее скачали заранее).

Tuesday, 1 October 2024

Запуск PowerShell из Python.

Всем привет.

Рассмотрим простой метод интеграции Python и PowerShell.

Самое простое выглядит так что если бы мы смогли исполнять CmdLet PowerShell из Python и перехватывать результаты. Так как PowerShell является неким исполняемым процессом, тем самым мы можем применять стандартную библиотеку Python, предоставляющую возможность запуска поцессов. Это делается с применением стандартной библиотеки subprocess. В Python для применения любой стандартной или сторонней библиотеки вам следует импортировать её. В данном случае это просто:

import subprocess 

Это предоставляет доступ к методам и свойствам, содержащимся в данной библиотеке subprocess. Доступно монжество вариантов - наиболее популярным является применение метода check.output, который исполняет предписанный процесс и возвращает полученный результат. Вот некий пример:

runningProcesses = subprocess.check_output("powershell -Executionpolicy ByPass -Command Get-Process") 

Существует также аналог асинхронного варианта вызова подчинённого процесса, вызов метода await asyncio.create_subprocess_shell()), подробнее в книгах Asyncio в Python 3 Цалеба Хаттингха и Полном руководстве параллельного программирования на Python Куан Нгуена:

import asyncio

async def run(cmd):

    proc = await asyncio.create_subprocess_shell(cmd, stdout=asyncio.subprocess.PIPE,      stderr=asyncio.subprocess.PIPE

    )

    stdout, stderr = await proc.communicate()

    print(f'[{cmd!r} exited with {proc.returncode}]')

    if stdout:

        print(f'[stdout]\n{stdout.decode()}')

    if stderr:

        print(f'[stderr]\n{stderr.decode()}')

asyncio.run(run('powershell -Executionpolicy ByPass -Command Get-Process'))