Задать вопрос
  • Как найти проблему в локальной сети?

    @Gansterito
    Нужно начать со структурирования сети:
    1) Убрать гирлянды, каждый коммутатор должен быть включен в один центральный "агрегатор", лучше L3.
    2) Сегментировать L2 домены с помощью VLAN.
    3) Настроить механизмы Loopback detection/Storm control и пр.
    4) Настроить DHCP Snooping/IP Source Guard и пр. для ограничения статических IP.
    5) Мониторинг: опрос всех устройств по SNMP, сбор логов по SYSLOG.
    Ответ написан
    Комментировать
  • Почему VS Code не распознает, что функция вернет tuple?

    Vindicar
    @Vindicar
    RTFM!
    Потому что оба оверлоада неразличимы - они ОБА показывают один аргумент типа bool.
    И да, а если аргумент не указан, что вернёт функция? Из твоего кода это неясно вообще, так как у тебя два противоречащих варианта.
    Тебе надо что-то типа...
    @overload
    @classmethod
    def get_mac_address(cls, with_gateway: typing.Literal[False] = False) -> str:
        ...
    @overload
    @classmethod
    def get_mac_address(cls, with_gateway: typing.Literal[True]) -> tuple[str, str]:
        ...
    @classmethod
    def get_mac_address(cls, with_gateway: bool = False) -> typing.Union[str, tuple[str, str]]:
        ...
    Ответ написан
    3 комментария
  • Где у меня дыра в SMTP?

    ValdikSS
    @ValdikSS
    Запустите mailq и посмотрите, что за письма и от кого у вас в очереди. Далее смотрите заголовки в самих файлах писем, в них будет IP-адрес источника.

    Если источник 127.0.0.1, то могу предположить, что у вас на этом сервере установлен некий прокси (HTTP/SOCKS), разрешающий доступ в локальную сеть, и письма отправляют через прокси, а postfix считает их локальными и не требует аутентификации — это довольно типичная мисконфигурация.

    Если прокси нет, быть может, у вас включена маршрутизация общая, маршрутизация в localhost (net.ipv4.conf.*.route_localnet), в таком случае соседи по датацентру также могут маршрутизировать вам трафик в 127.0.0.1 (это нетипичная и редкая конфигурация, но иногда такое может встречаться [1], [2]).
    Ответ написан
    2 комментария
  • Как настроить проброс ARP пакетов (ARP-proxy) через OpenVPN туннель Mikrotik-Mikrotik?

    @agpecam
    Мы не знаем достоверно как "обнюхиваются" приложение и телевизор. Broadcast-arp - это может быть просто следствием пробы определенных портов. Ок, если предположить, что приложение ищет в сети устройства определенного производителя по первым 3 октетам MAC, то значит оно сканирует все IP подсети, к которой подключено. Иных способов, кроме ARP запрос who has IP... для получения MAC протокол ARP не предполагает. В этом случае, во-первых, у вас телевизор в другой подсети, а во-вторых ARP-proxy на такой запрос ответит своим MAC, а не MAC телевизора с закономерными последствиями. Если ищет перебором IP : some port и в приложении нет возможности задать не свою подсеть - результат тот же.
    Вам по сути нужно поместить сети офисов в один L2 сегмент, т. е. на микротиках сделать OpenVPN mode: ethernet, внести tap интерфейсы в bridge локальной сети и дать понять приложению, что удаленная сеть находится с ним в одном L2 сегменте, например, с помощью DHCP option 121, т. е. переделать всю сеть ради телевизора. Оно вам надо?
    Ответ написан
    1 комментарий
  • Как настроить webhook для бота aiogram 3 и nginx?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Код на python использует polling, причём тут вебхуки? Для вебхуков надо web app сделать, который их принимает. Вот в документации пример: https://docs.aiogram.dev/en/latest/dispatcher/webh... и там же есть образец настройки nginx.
    Ответ написан
    Комментировать
  • Стоит ли идти на практику в компанию?

    Wispik
    @Wispik
    Почему часто ставится вопрос или то или то? Почему нельзя совмещать? Никто не мешает ходить на практику, а в свободное время делать свой пет проект (условно по тем же выходным). Тем более пет проект - это не фултайм работа, а хобби.
    Плюсы практики это общение с людьми, которые умеют писать код. И как ответили выше уйти можно всегда
    Ответ написан
    Комментировать
  • Стоит ли идти на практику в компанию?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Если это официальный найм с записью в трудовой, то идти не задумываясь. Сейчас тысячи обладателей вышки месяцами дерутся за вакансии, готовые работать даже бесплатно ради получения первой записи в трудовую.
    Ответ написан
    Комментировать
  • Стоит ли идти на практику в компанию?

    Maksim_64
    @Maksim_64
    Data Analyst
    Совместить плюсы первого и второго варианта. Идти на стажировку и развиваться самому. Улучшением текущих и получением новых навыков, занимаются и уже работающие опытные специалисты, а у тебя все еще впереди. Зовут в какую то компанию иди, уйти можно всегда, плохо когда никуда не зовут.
    Ответ написан
    Комментировать
  • Как ввести несколько строк в стандартный ввод python?

    Vindicar
    @Vindicar
    RTFM!
    Стандартный ввод - это файл, и его технически можно "прочитать до конца". Пример:
    import sys
    for line in sys.stdin:
        print('Got', repr(line))
    print('Done')

    Запусти как обычно, введи несколько строк, а потом в терминале (если под виндой) нажми Ctrl-Z, затем Enter.
    Это пошлёт сигнал "конец файла", и дальнейшие попытки ввода через input() будут не успешными.

    Также можешь записать строки в текстовик, и запустить файл с перенаправлением ввода:
    python3 main.py < data.txt
    Тогда скрипт тоже получит сигнал о конце ввода, когда файл закончится.
    Ответ написан
    1 комментарий
  • Почему при запросе фотокарточки из БД с помощью телеграмм-бота возникает ошибка?

    @Everything_is_bad
    peck69 просит вас как эксперта ответить на вопрос
    тебе еще вчера же ответили, используй FSInputFile, а не InputFile, даже в доки потыкали.
    Ответ написан
    Комментировать
  • Где найти гайд по deeplink aiogram3?

    lk13s
    @lk13s
    Ответ написан
    Комментировать
  • Как останавливать зависящие контейнеры от контейнера базы данных, если бд остановится/крашнится?

    chupasaurus
    @chupasaurus
    Сею рефлекторное, злое, временное
    Поле depends_on определяет только последовательность запуска и удаления сервисов, к остановке отношения не имеет.
    Искомое вами поведение задаётся через healthcheck проверки доступности базы в backend и бэкенда во frontend... или простой docker compose -f путь/до/docker-compose.yaml stop, т.е. просто остановить все сервисы.
    Ответ написан
    Комментировать
  • Как пололучить int8 из байта?

    @rPman
    пакет struct метод unpack
    data=b'\xc8'
    struct.unpack('b', data)[0]

    data типа bytes, можно считывать из файла, открывая как бинарный файл, флаги 'rb'
    Ответ написан
    1 комментарий
  • Как написать тг бот-секундомер на питоне?

    Vindicar
    @Vindicar
    RTFM!
    В коде дикая каша - или у тебя отступы уехали чёрт знает куда. Такое не заработает.
    Начни с официальных примеров, найди среди них наиболее похожий - скажем, вот этот таймер. Разберись, как он устроен, и потихоньку модифицируй.
    Разумеется, предполагается, что ты хотя бы насколько-то знаешь питон. Если это не так - откладываешь бота и учишь язык.
    Ответ написан
    Комментировать
  • Как сделать инсталлятор mongoDB и собственного приложения одновременно?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    RTFM - MongoDB Manual / Installation / Community Edition / Install on Windows: https://www.mongodb.com/docs/manual/tutorial/insta...
    Ответ написан
    Комментировать
  • Не настраиваются разные уровни логирования в python logging?

    Vindicar
    @Vindicar
    RTFM!
    Ты задал уровень WARNING для самого логгера (не для хэндлеров), поэтому он INFO отбрасывает сходу. До хэндлеров ничего не доходит просто.
    Я бы использовал эту либу немного по-другому (пример с её гитхаба)
    t_handler = tg_logger.TgLoggerHandler(users=[...], token=TELEGRAM_TOKEN)
    t_handler.setLevel(logging.WARNING)
    logger.addHandler(t_handler)

    Так куда более похоже на обычные лог-хэндлеры, проще управлять и читать даже если с либой мало знаком.
    Ну или если очень хочется setup(), то так:
    t_handler = tg_logger.setup(logger, token=token, users=users, tg_format="<b><u>%(name)s</u> : %(levelname)s</b>\n\n<code>%(message)s</code>")
    t_handler.setLevel(logging.WARNING)


    Так что логгеру задай уровень подетальнее, INFO или даже DEBUG, а тонкую настройку делай на уровне хэндлеров.
    Ответ написан
    2 комментария
  • Почему datetime.fromtimestamp приводит UTC в локальный naive?

    @Everything_is_bad
    Ну почему сначала не почитать доки, а не бежать сюда, там же явно пишут что "return the local date" https://docs.python.org/3/library/datetime.html#da... и там же явно пишут что есть utcfromtimestamp
    Ответ написан
    2 комментария
  • Qrencode, как сгенерировать qr код на каждую новую строку?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    while read p; do
      qrencode "$p"
    done <file.txt
    Ответ написан
    2 комментария
  • Можно ли установить личность?

    v3xx
    @v3xx
    // _ AppSec // Bug Bounty / Legal Hacking
    Привет.

    Можно ли установить личность?

    Можно, зависит от вычисляющего, его доступов/используемого ПО и политики безопасности компании. Подключаясь к вашей рабочей точке, смартфон сообщает: а) имя устройства; б) MAC-адрес модуля Wi-Fi. При других сценариях, можно анализировать трафик и выцеплять из него интересующую информацию. В совокупности этого будет достаточно для идентификации.

    Бесконтрольное подключение личных девайсов к рабочим сетям есть плохая практика.
    Ответ написан
    Комментировать