|
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
| Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - Python - Как запустить прослушивание портов и разные команды к ним при обращении? |
|
|
Разное - Python - Как запустить прослушивание портов и разные команды к ним при обращении?
|
|
Старожил Сообщения: 431 |
Есть такой скрипт
Скрытый текст
import socket
import os
import logging
import psutil
WOL_PORT = 9999
INTERFACE_NAME = 'My Lan'
INTERFACE_NAME_ARCH = 'enp37s0'
logging.basicConfig(format='%(levelname)s: %(asctime)s %(message)s', level=logging.INFO)
logger = logging.getLogger(__name__)
def get_ip_mac_address(interface_name: str) -> tuple:
ip_addr = mac_addr = None
for item in psutil.net_if_addrs()[interface_name]:
addr = item.address
if '.' in addr:
ip_addr = addr
elif ('-' in addr or ':' in addr) and '::' not in addr:
mac_addr = addr.replace(':', '-').upper()
if not ip_addr or not mac_addr or ip_addr == '127.0.0.1':
raise 'Не удалось получить IP или MAC-адрес сетевого интерфейса'
return ip_addr, mac_addr
def assemble_wol_packet(mac_address: str) -> str:
return f'{"FF-" * 6}{(mac_address + "-") * 16}'
def check_is_wol_packet(raw_bytes: bytes, assembled_wol_packet: str) -> int:
decoded_packet_data = '-'.join(f'{byte:02x}' for byte in raw_bytes).upper() + '-'
if decoded_packet_data == assembled_wol_packet:
return 1
return 0
def run_udp_port_listener(port: int, interface_name: str):
ip_addr, mac_addr = get_ip_mac_address(interface_name)
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_socket.bind((ip_addr, port))
logger.info(f'Listening on {ip_addr}:{port}')
assembled_wol_packet = assemble_wol_packet(mac_addr)
while True:
data, _ = server_socket.recvfrom(1024)
is_wol_packet = check_is_wol_packet(data, assembled_wol_packet)
if is_wol_packet == 1:
if os.name == 'posix':
os.system('reboot')
elif os.name == 'nt':
os.system('D:\\TotalCMD\\Launching\\Soft\\System\\EasyUEFI\\App\\EasyUEFI\\bin\\EasyUEFIC.exe --one-time-boot --index 6 & shutdown -r -t 0 -f')
if os.name == 'posix':
run_udp_port_listener(WOL_PORT, INTERFACE_NAME_ARCH)
elif os.name == 'nt':
run_udp_port_listener(WOL_PORT, INTERFACE_NAME)
Нужно запускать разные программы/команды при запуске пакета wol с андроид. Сейчас приходиться плодить запуск 4-5 скриптов, чтобы выполнять разные команды. Можно ли это всё в одно собрать? Например если обращение идёт к порту 9999, то запустить то-то, если к 9998, то другую команду. |
|
|
Отправлено: 21:48, 26-10-2024 |
|
|
Участник сейчас на форуме |
|
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
| Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
| CMD/BAT - [решено] Поиск файла по маске и выполнение с ним команды | idenchik1488@vk | Скриптовые языки администрирования Windows | 4 | 14-08-2017 19:11 | |
| Proxy/NAT - Переброс портов при обращении на конкретный домен | kim-g | Сетевые технологии | 1 | 15-09-2016 01:44 | |
| VBS/WSH/JS - Циклическое выполнение команды при обращении к файлу | НариманБ | Скриптовые языки администрирования Windows | 1 | 29-07-2016 13:00 | |
| Ошибка - Ненормальные тормоза в XP при обращении к харду, как избавится? | DENIS451 | Microsoft Windows 2000/XP | 12 | 16-09-2009 06:27 | |
| Доступ - Открытие портов и подкючение к ним. | masergey | Microsoft Windows 2000/XP | 3 | 12-03-2008 20:00 | |
|