별 건 아니고, 팀원들의 서버 로그인/로그아웃 알림을 받는 방법을 알아보자.
팀원들 | "제발 알아보지 말자"
필요한 건
먼저 @BotFather에게 말을 걸어 텔레그램 봇을 생성해야 한다.
@BotFather는 모든 텔레그램 봇의 아버지다.
@BotFather에게 다음과 같이 말을 걸어보자.
/start
그러면 친절한 @BotFather는 우리가 사용할 수 있는 명령어를 알려준다.
새 봇을 만들려고 하는 것이니 이에 해당하는 명령어를 입력한다.
/newbot
그러면 우리 @BotFather는 다음과 같이 답장을 할 것이다.
@BotFather | Alright, a new bot. How are we going to call it? Please choose a name for your bot.
생성할 봇의 name
을 정해달라고 한다.
이것은 중복 가능하며 봇의 프로필 상에 뜨는 이름으로,
텔레그램의 name
은 추후에 변경 가능한 nickname에 해당한다.
예를 들어 다음과 같이 대답할 경우
Jason
다음과 같은 이름의 봇이 생성된다.
이름을 정하고 나면 봇의 username
을 정해달라고 한다.
@BotFather | Good. Now let's choose a username for your bot. It must end in
bot
. Like this, for example: TetrisBot or tetris_bot.
텔레그램의 username
은 ID에 해당한다.
즉, 변경 불가능하며 봇을 식별하는 데 사용된다.
봇의 username
은 bot
으로 끝나야 한다는 점을 유의하자.
프라이버시를 위해 생성한 봇의 username
은 밝히지 않겠다.
만약 기존에 다른 봇이 사용하고 있는 username
을 입력한다면
@BotFather | Sorry, this username is already taken. Please try something different.
라며 다시 입력할 것을 요구하고,
사용 가능할 username
일 경우
@BotFather | Done! Congratulations on your new bot. You will find it at t.me/
앞서입력한username
. You can now add a description, about section and profile picture for your bot, see /help for a list of commands. By the way, when you've finished creating your cool bot, ping our Bot Support if you want a better username for it. Just make sure the bot is fully operational before you do this.Use this token to access the HTTP API:
봇의고유한API-TOKEN
Keep your token secure and store it safely, it can be used by anyone to control your bot.For a description of the Bot API, see this page: https://core.telegram.org/bots/api
와 같이 성공적으로 봇이 생성되었음을 알리며 API token을 알려준다.
여기서 앞서입력한username
과 봇의고유한API-TOKEN
는 고유한 값으로 각자 다를 것이고
API token은 봇을 관리하는 데 이용되므로 유출되지 않도록 주의하자.
자, 이제 봇이 생성되었다.
/mybots
명령어를 통해 봇의 설정을 수정한다거나 프로필 사진을 추가한다거나
그런 추가적인 작업을 할 수 있지만 그 부분은 부차적인 요소이므로 일단 넘어가자.
그 설정 방법은 @BotFather가 친절하게 설명해주므로 자세한 설명은 생략한다.
자, 이제 서버와의 연동이 필요하다.
@BotFather가 봇 생성이 완료되었다면서 보내준 메시지에 t.me/앞서입력한username
라는 링크가 있다.
이걸 누르면 해당 봇과의 채팅으로 넘어가는데 여기서 START
를 누르도록 하자.
그러면 이제 봇이 작동하기 시작한다.
물론 아직 그 어떤 기능도 가지고 있지 않다.
웹 브라우저를 열고 다음과 같은 URL을 입력한다.
봇의고유한API-TOKEN
부분은 앞서 @BotFather가 알려준 token으로 대체한다.
그러면 result.0.message.chat.id
에 봇의 고유한 ID 정수값이 뜨는 걸 볼 수 있다.
이 숫자를 잘 기억해두자. 아니, 기록해두자.
자, 이제 본격적으로 서버와 연동할 수 있다.
로그인/로그아웃 알림을 받아오고 싶은 서버에 접속하자.
그리고 관리자 권한으로 /etc/bash.bashrc
파일을 열어
맨 아래에 다음과 같은 스크립트를 추가한다.
HOSTNAME_S=`hostname -s`
my_token="봇의고유한API-TOKEN"
chatid="봇의고유한ID"
msg=`echo -e "[login]" $USER"@"$HOSTNAME_S`
curl -F text="$msg" -F chat_id=$chatid, https://api.telegram.org/bot${my_token}/sendMessage > /dev/null 2>&1
여기서 봇의고유한API-TOKEN
과 봇의고유한ID
는 앞서 알아온 값으로 변경해준다.
저장하고나면 이제 다음 로그인부터는 다음과 같은 로그인 알림을 받아올 수 있다.
간단하게 누가 어느 서버에 접속했는가의 정보다.
물론 접속 IP 등의 정보도 알아올 수는 있긴 하지만 아무래도 그런 정보는... 자제하자.
$(date)
를 통해 구체적인 초까지 알아올 수도 있지만 그 정도까지 자세할 필요는 없으니
접속 시간은 그냥 알림이 오는 시간으로 만족하자. overhead는 별로 없더라.
그럼에도 불구하고 구체적인 초까지 알고 싶다면 msg
에 추가하면 된다.
로그인 시 수행하는 스크립트는 /etc/bash.bashrc
에 적으면 모든 사용자에게 적용되지만
로그아웃 시 모든 사용자에게 적용되는 스크립트는 존재하지 않는다.
따라서 개별 사용자의 ~/.bash_logout
에 작성해야 한다.
물론 /etc
아래에 공통 스크립트를 작성하고
개별 사용자의 ~/.bash_logout
에 그 공통 스크립트를 실행하는 코드를 넣는 방법도 있긴 하다.
아무튼 개별 사용자의 ~/.bash_logout
파일을 얼어
맨 아래에 다음과 같은 스크립트를 추가한다.
HOSTNAME_S=`hostname -s`
my_token="봇의고유한API-TOKEN"
chatid="봇의고유한ID"
msg=`echo -e "[logout]" $USER"@"$HOSTNAME_S`
curl -F text="$msg" -F chat_id=$chatid, https://api.telegram.org/bot${my_token}/sendMessage > /dev/null 2>&1
앞서 login에서 작성한 것과 동일한 코드에 login
만 logout
으로 변경했을 뿐이다.
저장하고나면 이제 다음 로그아웃부터는 다음과 같은 로그아웃 알림을 받아올 수 있다.
WARNING!!! | 팀원들이 여러분께 ㅂㄷㅂㄷ을 보냅니다!