être notifié lorsqu'un utilisateur se connecte en SSH
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

il y a 7 mois
il y a 7 mois
il y a 7 mois
il y a 7 mois
il y a 7 mois
il y a 7 mois
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. ## Editez le fichier config.py pour y mettre les bonnes variables.
  4. ## Utilisez la commande 'python3 -m pip install cowsay' pour ajouter ce MOTD.
  5. ## Sinon, supprimez cette partie du programme jusqu'au prochain commentaire
  6. import socket
  7. #import cowsay
  8. #cowsay.ghostbusters("SSH-Notifier \n The owner has been notified of this login")
  9. ## importation des dependances
  10. import re
  11. import sys
  12. from config import config
  13. sys.path.insert(1, config["plateform_directory"])
  14. from telegram import telegram_send_message
  15. from discord import discord_send_message
  16. import os
  17. import subprocess
  18. import json
  19. import requests
  20. #Pattern pour reconnaitre une IP
  21. ip_pattern = "(?:^|\b(?<!\.))(?:1?\d\d?|2[0-4]\d|25[0-5])(?:\.(?:1?\d\d?|2[0-4]\d|25[0-5])){3}(?=$|[^\w.])"
  22. def main():
  23. out = subprocess.Popen(['tail', '-6', '/var/log/auth.log'],
  24. stdout=subprocess.PIPE,
  25. stderr=subprocess.STDOUT)
  26. stdout,stderr = out.communicate()
  27. resultat = stdout.decode('ascii')
  28. auth = resultat.split(' ')
  29. for i in range(len(auth)):
  30. line = auth[i]
  31. if find_ip(line) != None :
  32. IP = line
  33. where = geoip(IP)
  34. message = "Nouvelle connexion sur " + socket.gethostname() + " Provenant de " + IP + '\n' + 'Pays : ' + where['countryName'] + '\n' + 'Ville : ' + where['cityName'] + '\n' + 'Code Postal : ' + where['zipCode']
  35. if config["plateform"] == 'telegram' :
  36. telegram_send_message(message)
  37. if config["plateform"] == 'discord' :
  38. discord_send_message(message)
  39. def find_ip(str) :
  40. pattern = re.compile(ip_pattern)
  41. ip = re.match(pattern, str)
  42. return ip
  43. def geoip(ip):
  44. key = config['ipinfodb_key']
  45. url_api = 'http://api.ipinfodb.com/v3/ip-city/?key=' + key + '&ip=' + ip + "&format=json"
  46. localisation = requests.get(url_api)
  47. if str(localisation) != '<Response [200]>' :
  48. print("Mauvaise réponse de l'api")
  49. return "Echec de la recuperation du lieu"
  50. data = localisation
  51. return data.json()
  52. if __name__ == '__main__':
  53. try :
  54. main()
  55. except :
  56. main()