From 60121d3a6c5e3395e4a9486710fd4d0eccfc7464 Mon Sep 17 00:00:00 2001 From: Andrey Sazonov Date: Tue, 26 Aug 2025 15:27:30 +0300 Subject: [PATCH] fix and refactoring --- ssh_login_info.sh | 60 +++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 18 deletions(-) diff --git a/ssh_login_info.sh b/ssh_login_info.sh index 25602df..96fccc9 100644 --- a/ssh_login_info.sh +++ b/ssh_login_info.sh @@ -6,23 +6,47 @@ URL="https://api.telegram.org/bot${TOKEN}/sendMessage?parse_mode=markdown" DATE="$(date +%d-%m-%Y\ %H:%M:%S)" TMP_INFO="/tmp/ssh_caption_file.txt" -if [ -z "$PAM_RHOST" ]; then - exit 0 +send_notification() { + local tmp_file="$1" + local country city org + + curl -s -m 5 "http://ip-api.com/json/$PAM_RHOST" -o "$tmp_file" >/dev/null 2>&1 + + country=$(jq -r '.country // empty' "$tmp_file" 2>/dev/null) || country="" + city=$(jq -r '.city // empty' "$tmp_file" 2>/dev/null) || city="" + org=$(jq -r '.as // empty' "$tmp_file" 2>/dev/null) || org="" + + if [ -z "$country" ] || [ -z "$city" ] || [ -z "$org" ]; then + TEXT="📡 Новое SSH подключение\n" + TEXT+="⌚ *Время*: \`$DATE\`\n" + TEXT+="*На хост*\n" + TEXT+="🖥 *Hostname:* \`$HOSTNAME\`\n" + TEXT+="👤 *Username:* \`$PAM_USER\`\n" + TEXT+="*С адреса*\n" + TEXT+="🔎 *Source IP:* \`$PAM_RHOST\`" + else + TEXT="📡 Новое SSH подключение\n" + TEXT+="⌚ *Время*: \`$DATE\`\n" + TEXT+="*На хост*\n" + TEXT+="🖥 *Hostname:* \`$HOSTNAME\`\n" + TEXT+="👤 *Username:* \`$PAM_USER\`\n" + TEXT+="*С адреса*\n" + TEXT+="🔎 *Source IP:* \`$PAM_RHOST\`\n" + TEXT+="🌎 *Country:* \`$country\`\n" + TEXT+="🏙 *City:* \`$city\`\n" + TEXT+="🕋 *Organisation:* \`$org\`" + fi + + curl -s -m 10 -X POST "$URL" \ + -d chat_id="$CHAT_ID" \ + -d text="$TEXT" \ + -d parse_mode=Markdown >/dev/null 2>&1 + + rm -f "$tmp_file" +} + +if [ -n "$PAM_RHOST" ]; then + ( sleep 0.1; send_notification "$TMP_INFO" ) & fi -curl http://ip-api.com/json/"$PAM_RHOST" -s -o $TMP_INFO - -COUNTRY=$( < $TMP_INFO jq '.country' | sed 's/"//g' ) -CITY=$( < $TMP_INFO jq '.city' | sed 's/"//g') -ORG=$( < $TMP_INFO jq '.as' | sed 's/"//g') - -if [ "$COUNTRY" = "null" ] || [ "$CITY" = "null" ] || [ "$ORG" = "null" ]; then - TEXT=$(echo -e "📡Новое SSH подключение📡\n⌚*Время*: \`$DATE\`\n*На хост*\n🖥*Hostname:* \`$HOSTNAME\`\n👤*Username:* \`$PAM_USER\`\n*С адреса*\n🔎*Source IP:* \`$PAM_RHOST\`") -else - TEXT=$(echo -e "📡Новое SSH подключение📡\n⌚*Время*: \`$DATE\`\n*На хост*\n🖥*Hostname:* \`$HOSTNAME\`\n👤*Username:* \`$PAM_USER\`\n*С адреса*\n🔎*Source IP:* \`$PAM_RHOST\`\n🌎*Country:* \`$COUNTRY\`\n🏙*City:* \`$CITY\`\n🕋*Organisation: *\`$ORG\`") -fi - -curl "$URL" -d chat_id=$CHAT_ID -d text="${TEXT}" -rm /tmp/ssh_caption_file.txt - -exit \ No newline at end of file +exit 0 \ No newline at end of file