added Telegram chat topics support
This commit is contained in:
		
							parent
							
								
									b7e56c407c
								
							
						
					
					
						commit
						1f8607521f
					
				
							
								
								
									
										14
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								README.md
									
									
									
									
									
								
							| 
						 | 
				
			
			@ -7,11 +7,13 @@ Install E-Mail/Telegram notifications
 | 
			
		|||
> - Python 3.9 or above on inventory hosts (in repo on Debian | from sources in /usr/local/bin on CentOS)
 | 
			
		||||
 | 
			
		||||
## Download a Role
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
wget -qO- https://git.hmp.today/pavel.muhortov/notification/archive/master.tar.gz | tar -xvz -C .
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Edit Role Variables
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
# nano ./notification/vars/main.yml
 | 
			
		||||
sendmail_smtp: smtp.host.zone
 | 
			
		||||
| 
						 | 
				
			
			@ -19,11 +21,17 @@ sendmail_port: 587
 | 
			
		|||
sendmail_from: user@host.zone
 | 
			
		||||
sendmail_pass: pass
 | 
			
		||||
sendmail_dest: user@host.zone
 | 
			
		||||
sendtelegram_apikey: YOURAPIKEY
 | 
			
		||||
sendtelegram_chatid: 123456789
 | 
			
		||||
sendtelegram_api_key: YOURAPIKEY
 | 
			
		||||
sendtelegram_silence: true
 | 
			
		||||
## single chat
 | 
			
		||||
sendtelegram_chat_id: 123456789
 | 
			
		||||
## chat topics
 | 
			
		||||
sendtelegram_chat_id: -100123456789
 | 
			
		||||
sendtelegram_thrd_id: 123
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Create Playbook Example
 | 
			
		||||
 | 
			
		||||
```yaml
 | 
			
		||||
tee ./notification.yml > /dev/null <<'EOF'
 | 
			
		||||
- name: Install E-Mail/Telegram notification
 | 
			
		||||
| 
						 | 
				
			
			@ -35,11 +43,13 @@ EOF
 | 
			
		|||
```
 | 
			
		||||
 | 
			
		||||
## Run Playbook
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
ansible-playbook ./notification.yml
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## Clean
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
rm -rf ./notification*
 | 
			
		||||
```
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,9 +1,24 @@
 | 
			
		|||
#! /bin/sh
 | 
			
		||||
APIURL="$(cat /usr/local/bin/sendtelegram.config | grep "APIURL=" | cut -d= -f2)"
 | 
			
		||||
CHATID="$(cat /usr/local/bin/sendtelegram.config | grep "CHATID=" | cut -d= -f2)"
 | 
			
		||||
TXTMSG="[Authorization] $(cat /etc/hostname):
 | 
			
		||||
API_URL="$(grep "API_URL=" | cut -d= -f2)"
 | 
			
		||||
SILENCE="$(grep "SILENCE=" | cut -d= -f2)"
 | 
			
		||||
CHAT_ID="$(grep "CHAT_ID=" | cut -d= -f2)"
 | 
			
		||||
THRD_ID="$(grep "THRD_ID=" | cut -d= -f2)"
 | 
			
		||||
TXT_MSG="[Authorization] $(cat /etc/hostname):
 | 
			
		||||
$(w -h)"
 | 
			
		||||
 | 
			
		||||
(
 | 
			
		||||
    curl -s -X POST $APIURL -d chat_id=$CHATID -d text="$TXTMSG" >> /dev/null 2>&1 &
 | 
			
		||||
  if [ -z "${THRD_ID}" ]; then
 | 
			
		||||
    curl -s -o /dev/null -X POST \
 | 
			
		||||
         -d chat_id="${CHAT_ID}" \
 | 
			
		||||
         -d text="${TXT_MSG}" \
 | 
			
		||||
         -d disable_notification="${SILENCE}" \
 | 
			
		||||
         "${API_URL}"
 | 
			
		||||
  else
 | 
			
		||||
    curl -s -o /dev/null -X POST \
 | 
			
		||||
         -d chat_id="${CHAT_ID}" \
 | 
			
		||||
         -d text="$TXT_MSG" \
 | 
			
		||||
         -d disable_notification="${SILENCE}" \
 | 
			
		||||
         -d message_thread_id="$THRD_ID" \
 | 
			
		||||
         "${API_URL}"
 | 
			
		||||
  fi
 | 
			
		||||
)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,40 +2,55 @@
 | 
			
		|||
# chkconfig: 2345 20 80
 | 
			
		||||
 | 
			
		||||
### BEGIN INIT INFO
 | 
			
		||||
# Provides:		sendtelegram-reboot
 | 
			
		||||
# Required-Start:	$all
 | 
			
		||||
# Provides:          sendtelegram-reboot
 | 
			
		||||
# Required-Start:    $all
 | 
			
		||||
# Required-Stop:
 | 
			
		||||
# Default-Start:	2 3 4 5
 | 
			
		||||
# Default-Start:     2 3 4 5
 | 
			
		||||
# Default-Stop:
 | 
			
		||||
# Short-Description:	Sending a message on startup
 | 
			
		||||
# Short-Description: Sending a message on startup
 | 
			
		||||
### END INIT INFO
 | 
			
		||||
 | 
			
		||||
start() {
 | 
			
		||||
    APIURL="$(cat /usr/local/bin/sendtelegram.config | grep "APIURL=" | cut -d= -f2)"
 | 
			
		||||
    CHATID="$(cat /usr/local/bin/sendtelegram.config | grep "CHATID=" | cut -d= -f2)"
 | 
			
		||||
    TXTMSG="[System States] $(cat /etc/hostname): computer has been rebooted"
 | 
			
		||||
  API_URL="$(grep "API_URL=" | cut -d= -f2)"
 | 
			
		||||
  SILENCE="$(grep "SILENCE=" | cut -d= -f2)"
 | 
			
		||||
  CHAT_ID="$(grep "CHAT_ID=" | cut -d= -f2)"
 | 
			
		||||
  THRD_ID="$(grep "THRD_ID=" | cut -d= -f2)"
 | 
			
		||||
  TXT_MSG="[System States] $(cat /etc/hostname): computer has been rebooted"
 | 
			
		||||
 | 
			
		||||
    sleep 15
 | 
			
		||||
    curl -s -X POST $APIURL -d chat_id=$CHATID -d text="$TXTMSG" >> /dev/null 2>&1 &
 | 
			
		||||
  sleep 15
 | 
			
		||||
  if [ -z "${THRD_ID}" ]; then
 | 
			
		||||
    curl -s -o /dev/null -X POST \
 | 
			
		||||
         -d chat_id="${CHAT_ID}" \
 | 
			
		||||
         -d text="${TXT_MSG}" \
 | 
			
		||||
         -d disable_notification="${SILENCE}" \
 | 
			
		||||
         "${API_URL}"
 | 
			
		||||
  else
 | 
			
		||||
    curl -s -o /dev/null -X POST \
 | 
			
		||||
         -d chat_id="${CHAT_ID}" \
 | 
			
		||||
         -d text="$TXT_MSG" \
 | 
			
		||||
         -d disable_notification="${SILENCE}" \
 | 
			
		||||
         -d message_thread_id="$THRD_ID" \
 | 
			
		||||
         "${API_URL}"
 | 
			
		||||
  fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
    pkill -f curl -s -X POST $APIURL
 | 
			
		||||
  pkill -f curl -s -o /dev/null -X POST -d chat_id="${CHAT_ID}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
case "$1" in
 | 
			
		||||
    start)
 | 
			
		||||
       start
 | 
			
		||||
       ;;
 | 
			
		||||
    stop)
 | 
			
		||||
       stop
 | 
			
		||||
       ;;
 | 
			
		||||
    restart)
 | 
			
		||||
       stop
 | 
			
		||||
       start
 | 
			
		||||
       ;;
 | 
			
		||||
    *)
 | 
			
		||||
       echo "Usage: $0 {start|stop|restart}"
 | 
			
		||||
  start)
 | 
			
		||||
    start
 | 
			
		||||
    ;;
 | 
			
		||||
  stop)
 | 
			
		||||
    stop
 | 
			
		||||
    ;;
 | 
			
		||||
  restart)
 | 
			
		||||
    stop
 | 
			
		||||
    start
 | 
			
		||||
    ;;
 | 
			
		||||
  *)
 | 
			
		||||
  printf "%s\n" "Usage: $0 {start|stop|restart}"
 | 
			
		||||
esac
 | 
			
		||||
 | 
			
		||||
exit 0
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,5 @@
 | 
			
		|||
APIKEY={{sendtelegram_apikey}}
 | 
			
		||||
APIURL=https://api.telegram.org/bot{{sendtelegram_apikey}}/sendMessage
 | 
			
		||||
CHATID={{sendtelegram_chatid}}
 | 
			
		||||
API_KEY={{sendtelegram_api_key}}
 | 
			
		||||
API_URL=https://api.telegram.org/bot{{sendtelegram_api_key}}/sendMessage
 | 
			
		||||
SILENCE={{sendtelegram_silence}}
 | 
			
		||||
CHAT_ID={{sendtelegram_chat_id}}
 | 
			
		||||
THRD_ID={{sendtelegram_thrd_id}}
 | 
			
		||||
| 
						 | 
				
			
			@ -4,5 +4,7 @@ sendmail_port: 587
 | 
			
		|||
sendmail_from: user@host.zone
 | 
			
		||||
sendmail_pass: pass
 | 
			
		||||
sendmail_dest: user@host.zone
 | 
			
		||||
sendtelegram_apikey: YOURAPIKEY
 | 
			
		||||
sendtelegram_chatid: 123456789
 | 
			
		||||
sendtelegram_api_key: YOURAPIKEY
 | 
			
		||||
sendtelegram_silence: true
 | 
			
		||||
sendtelegram_chat_id: -100123456789
 | 
			
		||||
sendtelegram_thrd_id: 123
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user