Skip to content

Iyankz/botlinkmaster

Repository files navigation

BotLinkMaster v4.8.8

Bot Telegram untuk monitoring perangkat jaringan (router dan switch) dengan dukungan multi-vendor dan optical power monitoring.

Version Release Release Date Last Commit Stability NOC Ready Python Ubuntu Telegram Bot Protocol Multi Vendor License

Fitur Utama

  • βœ… 18 Vendor Support - Cisco, Huawei, ZTE, Juniper, MikroTik, Nokia, dll
  • βœ… Optical Power Monitoring - Cek TX/RX power dengan level indicator
  • βœ… SSH & Telnet - Dukungan kedua protokol dengan custom port
  • βœ… Multi Chat ID - Support user dan group Telegram
  • βœ… Timezone IANA - Konfigurasi timezone dengan format standar
  • βœ… Interface Monitoring - Cek status UP/DOWN dan deskripsi
  • βœ… Port Forwarding - Satu IP bisa untuk multiple device
  • βœ… Auto Update - Version checking, auto backup, dan rollback support

πŸ“Œ Note: OLT support akan tersedia di v5.x.x


πŸ“‹ Requirements

Operating System

OS Version Status
Ubuntu 22.04 LTS βœ… Supported
Ubuntu 24.04 LTS βœ… Supported
Debian 12 (Bookworm) βœ… Supported
Debian 13 (Trixie) βœ… Supported

Hardware

Komponen Minimal Recommended
CPU 1 Core 2 Core
RAM 512 MB 1 GB
Storage 1 GB 2 GB
Network 1 Mbps 10 Mbps

Software Dependencies

Software Version Keterangan
Python 3.8+ Required
pip3 Latest Required
git Latest Optional (untuk clone)

Network Requirements

Akses Port Keterangan
Telegram API 443 (HTTPS) Outbound ke api.telegram.org
SSH ke Device 22 (default) Ke perangkat jaringan
Telnet ke Device 23 (default) Ke perangkat jaringan

πŸ’‘ Note: Port SSH/Telnet bisa custom sesuai konfigurasi port forwarding


Instalasi

Cara 1: Otomatis (Recommended)

cd ~
git clone https://github.com/Iyankz/botlinkmaster.git
cd botlinkmaster
chmod +x install.sh
./install.sh

Edit konfigurasi:

nano .env

Start service:

sudo systemctl start botlinkmaster
sudo systemctl status botlinkmaster

Cara 2: Manual

# 1. Install system packages
sudo apt update
sudo apt install -y python3 python3-pip python3-venv

# 2. Clone repository
cd ~
git clone https://github.com/Iyankz/botlinkmaster.git
cd botlinkmaster

# 3. Create virtual environment
python3 -m venv venv
source venv/bin/activate

# 4. Install dependencies
pip install python-telegram-bot python-dotenv paramiko pytz

# 5. Configure
cp .env.example .env
nano .env

# 6. Test
python telegram_bot.py

Konfigurasi .env

# Telegram Bot Token (dari @BotFather)
TELEGRAM_BOT_TOKEN=123456789:ABCdefGHIjklMNOpqrsTUVwxyz

# Allowed Chat IDs (pisahkan dengan koma)
# Kosongkan untuk allow semua
ALLOWED_CHAT_IDS=216481118,-1001234567890

# Timezone (default: Asia/Jakarta)
TIMEZONE=Asia/Jakarta

Update dari Versi Sebelumnya

Metode 1: Auto Update (Recommended)

cd ~/botlinkmaster
chmod +x update.sh
./update.sh

Script akan otomatis:

  • βœ… Cek versi lokal vs remote (via file VERSION)
  • βœ… Backup semua file sebelum update
  • βœ… Download file terbaru dari GitHub
  • βœ… Preserve database dan konfigurasi
  • βœ… Restart service

Opsi Update Script

# Cek update saja (tanpa install)
./update.sh --check

# Force update tanpa cek versi
./update.sh --force

# Cek perubahan file (checksum comparison) - v4.8.8+
./update.sh --diff

# Rollback ke backup terakhir
./update.sh --rollback

# Rollback ke backup spesifik
./update.sh --rollback backup_20250122_123456

# Bantuan
./update.sh --help

πŸ’‘ v4.8.8+: Update script sekarang mendukung checksum-based update. Hotfix tanpa version bump akan terdeteksi dan bisa di-apply dengan --force.

Metode 2: Manual Update

Dari v4.5.x / v4.6.x / v4.7.x / v4.8.x ke v4.8.8:

cd ~/botlinkmaster

# 1. Stop service
sudo systemctl stop botlinkmaster

# 2. Backup
cp botlinkmaster.db botlinkmaster.db.bak
cp .env .env.bak

# 3. Update files
wget -O telegram_bot.py https://raw.githubusercontent.com/Iyankz/botlinkmaster/main/telegram_bot.py
wget -O botlinkmaster.py https://raw.githubusercontent.com/Iyankz/botlinkmaster/main/botlinkmaster.py
wget -O database.py https://raw.githubusercontent.com/Iyankz/botlinkmaster/main/database.py
wget -O vendor_commands.py https://raw.githubusercontent.com/Iyankz/botlinkmaster/main/vendor_commands.py
wget -O timezone_config.py https://raw.githubusercontent.com/Iyankz/botlinkmaster/main/timezone_config.py

# 4. Restart
sudo systemctl restart botlinkmaster
sudo systemctl status botlinkmaster

File yang DIUPDATE vs DIPERTAHANKAN

Update (Replace) Preserve (Jangan Replace)
telegram_bot.py botlinkmaster.db
botlinkmaster.py .env
vendor_commands.py timezone.conf
database.py botlinkmaster.log
timezone_config.py
update.sh
install.sh
README.md
CHANGELOG.md
VERSION

Multiple Chat ID & Group

Bot mendukung multiple user dan group. Tambahkan Chat ID di .env:

# Single user
ALLOWED_CHAT_IDS=216481118

# Multiple users
ALLOWED_CHAT_IDS=216481118,123456789

# Users dan groups (group ID negatif)
ALLOWED_CHAT_IDS=216481118,-1001234567890,-1009876543210

Cara Mendapatkan Chat ID

Untuk User:

  1. Kirim /myid ke bot setelah bot berjalan, atau
  2. Kirim pesan ke @userinfobot

Untuk Group:

  1. Tambahkan bot ke group
  2. Kirim /start di group
  3. Kirim /myid di group
  4. Group ID akan ditampilkan (angka negatif)

Perintah Bot

Info & Bantuan

Command Deskripsi
/start Info bot + Chat ID Anda
/help Bantuan lengkap
/help2 Contoh penggunaan
/myid Chat ID lengkap
/time Waktu saat ini

πŸ’‘ Tip: Chat ID langsung muncul saat /start, tidak perlu /myid lagi

Device Management

Command Deskripsi
/add Tambah perangkat
/list Daftar perangkat
/device [nama] Detail perangkat
/delete [nama] Hapus perangkat

Monitoring

Command Deskripsi
/int [device] List semua interface
/int [device] [page] Interface dengan pagination
/cek [device] [interface] Cek status interface
/redaman [device] [interface] Cek optical power

πŸ’‘ Alias: /int = /interfaces (keduanya sama, /int lebih singkat)

Konfigurasi

Command Deskripsi
/vendors Daftar vendor
/timezone Info timezone
/settz [timezone] Set timezone

Contoh Penggunaan

Tambah Perangkat dengan SSH

/add
nama: router-core
host: 192.168.1.1
username: admin
password: admin123
protocol: ssh
port: 22
vendor: cisco_ios
description: Router Core Kantor Pusat

Tambah Perangkat dengan Telnet

/add
nama: switch-old
host: 192.168.1.10
username: admin
password: admin123
protocol: telnet
port: 23
vendor: huawei

Tambah Perangkat dengan Port Forward

/add
nama: router-cabang-1
host: 10.0.0.1
username: admin
password: admin123
protocol: ssh
port: 2201
vendor: cisco_nxos

/add
nama: router-cabang-2
host: 10.0.0.1
username: admin
password: admin123
protocol: ssh
port: 2202
vendor: mikrotik

Cek Interface List

/int router-1
/int router-1 2

πŸ’‘ Bisa juga pakai /interfaces router-1 (sama dengan /int)

Cek Status Interface

/cek router-1 Gi0/0

Cek Optical Power

/redaman router-1 Gi0/0

Vendor yang Didukung

Vendor Kode Notes
Cisco IOS/IOS-XE cisco_ios Router & Switch
Cisco NX-OS cisco_nxos Nexus
Huawei VRP huawei Router & Switch
ZTE zte Router & Switch
Juniper JunOS juniper Router & Switch
MikroTik RouterOS mikrotik RouterOS v6/v7
Nokia SR-OS nokia Service Router
HP/Aruba hp_aruba ProCurve & Aruba
H3C Comware h3c H3C Switch
Ruijie ruijie Ruijie Switch
FiberHome fiberhome FH Switch
DCN dcn DCN Switch
BDCOM bdcom BDCOM Switch
Raisecom raisecom Raisecom
FS.COM fs FS Switch
Allied Telesis allied AT Switch
Datacom datacom Datacom Switch
Generic generic Fallback

Konfigurasi Timezone

Default timezone: Asia/Jakarta

Contoh Timezone Indonesia

  • Asia/Jakarta - WIB (UTC+7)
  • Asia/Makassar - WITA (UTC+8)
  • Asia/Jayapura - WIT (UTC+9)

Contoh Timezone Lainnya

  • Asia/Singapore - Singapore (UTC+8)
  • Asia/Tokyo - Japan (UTC+9)
  • Europe/London - UK (UTC+0/+1)
  • America/New_York - US Eastern (UTC-5/-4)

Set Timezone via Bot

/settz Asia/Jakarta

Lihat daftar timezone:

/timezone
/timezone Asia
/timezone Europe

Troubleshooting

Service tidak jalan

# Cek status
sudo systemctl status botlinkmaster

# Cek log
sudo journalctl -u botlinkmaster -f

# Restart
sudo systemctl restart botlinkmaster

MikroTik CRS326/CRS317 tidak merespons

v4.8.8 sudah memperbaiki masalah ini:

  • Extended timeout untuk switch besar
  • Support algorithm legacy SSH
  • Improved prompt detection

Jika masih bermasalah:

  1. Pastikan vendor diset ke mikrotik
  2. Pastikan user SSH memiliki akses penuh
  3. Cek RouterOS version (minimum v6.x)

Huawei CE6855 interface tidak lengkap

v4.8.8 fix:

  • Menggunakan display interface description untuk list interface
  • Extended timeout untuk switch dengan banyak port

Cisco IOS interface brief error

v4.8.8 fix:

  • Menggunakan show interface brief (bukan show ip interface brief)

Error: Connection Timeout

  1. Pastikan IP dan port benar
  2. Cek firewall: sudo ufw status
  3. Pastikan SSH/Telnet aktif di perangkat
  4. Test manual: ssh -p PORT user@host

Error: Authentication Failed

  1. Cek username dan password
  2. Pastikan user memiliki akses SSH/Telnet
  3. Beberapa perangkat perlu enable password

Systemd Service

sudo systemctl start botlinkmaster    # Start
sudo systemctl stop botlinkmaster     # Stop
sudo systemctl restart botlinkmaster  # Restart
sudo systemctl status botlinkmaster   # Status
sudo systemctl enable botlinkmaster   # Auto-start on boot
sudo journalctl -u botlinkmaster -f   # Live log

πŸ“ Changelog

v4.8.8 β€” Vendor-Specific Bug Fixes (Minimal)

Release Type: Bug Fix (Non-breaking)

Fixed

  • Cisco NX-OS: Description terpotong jika mengandung spasi
    • Masalah: "FS(OTB-B T1C1)" tampil sebagai "FS(OTB-B"
    • Solusi: Ambil description dari show running-config interface
  • Huawei VRP/Quidway: Status interface UNKNOWN
    • Masalah: /cek dan /redaman menampilkan UNKNOWN padahal port UP
    • Solusi: Tambah pattern untuk non-CloudEngine devices

Notes

  • Minimal changes, v4.8.7 baseline preserved
  • MikroTik, CloudEngine, dan vendor lain tidak terpengaruh
  • Database compatible dengan versi sebelumnya

v4.8.7 β€” SSH & Telnet Fixes

Fixed

  • MikroTik CRS326: SSH algorithm compatibility untuk RouterOS 7.16.x
  • Telnet: Login detection yang salah kirim command sebagai username
  • Huawei CE6855: Menggunakan display interface description

v4.7.0 β€” Multi-Vendor Expansion

Added

  • Support 18 vendor
  • Optical power monitoring
  • Interface pagination

v4.6.0 β€” Initial Stable Release

Added

  • Multi-vendor support
  • SSH dan Telnet support
  • Legacy device compatibility

Quick Reference

File Locations

File Path Keterangan
Bot files ~/botlinkmaster/ Semua file bot
Database ~/botlinkmaster/botlinkmaster.db SQLite database
Config ~/botlinkmaster/.env Konfigurasi (token, chat id)
Log ~/botlinkmaster/botlinkmaster.log Log file
Version ~/botlinkmaster/VERSION File versi untuk update
Changelog ~/botlinkmaster/CHANGELOG.md History perubahan
Service /etc/systemd/system/botlinkmaster.service Systemd service
Backup ~/botlinkmaster/backup_*/ Backup dari update.sh

Kontribusi

Pull request dan issue welcome di GitHub repository.


Catatan: Untuk bantuan lebih lanjut, gunakan /help dan /help2 di bot.

Dibuat dengan ❀️ oleh Iyankz

Lisensi

Proyek ini dilisensikan di bawah MIT License - lihat file LICENSE untuk detailnya.

Dukung Proyek Ini

Jika repositori ini membantu memudahkan pekerjaan Anda, mohon berikan bintang (Star) ⭐ pada repositori ini.