ربات تلگرامی TunnelCheker یک ابزار قدرتمند و خودکار برای نظارت بر وضعیت پایدار شبکه و سرورهای شماست. این ربات در بازههای زمانی مشخص، سرورهای تعریفشده را پینگ کرده و وضعیت پکت لاست (Packet Loss) را به دقت بررسی میکند. در صورت عبور پکت لاست از آستانهی تعریفشده (شناسایی قطعی) یا بازگشت به حالت پایدار (رفع مشکل)، ربات بهصورت خودکار گزارشهایی دقیق و کامل به کانال یا گروه تلگرامی شما ارسال میکند.
این پروژه با یک اسکریپت مدیریت هوشمند ارائه میشود که فرآیند نصب، پیکربندی، حذف و پشتیبانگیری را از طریق یک منوی تعاملی (TUI) بسیار ساده کرده است.
💎 ویژگیهای کلیدی
✅ پینگ هوشمند: بررسی دورهای سرورهای مقصد بر اساس آدرس IPv4 و IPv6 برای پکت لاست و زمان پاسخگویی.
🎉 اطلاعرسانی رفع مشکل: ارسال گزارش خودکار پس از پایدار شدن وضعیت و بازگشت پکت لاست به صفر.
⚙️ معماری Master/Client: قابلیت نصب در دو حالت کلاینت (برای پینگ کردن روی سرورهای مختلف) و مستر (برای دریافت گزارشها و ارسال به تلگرام)، که امکان مدیریت متمرکز دهها سرور را فراهم میکند.
این ابزار میتواند در دو حالت مختلف نصب و اجرا شود:
حالت Client :
وظیفه: اجرای پینگهای دورهای روی سرورهای تعریفشده در فایل config.json
عملکرد: کلاینت پس از انجام پینگ، نتایج را برای سرور Master ارسال میکند. چندین کلاینت میتوانند گزارشهای خود را به یک سرور Master ارسال کنند.
حالت Master :
وظیفه: دریافت و تحلیل دادههای ارسالی از تمام کلاینتها.
عملکرد: سرور Master قلب سیستم اطلاعرسانی است. این سرور پس از دریافت گزارش از کلاینتها، وضعیت پکت لاست را بررسی کرده و در صورت نیاز، پیام هشدار یا رفع مشکل را از طریق ربات تلگرام به کانال یا گروه مشخصشده ارسال میکند.
🛠️ نصب و راهاندازی
کافیست دستور زیر را در ترمینال سرور خود وارد و اجرا کنید:
TunnelCheker script:
bash -c "$(curl -fsSL Https://raw.githubusercontent.com/Eslender73/telegram_TunnelCheker/main/manager.sh)"⚙️ نحوه استفاده و مدیریت
پس از نصب، کافیست در هر مسیری از ترمینال خود دستور زیر را وارد کنید تا منوی مدیریت دوباره نمایش داده شود:
managerاین منو گزینههای زیر را در اختیار شما قرار میدهد:
Install TunnelCheker: برای نصب اولیه (در صورتی که برنامه نصب نباشد).
Edit Configuration: برای ویرایش سریع فایلهای config.json یا master_config.json. پس از ذخیره، سرویس به صورت خودکار ریاستارت میشود.
Uninstall TunnelCheker: برای حذف کامل برنامه و سرویس systemd. این گزینه از شما میپرسد که آیا مایل به نگهداری فایلهای کانفیگ خود هستید یا خیر.
Restore Backup: برای مشاهده لیست پشتیبانهای موجود و بازگردانی تنظیمات از یک نسخه پشتیبان خاص.
Exit: برای خروج از برنامه.
📝 پیکربندی (Configuration)
تنظیمات اصلی از طریق دو فایل JSON انجام میشود.
۱. فایل config.json (برای Master و Client)
این فایل حاوی اطلاعات سروری است که اسکریپت روی آن اجرا میشود و همچنین لیست مقصدهایی که باید پینگ شوند.
مثال:
{
"CLname": "Germany-Hetzner",
"CLipv4": "***.***.***.***",
"ID_ip4/ip6_name": [
"***.***.***.***,Server-1",
"***.***.***.***,Server-2",
"***.***.***.***,Server-3"
],
"ping_interval_seconds": 60,
"packet_count": 10,
"packet_loss_threshold_percent": 20,
"Master_server_info": "master server ip:port" #(Clients)
}توضیحات فایل config.json :
CLname: نام دلخواه برای سرور کلاینت (مثلاً نام دیتاسنتر).
CLipv4: آدرس IPv4 سروری که کلاینت روی آن نصب است.
ID_ip4/ip6_name: لیستی از سرورهایی که باید پینگ شوند. هر آیتم یک رشته با فرمت "ID,IPv4,IPv6,Name" است.
ID: یک شماره منحصر به فرد برای هر سرور.
IPv4: آدرس IPv4 مقصد.
IPv6: آدرس IPv6 مقصد (اگر وجود ندارد خالی بگذارید).
Name: نام دلخواه برای سرور مقصد.
ping_interval_seconds: فاصله زمانی بین هر بار پینگ (به ثانیه).
packet_count: تعداد بستههایی که در هر پینگ ارسال میشود.
packet_loss_threshold_percent: آستانه مجاز پکت لاست (به درصد). اگر پکت لاست از این مقدار بیشتر شود، پیام هشدار ارسال میگردد.
master server ip:port: در سرور های کلاینت برای ارسال داده به سرور مستر .مشخصات ایپی و پورت سرور مستر۲. فایل master_config.json (فقط برای Master)
این فایل حاوی اطلاعات محرمانه ربات تلگرام است و فقط روی سرور Master استفاده میشود.
مثال:
"listen_port": 9090,
"report_timeout_minute": 15,
"expected_clients": {
"Number of Servers": {
"CLipv4_M": "************",
"CLname_M": "Germany-Hetzner",
"tests": {
"1": "Server-1",
"2": "Server-2",
"3": "Server-3"
}
}
{
"telegram_bot_token": "************",
"telegram_chat_id": "************"
}توضیحات فایل master_config.json :
listen_port: پورت برای دریافت اطلاعات از سرور های کلاینت
report_timeout_minute: مقدار زمان تایم اوت در یافت نکردن اطلاعات
expected_clients: سرور هایی که مستر انتظار دارد از انها اطلاعاتی دریافت کند که در صورت دریافت نشدن اطلاعات ان را نمایش دهد
telegram_bot_token: توکن ربات تلگرامی شما که از BotFather دریافت کردهاید.
telegram_chat_id: شناسه چت، کانال یا گروهی که میخواهید گزارشها به آنجا ارسال شود.
Number of Servers:زیرا که سرور مستر به صورت پیش فرض یک سرور کلاینت حساب و مورد تست قرار میگیرد ، پس این مقدار با عدد 2 شروع میگردد🤝 این پروژه با کمک هوش مصنوعی درست شده است بنابراین ممکن است چیزهایی درون آن رعایت نشده باشد در صورتی که قادر بودید میتونید آن را فورک و تکمیل کنید.