Shurik24
@Shurik24
Обычный программист самоучка

Как открывать и закрывать порты через Python?

Есть PowerShell скрипт на закрытие портов, можно ли сделать такой же скрипт но на питоне?
Видел что можно вызывать через питон PS команды, но это не совсем то что мне нужно

Вот так выглядит скрипт в PowerShell:
Включение

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }

New-NetFirewallRule -DisplayName "SPR1" -Direction Outbound -RemotePort 27000-27200,3097 -Protocol TCP -Action Block
New-NetFirewallRule -DisplayName "SPR2" -Direction Outbound -RemotePort 27000-27200,3097 -Protocol UDP -Action Block
New-NetFirewallRule -DisplayName "SPR3" -Direction Inbound -RemotePort 27000-27200,3097 -Protocol TCP -Action Block
New-NetFirewallRule -DisplayName "SPR4" -Direction Inbound -RemotePort 27000-27200,3097 -Protocol UDP -Action Block

Выключение

if (!([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs; exit }

Remove-NetFirewallRule -DisplayName "SPR1"
Remove-NetFirewallRule -DisplayName "SPR2"
Remove-NetFirewallRule -DisplayName "SPR3"
Remove-NetFirewallRule -DisplayName "SPR4"
  • Вопрос задан
  • 747 просмотров
Решения вопроса 1
Amoralny
@Amoralny
Python-разработчик
В модуле import os есть метод system(), который отправляет команды в shell.

import os

request = ('...') # здесь код для открытия или закрытия портов
code = os.system(request)

print(code) # если выводит 0 - то успешно

Ещё можно взять subprocess, а именно,- метод call(request, shell=True)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@azarij
В меру опытный никто
в силу моих унылых питонячих знаний, как напрямую рулить брандмауэром из питона я не нашел (можно, вроде, включить/выключить его полностью через wmi). однако чтобы убрать один уровень абстракции можно из питона запускать не команды powershell, а команды netsh. а ими уже можно брандмауэром как угодно рулить.

https://stackoverflow.com/questions/12381733/how-t...

кстати, если дело в кроссплатформенности powershell, то powershell core неплохо крутится на всевозможных линухах.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы