![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 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 |
|