Надумав доповнити бот який сповіщує про проблеми ще функціями перевірки, ну і от що вийшло: #!/bin/bash # --- НАЛАШТУВАННЯ --- TOKEN="КРАКОЗЯБРИ_НА_ЗАМІНУ" API_URL="https://api.telegram.org/bot$TOKEN" OFFSET=0 # --- НАЛАШТУВАННЯ ДРУГОГО СЕРВЕРА --- REMOTE_USER="КОРИСТУВАЧ" REMOTE_IP="ІП_АДРЕСА" PORT="ЦИФРА_ПОРТА_ССШ" # Використовуємо одну команду для всього SSH_CMD="ssh -o ConnectTimeout=5 -p $PORT $REMOTE_USER@$REMOTE_IP" # --- ФУНКЦІЯ ВІДПРАВКИ --- send_message() { local chat_id="$1" local text="$2" local keyboard='{ "keyboard":[ ["🖥 S1: Статус", "🖥 S2: Статус"], ["💾 S1: Диск", "💾 S2: Диск"], ["⏱ Аптайм (Всі)", "# Jail (Всі)"] ], "resize_keyboard":true }' curl -s -X POST "$API_URL/sendMessage" \ -d chat_id="$chat_id" \ -d text="$text" \ -d parse_mode="HTML" \ -d reply_markup="$keyboard" > /dev/null } # --- ГОЛОВНИЙ ЦИКЛ --- echo "Бот запущено..." while true; do UPDATES=$(curl -s "$API_URL/getUpdates?offset=$OFFSET&timeout=30") if [ -z "$UPDATES" ] || [[ "$UPDATES" != *"true"* ]]; then sleep 5 continue fi COUNT=$(echo "$UPDATES" | jq '.result | length') if [ "$COUNT" -gt 0 ]; then for (( i=0; i/dev/null | grep "Banned IP list" | awk '{print $NF}') [ -z "$JAIL1" ] && JAIL1="Помилка (немає прав)" JAIL2=$($SSH_CMD "sudo fail2ban-client status sshd 2>/dev/null | grep 'Banned IP list' | awk '{print \$NF}'") [ -z "$JAIL2" ] && JAIL2="Помилка/Недоступний" RESPONSE="🚫 Fail2Ban (SSHD banned): 1. Local: $JAIL1 IP 2. Remote: $JAIL2 IP" ;; *) RESPONSE="Оберіть команду з меню 👇" ;; esac if [ -n "$CHAT_ID" ] && [ "$CHAT_ID" != "null" ]; then send_message "$CHAT_ID" "$RESPONSE" fi done fi done