johnpoint

johnpoint

(。・∀・)ノ゙嗨
github

vps 登入推送

國內的雲伺服器大多數都自帶了 ssh 登錄提示功能,這個功能我覺得不錯,但是在很多並沒有深度定制系統鏡像的雲伺服器服務商那裡就沒有遠程登錄提醒功能了,於是寫了一個小腳本來實現遠程登錄就將登錄信息推送至 telegram 的功能

文件名 00-ssh-login-alarm-telegram.sh (其實也可以自己自定義),將文件放在 /etc/profile.d 目錄下。

#!/bin/bash

#填入 telegram bot 的 token
token=
#填自己telegram的id
id=

#vps ip
vpsip=$(curl -s ip.sb -4)
#登錄時間
logintime=$(TZ=UTC-8 date '+%Y-%m-%d %H:%M:%S')
#遠程登錄的ip
loginip=$(who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g')
#ip歸屬asn組織名稱
loginfrom=$(curl -s https://api.ip.sb/geoip/${loginip} | jq .asn_organization)
curl -s "https://api.telegram.org/bot${token}/sendMessage?chat_id=${id}" --data-binary "&text=NewLogin:%0AVPS: ${vpsip}%0ATime: ${logintime}%0ALogin from:%0A${loginip}%0A${loginfrom}" > /dev/null

因為用到了 jq 作為解析 json 的工具,所以需要在包管理器中自行安裝。

使用效果:

NewLogin:
VPS: ***.***.***.***
Time: 2020-09-13 12:41:24
Login from:
***.***.***.***
"asn_organization"

腳本使用的 api 來自 ip.sb

2021-10-20 更新#

腳本中間更新了幾個版本,現在的腳本已經可以實現之前所缺少的一些功能

  • 顯示登錄用戶名
  • 不阻塞登錄用戶的 TTY
#!/bin/bash

#填入 telegram bot 的 token
token=
#填自己telegram的id
id=

localip=$(who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g')

echo 'localip=$(curl -s ip.sb -4)' > tg.sh
echo 'user=$(whoami)' >> tg.sh
echo 'logintime=$(TZ=UTC-8 date "+%Y-%m-%d %H:%M:%S")' >> tg.sh
echo 'loginip='${localip} >> tg.sh
echo 'loginfrom=$(curl -s https://api.ip.sb/geoip/${loginip} | jq -r .asn_organization)' >> tg.sh
echo 'curl -s "https://api.telegram.org/bot'${token}'/sendMessage?chat_id='${id}'" --data-binary "&text=NewLogin:%0AVPS:${user}@${localip}%0ATime: ${logintime}%0ALogin from:%0A${loginip}%0A${loginfrom}" > /dev/null && rm tg.sh' >> tg.sh

bash tg.sh &
載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。