Add the bash script for login and update the readme.md

This commit is contained in:
2024-03-01 10:47:28 +01:00
parent e8b3741efd
commit 4f99e00b9c
2 changed files with 106 additions and 0 deletions

View File

@@ -1,2 +1,45 @@
# ntfy_alerts
Personal ntfy alerts system
# Python ntfy.py
## Description:
This script is used to watch the github repos and send a notification to the ntfy server when a new release is published.
## Utilisation:
````python
python ntfy.py <auth> <ntfy_url>
````
auth: can be generataed by the folowing command: echo -n 'username:password' | base64
ntfy_url: the url of the ntfy server including the topic
Acctualy the watched repos list is hardcoded in the ntfy.py file under the name of watched_repos_list.
## TODO:
- [ ] Add the watched repos list as a parameter
- [ ] Add the watched repos list as a file
- [ ] Add the watched repos list as a database
- [ ] Add the watched repos list as a web interface
# Bash setup-notify.sh
## Description:
This script is used to setup the ntfy notification system on ssh login for a new server.
## Utilisation:
````bash
bash setup-notify.sh <ntfy_url> <username> <password> <topic>
````
ntfy_url: the url of the ntfy server
username: the username of the user
password: the password of the user
topic: the topic of the notification
This script will create a send-notify.sh in the root of your disk and add the login-notify.sh to the /etc/profile.d/ folder.
# Bash send-notify.sh
## Description:
This script is used to send a notification to the ntfy server.
## Utilisation:
````bash
bash send-notify.sh <ntfy_url> <basic_auth> <topic> <message>
````
ntfy_url: the url of the ntfy server
basic_auth: the basic auth of the user
topic: the topic of the notification
message: the message of the notification

63
setup-notify.sh Normal file
View File

@@ -0,0 +1,63 @@
#!/bin/bash
# Script pour créer les fichiers login-notify.sh et send-notify.sh dans /etc/profile.d/
# Contenu du fichier login-notify.sh
LOGIN_NOTIFY_CONTENT="#!/bin/bash
NTFY_URL=\$1
username=\$2
password=\$3
Basic=\$(echo -n \"\$username:\$password\" | base64)
TOPIC=\$4
IP=\"\$(echo \"\${SSH_CONNECTION}\" | awk -F' ' '{print \$1}')\" # ne fonctionne pas pour une connexion locale
DATE=\"\$(date)\"
NAME=\"\$(whoami)\"
NB_USERS=\$(who | wc -l)
MESSAGE=\"
New login to \${HOSTNAME} server!
\\\"\${NAME}\\\" from \\\"\${IP}\\\"
\${NB_USERS} users connected
\${DATE}
\"
/send-notify.sh \"\${NTFY_URL}\" \"\${Basic}\" \"\${TOPIC}\" \"\${MESSAGE}\"
"
# Contenu du fichier send-notify.sh
SEND_NOTIFY_CONTENT="#!/bin/bash
set -eu
if [ \"\$#\" -ne 4 ]; then
echo \"Usage: \$0 <ntfy_url> <basic_auth> <topic> <text message>\"
echo \"Help basic_auth: \\\"echo -n 'testuser:fakepassword' | base64\\\"\"
exit 1
fi
NTFY_URL=\$1
BASIC_AUTH=\$2
TOPIC=\$3
TEXT=\$4
RES=\$(curl -i -s -X POST -H \"Authorization: Basic \${BASIC_AUTH}\" -d \"\${TEXT}\" \"\${NTFY_URL}/\${TOPIC}\")
STATUS_CODE=\$(echo \"\$RES\" | head -n 1 | awk -F' ' '{print \$2}')
if [[ \$STATUS_CODE -ne 200 ]] ; then
echo \"error while sending alert\"
echo \"\${RES}\"
exit 1
fi
"
# Création des fichiers
echo "$LOGIN_NOTIFY_CONTENT" | sudo tee /etc/profile.d/login-notify.sh > /dev/null
echo "$SEND_NOTIFY_CONTENT" | sudo tee /send-notify.sh > /dev/null
# Attribution des permissions
sudo chmod +x /etc/profile.d/login-notify.sh /send-notify.sh
echo "Fichiers créés avec succès dans /etc/profile.d/ et /"