Сообщество - Лига Сисадминов

Лига Сисадминов

2 297 постов 18 813 подписчиков

Популярные теги в сообществе:

14

Ответ на пост «Драйвер мыши на 2.5Гб»1

Можно создать проект на фреймворках и библиотеках. Доработать его сможет любой программист и быстро разберется что там и как устроено. Весить такой проект будет очень много.

Можно написать мегаоптимальный код, который будет весить раз в 10 меньше, но писаться раз в 10 дольше. В итоге:

  • Доработать его будет сложно из-за структуры

  • Затраты на его выпуск будут в х10 больше (программисты дорогие)

  • К моменту запуска он, возможно, станет уже не актуален

Раньше экономили вынужденно: память и место на диске были жестко ограничены, ресурсы компьютера тоже. А зарплаты программистов были невелики. Вот и умещали полноценные игры с музыкой и графикой в 48 килобайт. Но написание программы растягивалось на годы.

4778

Драйвер мыши на 2.5Гб1

Драйвер мыши на 2.5Гб Программа, Короткопост, Windows, Драйвер, Компьютерная мышка, Logitech

2.5 Гига.

Папка с программой LogiOptions, чтобы настроить мышку и клавиатуру от замечательной компании Logitech. В который нельзя переназначить кнопки так, как тебе это нужно.

59

Как я контролирую доступ к порту через телеграм бота

Как я контролирую доступ к порту через телеграм бота Linux, Программа, Программирование, Telegram, Бот, Python, Длиннопост

Я курирую контроль непрерывной работы облачной записи видеопотока камер видеонаблюдения нескольких пунктов выдачи wildberries. И я часто сталкиваюсь с проблемами потери связи клиент-сервер. Будь то неуплата за интернет, отключение электричества, отказ оборудования и т.д. Решил немного автоматизировать процесс с помощью уведомлений из телеграмм бота. Процедура относительно несложная. Сейчас распишу все поэтапно.

  1. В первую очередь нужно создать телеграмм бота. Для этого в поиске телеги ищем пользователя @botfather, пишем ему команду /newbot и создаем своего бота. После создания бота получаем токен. Он пригодится нам позже.

  2. Для создания бота я буду использовать язык питон. Качаем и устанавливаем сам питон на офф сайте. Проверить установлен ли питон можно через команду "python --version" без кавычек. Если программа установлена правильно, вы получите ответ с версией программы. Через командную строку устанавливаем нужные нам библиотеки:

    "pip install python-telegram-bot"

    "pip install pyTelegramBotAPI"

    "pip install aiogram"

    Все, теперь перейдем к написанию кода.

  3. Для написания кода можно использовать любой текстовый, кодовый редактор. Хоть блокнот. Главное что бы расширение файла было .py.

    Перед тем как писать код, надо определиться какие цели мне нужно достичь. В моем случае я имею 4 ПВЗ с белыми айпи адресами. У меня открыт 554 порт, который я должен проверять. То есть я хочу проверять каждый адрес по очереди раз в 5 минут. Если порт не отвечает, через 2 минуты повторяю попытку еще раз. Если ответа нет, мне в телеграмм приходит уведомление где указано состояние порта (Отвечает или Недоступен), айпи и порт, адрес пункта выдачи. Так же я хочу добавить кнопку "Проверка доступа", что бы получить состояние всех пунктов списком. Снизу приведу готовый код.

    "import telebot

    import socket

    import threading

    import time

    # Телеграм токен вашего бота

    TOKEN = 'Здесь указываете ваш токен'

    bot = telebot.TeleBot(TOKEN)

    # Данные для проверки адресов. Пишите свои адреса и названия

    addresses = [

    {'ip': '192.168.1.127', 'port': 554, 'name': 'Москва'},

    {'ip': '192.168.1.128', 'port': 554, 'name': 'Казань'},

    {'ip': '192.168.1.129, 'port': 554, 'name': 'Киров'},

    {'ip': '192.168.1.126', 'port': 554, 'name': 'Краснодар'}

    ]

    check_interval = 300 # Интервал в секундах между проверками (5 минут)

    retry_interval = 120 # Интервал повторной проверки в секундах (2 минуты)

    checking = False # Флаг для управления проверками

    # Функция для проверки доступности порта

    def check_port(ip, port):

    try:

    with socket.create_connection((ip, port), timeout=5):

    return True

    except (socket.timeout, socket.error):

    return False

    # Фоновая задача для постоянной проверки

    def periodic_check(chat_id):

    global checking

    while checking:

    for address in addresses:

    ip, port, name = address['ip'], address['port'], address['name']

    if not check_port(ip, port):

    time.sleep(retry_interval)

    if not check_port(ip, port):

    bot.send_message(chat_id, f"🔴 {name} ({ip}:{port}) - Не отвечает")

    time.sleep(check_interval)

    # Обработчик команды /start

    @bot.message_handler(commands=['start'])

    def start(message):

    global checking

    if not checking:

    checking = True

    bot.send_message(message.chat.id, "✅ Бот запущен. Начинаем проверки.")

    threading.Thread(target=periodic_check, args=(message.chat.id,), daemon=True).start()

    else:

    bot.send_message(message.chat.id, "ℹ️ Бот уже работает.")

    # Обработчик команды /stop

    @bot.message_handler(commands=['stop'])

    def stop(message):

    global checking

    if checking:

    checking = False

    bot.send_message(message.chat.id, "⏹️ Проверки остановлены.")

    else:

    bot.send_message(message.chat.id, "ℹ️ Бот уже остановлен.")

    # Обработчик кнопки "Проверка доступа"

    @bot.message_handler(func=lambda message: message.text == "Проверка доступа")

    def manual_check(message):

    results = []

    for address in addresses:

    ip, port, name = address['ip'], address['port'], address['name']

    status = "🟢 Доступен" if check_port(ip, port) else "🔴 Не отвечает"

    results.append(f"{status} - {name} ({ip}:{port})")

    bot.send_message(message.chat.id, "\n".join(results))

    # Добавление кнопки "Проверка доступа"

    @bot.message_handler(commands=['menu'])

    def show_menu(message):

    markup = telebot.types.ReplyKeyboardMarkup(resize_keyboard=True)

    markup.add(telebot.types.KeyboardButton("Проверка доступа"))

    bot.send_message(message.chat.id, "📋 Выберите действие:", reply_markup=markup)

    # Запуск бота

    bot.polling(none_stop=True)"

    Не забудьте вставить свой токен и вписать свои айпи адреса. Сохраняем файл с названием bot.py например на рабочем столе. Если все сделали правильно, то должно выглядеть примерно так:

Как я контролирую доступ к порту через телеграм бота Linux, Программа, Программирование, Telegram, Бот, Python, Длиннопост

Пример

Вроде все работает. Мы запустили программу на вашем ПК. Но бот будет фунциклировать, пока ваша программа запущена и компьютер работает. Что бы бот работал 24/7 нужен VPS сервер.

4. Запуск на VPS сервере. Арендуем любой облачный сервер. У меня это Beget. У них самый дешевый сервер стоит 210 рублей в месяц, а запустить на нем можно до 10 таких ботов одновременно. После аренды облачного сервера устанавливаем на него какой либо дистрибутив линукс. У меня это Ubuntu. Заходим через SSH и устанавливаем на него питон командой

"sudo apt update"

"sudo apt install python3 python3-pip python3-venv"

Устанавливаем библиотеки

"pip install python-telegram-bot"

Через файловый менеджер создаем папку на сервере и перебрасываем туда наш файл bot.py

В командной строке перемещаемся в нужную нам директорию, и запускаем файл командой "python3 bot.py"

5. Вуаля, живем и радуемся. Кстати, не забудьте настроить работу файла в фоновом режиме и автоматический запуск.

UPD:

По многочисленным просьбам закинул готовый скрипт на я.диск https://disk.yandex.ru/d/XFOk3CNmYGsGOw

Показать полностью 1
Отличная работа, все прочитано!