Jump to content

Recommended Posts

Posted

Здравствуйте. Поиск ничего не дал, поэтому решил написать.
На Ubuntu 20.04, у меня настроены уведомления, с отправкой сообщения в Телеграм.
Там это реализовано так, создал скрипт, закинул его в директорию /etc/profile.d/ssh-to-telegram-notififations.sh

USERID="мой юзер айди"
KEY="мой апи токен"
TIMEOUT="10"
URL="https://api.telegram.org/bot$KEY/sendMessage"
DATE_EXEC="$(date "+%d %B %Y %H:%M")"
if [ -n "$SSH_CLIENT" ]; then
        IP=$(awk '{print $1}' <<< $SSH_CLIENT)
        PORT=$(awk '{print $3}' <<< $SSH_CLIENT)
        HOSTNAME=$(hostname -f)
        IPADDR=$(hostname -I | awk '{print $1}')
        TEXT="$DATE_EXEC
        Вход пользователя ${USER} по ssh на $HOSTNAME ($IPADDR)
        С $IP через порт $PORT"
        curl -s --max-time $TIMEOUT -d "chat_id=$USERID&disable_web_page_preview=1&text=$TEXT" $URL > /dev/null
fi

И все работает.

А как реализовать это в Entware, не пойму. 

2021-03-15_10-11-37.png

  • Thanks 1
  • 4 years later...
Posted (edited)
В 15.03.2021 в 10:14, Muwahhid сказал:

А как реализовать это в Entware, не пойму. 

2021-03-15_10-11-37.png

 

1) Создаем скрипт что под командами жирным выделен:
vi /opt/root/open.ssh.sh

2) вставляем и сохраняем, после сохранения даем права:

chmod +x /opt/root/open.ssh.sh

3) ну и запускаем установочный скрипт для настройки и установки:

/opt/root/open.ssh.sh

️ После запуска спросит id пользователя и token бота телеграм ️ 

этот код что ниже жирным выделен вставить при создании командой vi

#!/bin/sh
# Установочный скрипт для SSH уведомлений в Telegram о входе пользователя в ssh от @pegakmop

SCRIPT_PATH="/opt/bin/open.ssh.sh"
PROFILE_PATH="/opt/root/.profile"
STARTUP_LINE="/opt/bin/open.ssh.sh &"

echo "=========================================="
echo "  Установка SSH уведомлений в Telegram о входе в ssh"
echo
echo "create by @pegakmop"
echo
"=========================================="
echo ""

# Запрашиваем User ID
echo -n "Введите ваш Telegram User ID: "
read USERID

# Проверка на пустое значение
if [ -z "$USERID" ]; then
    echo "Ошибка: User ID не может быть пустым!"
    exit 1
fi

# Запрашиваем токен бота
echo -n "Введите токен Telegram бота: "
read KEY

# Проверка на пустое значение
if [ -z "$KEY" ]; then
    echo "Ошибка: Токен бота не может быть пустым!"
    exit 1
fi

echo ""
echo "Установка с параметрами:"
echo "  User ID: $USERID"
echo "  Bot Token: ${KEY:0:10}...${KEY: -10}"
echo ""

# Создаем скрипт open.ssh.sh
cat > "$SCRIPT_PATH" << EOF
#!/bin/sh
# SSH notifications to Telegram
USERID="$USERID"
KEY="$KEY"
TIMEOUT="10"
URL="https://api.telegram.org/bot\$KEY/sendMessage"
DATE_EXEC="\$(date "+%d %B %Y %H:%M")"

if [ -n "\$SSH_CLIENT" ]; then
    IP=\$(echo \$SSH_CLIENT | awk '{print \$1}')
    PORT=\$(echo \$SSH_CLIENT | awk '{print \$3}')
    HOSTNAME=\$(hostname)
    IPADDR=\$(ip addr show br0 | grep 'inet ' | awk '{print \$2}' | cut -d'/' -f1)
    
    TEXT="\$DATE_EXEC
Вход пользователя \${USER} по ssh на \$HOSTNAME (\$IPADDR)
С \$IP через порт \$PORT"
    
    /opt/bin/curl -s --max-time \$TIMEOUT -d \\
    "chat_id=\$USERID&disable_web_page_preview=1&text=\$TEXT" \\
    \$URL > /dev/null
fi
EOF

# Даем права на выполнение
chmod +x "$SCRIPT_PATH"
echo "✓ Скрипт создан: $SCRIPT_PATH"

# Проверяем, не добавлена ли уже строка в profile
if grep -q "$STARTUP_LINE" "$PROFILE_PATH" 2>/dev/null; then
    echo "⚠ Строка уже присутствует в $PROFILE_PATH"
else
    # Добавляем строку в конец profile
    echo "" >> "$PROFILE_PATH"
    echo "# SSH Telegram notifications" >> "$PROFILE_PATH"
    echo "$STARTUP_LINE" >> "$PROFILE_PATH"
    echo "✓ Добавлено в $PROFILE_PATH"
fi

echo ""
echo "=========================================="
echo "  Установка завершена успешно!"
echo "=========================================="
echo "Переподключитесь по SSH для проверки."
echo ""
echo "Для удаления используйте:"
echo "  sed -i '/\\/opt\\/bin\\/open.ssh.sh/d' $PROFILE_PATH"
echo "  rm $SCRIPT_PATH"

 

Edited by pegakmop
Пояснения
Posted

Простите за занудство, это не уведомление о входе по SSH. Это уведомление о начале (только) интерактивного сеанса (только) пользователя root. Причём не важно, начат ли сеанс по SSH или нет.

 

Пришедший с правильным паролем по SSH бот при выполнении ssh login@host 'command' следов не оставит. 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

This site uses cookies. By clicking "I accept" or continuing to browse the site, you authorize their use in accordance with the Privacy Policy.