任意のsshのログインに電報にメッセージを送る


この記事では、メッセンジャーメッセンジャーにメッセージを送信する簡単なシェルスクリプトを作成を歩いていきます.次に、このスクリプトを使用して、サーバーにSSHログインごとに通知を送信します.

クリエイト電報ボット
テレグラムグループやチャンネルにメッセージを送信するには、まず自分のボットを作成する必要があります.ちょうどオープン電報
とタイプ/start . 次に、ボットを作成し、HTTP APIにアクセスするトークンを取得する手順に従ってください.

クリエイトチャンネル
電報で新しいチャンネルを作成し、メンバーとしてボットを追加します.それで、あなたのロボットはメッセージをチャンネルに送ることができました.
チャンネルIDを得るために、最初に、どんなメッセージもチャンネルに掲示してください.次に、このリンクテンプレートを使用してチャネルIDを取得します.https://api.telegram.org/bot<YourBOTToken>/getUpdates以下にレスポンスの例を示します:
{
  "ok":true,
  "result": [
    {
      "update_id":123,
      "channel_post": {
        "message_id":48,
        "chat": {
          "id":-123123123, // this is your channel id
          "title":"Notifications",
          "type":"channel"
        },
        "date":1574485277,
        "text":"test"
      }
    }
  ]
}

メッセージを送るスクリプト
メッセージを送信するには、以下のコマンドを使います.
curl 'https://api.telegram.org/bot<YourBOTToken>/sendMessage?chat_id=<channel_id>&text=<text>'
しかし、プログラミングでは、低レベルの実装を隠すのは良い習慣です.Linux端末コマンドを作成しますtelegram-send そして、この単純なコマンドでメッセージを送ることができました.
レッツクリエイトファイルtelegram-send.sh
touch telegram-send.sh
次に、このファイルにスクリプトを追加します.グループIDとトークンをスクリプトで設定します.
#!/bin/bash

GROUP_ID=<group_id>
BOT_TOKEN=<bot_token>

# this 3 checks (if) are not necessary but should be convenient
if [ "$1" == "-h" ]; then
  echo "Usage: `basename $0` \"text message\""
  exit 0
fi

if [ -z "$1" ]
  then
    echo "Add message text as second arguments"
    exit 0
fi

if [ "$#" -ne 1 ]; then
    echo "You can pass only one argument. For string with spaces put it on quotes"
    exit 0
fi

curl -s --data "text=$1" --data "chat_id=$GROUP_ID" 'https://api.telegram.org/bot'$BOT_TOKEN'/sendMessage' > /dev/null
それはあなたのトークンをその場所に保存するのに良い習慣ではありません.また、あなたのボットは、メッセージを送信するだけでチャネルで行うことができるアクションを制限することができます.
このスクリプトを実行するには
chmod +x telegram-send.sh
今テストすることができます
./telegram-send.sh "Test message"
このスクリプトをどこからでも使うためにtelegram-send 代わりに./telegram-send.sh /usr/bin/フォルダに追加します
sudo mv telegram-send.sh /usr/bin/telegram-send
/usr/binのすべてのファイルの所有者はrootユーザです.それでは、スクリプトと同じようにしましょう.
sudo chown root:root /usr/bin/telegram-send
今テストすることができます
telegram-send "Test message"

SSHログインに関する通知を送る
すべてのファイルを./etc/profileのsh拡張.D/フォルダは、bashログインシェルが入力されるたびに実行されます.
通知を送るために新しいスクリプトを加えましょう.
touch login-notify.sh
スクリプトにこのコードを加えます
#!/bin/bash

# prepare any message you want
login_ip="$(echo $SSH_CONNECTION | cut -d " " -f 1)"
login_date="$(date +"%e %b %Y, %a %r")"
login_name="$(whoami)"

# For new line I use $'\n' here
message="New login to server"$'\n'"$login_name"$'\n'"$login_ip"$'\n'"$login_date"

#send it to telegram
telegram-send "$message"
そして/etc/profileにこのスクリプトを動かします.フォルダ名
sudo mv login-notify.sh /etc/profile.d/login-notify.sh
今すぐあなたのWebサーバーに再ログインし、それが動作チェックします.