Telegram-бот для администрирования сервера.
Версия: 1.0
Язык: Python 3.12
Фреймворк: python-telegram-bot 20.7
- Откройте @BotFather в Telegram
- Отправьте
/newbot - Введите имя:
My Server Bot - Введите username:
xloyvpacdg_bot(должен заканчиваться наbot) - Скопируйте API токен
Способ 1: Через @userinfobot
- Откройте @userinfobot в Telegram
- Нажмите Start
- Скопируйте ваш Id (число, например
5610580916)
Способ 2: Через @RawDataBot
- Откройте @RawDataBot в Telegram
- Нажмите Start
- Найдите поле
"id": 5610580916
Способ 3: Вручную через бота
После запуска бота отправьте /whoami — он покажет ваш ID.
cd /root/git/server-bot
nano config.pyПример config.py:
# Server Bot Configuration
# ========== BOT TOKEN ==========
# Получите токен в @BotFather
BOT_TOKEN = "123456789:ABCdefGHIjklMNOpqrsTUVwxyz"
# ========== OWNER ID ==========
# Ваш Telegram ID (узнайте через @userinfobot)
OWNER_ID = 5610580916
# ========== ALLOWED USERS ==========
# Список Telegram ID пользователей с доступом
ALLOWED_USERS = [OWNER_ID]Замените:
BOT_TOKENна ваш токен из @BotFatherOWNER_IDна ваш ID из @userinfobot
config.py содержит секреты — НЕ коммитьте в Git!
ALLOWED_USERS = [5610580916, 123456789, 987654321]Просто добавьте их Telegram ID в список.
cd /root/git/server-bot
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txtsudo cp server-bot.service /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable server-botsudo systemctl start server-bot
sudo systemctl status server-bot| Команда | Описание |
|---|---|
/top |
Топ процессов по CPU |
/network |
Статистика сети (интерфейсы, порты) |
/domains |
Список доменов nginx |
/status |
Полная информация о сервере |
/services |
Статус всех служб |
/disk |
Использование диска |
/ram |
Использование RAM |
| Команда | Описание |
|---|---|
/restart <service> |
Перезапустить службу |
/start <service> |
Запустить службу |
/stop <service> |
Остановить службу |
/enable <service> |
Включить в автозапуск |
/disable <service> |
Отключить из автозапуска |
/logs <service> [lines] |
Логи службы (journalctl) |
/journal <service> [lines] |
Журнал systemd |
Примеры:
/restart telegrab
/stop unisignal
/start postgresql
/logs telegrab 50
/journal ssh 30
/enable postgresql
| Команда | Описание |
|---|---|
/fail2ban |
Статус Fail2ban, забаненные IP |
/ssh |
Активные SSH сессии |
| Команда | Описание |
|---|---|
/backup |
Создать полный бэкап |
/backups |
Список последних бэкапов |
| Команда | Описание |
|---|---|
/ping |
Проверка связи |
/whoami |
Информация о пользователе |
/reboot |
Перезагрузка сервера |
/help |
Справка по командам |
/start |
Приветствие |
- ✅ Только авторизованные пользователи (ALLOWED_USERS) могут управлять сервером
- ✅ Парольная аутентификация отключена (только SSH ключи)
- ✅ Бот использует локальные команды от root
- ✅ Токен хранится в config.py (НЕ коммитьте в Git!)
- ✅ Markdown разметка сообщений
- ✅ Безопасная обработка ввода (не повторяет пользовательские данные)
- ✅ Валидация всех входных данных
# Статус
sudo systemctl status server-bot
# Логи в реальном времени
sudo journalctl -u server-bot -f
# Перезапуск
sudo systemctl restart server-bot
# Остановка
sudo systemctl stop server-bot
# Автозапуск
sudo systemctl enable server-bot/root/git/server-bot/
├── bot.py # Основной код (670+ строк)
├── config.py # Конфигурация (токен, ID) ⚠️ не коммить!
├── requirements.txt # Зависимости Python
├── server-bot.service # Systemd служба
├── .gitignore # Git исключения
├── venv/ # Виртуальное окружение
└── README.md # Документация
python-telegram-bot==20.7
requests==2.31.0
- НЕ коммитьте
config.pyв Git — содержит токен бота! - Сохраните токен в надёжном месте (менеджер паролей)
- Добавляйте только доверенных пользователей в
ALLOWED_USERS - Регулярно обновляйте зависимости:
pip install --upgrade -r requirements.txt - Не передавайте пользовательский ввод в ответы бота (защита от XSS)
sudo systemctl status server-bot
sudo journalctl -u server-bot -n 50Проверьте config.py — токен должен быть без лишних кавычек
Проверьте OWNER_ID в config.py (должен совпадать с вашим Telegram ID)
Проверьте имя службы: /usr/bin/systemctl list-units --type=service
Убедитесь, что команда введена правильно. Используйте /help для списка команд.
| Метрика | Значение |
|---|---|
| Команд | 23 |
| Строк кода | 700+ |
| Зависимостей | 12 пакетов |
| Версия | 1.0 |
Владелец: JeBance
Telegram: @JeBance
GitHub: https://github.com/JeBance
MIT License — свободное использование с указанием автора.