:::: MENU ::::

Posts Categorized / Python

  • Apr 01 / 2018
  • 0
Linux, Python

Utiliser procmail avec un script python personnalisé

Si vous souhaitez exécuter des commandes particulières, créer un log ou faire un appel API lorsque vous recevez un email sur votre server, vous pouvez le faire facilement en configurant procmail. Procmail est destiné à filtrer et trier les emails que vous recevez mais peut être paramétré pour exécuter d’autres actions.

Ici, par exemple, nous allons effectuer un simple appel vers un script Python qui pourra lire le contenu du mail (en-têtes et corps) et pousser les informations dans un fichier log.

1. Installer procmail

Selon l’OS que vous utilisez, vous devriez trouver un package pré-compilé pour les repositories communs.

Par exemple, dans un environnement Debian :

ou sur un environnement CentOS :

2. Construire le script python que vous appellerez pour analyser le message

Vous devez maintenant préparer le script que vous allez exécuter lorsque vous allez recevoir un mail, qui va lire et parser le contenu pour écrire les informations intéressantes dans un fichier de log.

Créons un script appelé procmail_script.py

3. Configurer votre utilisateur pour passer le mail au script

Pour que vous puissiez exécuter les règles que vous souhaitez exécuter lorsque vous recevez un email, vous devez créer un fichier (caché) appelé .procmailrc dans le répertoire home de votre utilisateur.

Par exemple, pour exécuter les règles lorsque vous recevez un email sur [email protected], vous allez devoir mettre ce fichier dans le répertoire home tel que /home/mailuser/.procmailrc

Ceci va effectuer plusieurs étapes :

  1. Vérifier que l’email est bien destiné à [email protected] ou [email protected]
  2. Mettre une copie du mail dans le répertoire procmail-dir
  3. Passer le message à notre script python procmail_script.py
  4. Ignorer le message si le script s’est exécuté avec succès (le supprimer de la queue) ou le copier dans un répertoire  procmail-failed-dir en cas d’échec (pour que vous puissiez exécuter à nouveau ultérieurement par exemple)

4. Préparer un email et effectuer un test localement

Premièrement, créez un exemple de mail que vous allez utiliser dans un fichier appelé procmail_test.txt:

Ensuite, vous pouvez le tester en exécutant le process manuellement :

Maintenant, ouvrez le fichier /opt/mailAnalysis.log et vous devriez avoir quelque chose comme :

  • May 30 / 2017
  • 0
Linux, Python

Requêtes DNS depuis un fichier/liste en CSV

Il n’est pas facile de faire des résolutions DNS par lot lorsque vous avez de nombreux DNS/IPs à vérifier. Voici un script simple qui vous permet d’effectuer les résolutions DNS en parcourant une liste d’entrées DNS ou d’IPs.

Voici une list de DNS (noms et IPs) que nous mettons dans un fichier appelé listDNS.txt

Copions maintenant ce script qui va effectuer tout le travail dans un fichier appelé resolverDNS.sh

Et maintenant, exécutons le en passant le fichier contenant la liste de DNS en argument, et regardons la sortie standard :

Les résolutions sont faites pour chaque ligne, selon si c’est une IP ou un nom de serveur (et reste vide s’il est impossible de résoudre).
N’hésitez pas à modifier le script selon vos besoins !

  • Jun 09 / 2016
  • 0
Linux, Python

openssl/pyOpenSSL – « SSL23_GET_SERVER_HELLO:tlsv1 alert internal error »

Vous avez ce message ennuyeux encore et encore lorsque vous essayer de récupérer le certificat ou tout simplement en essayant d’établir une connexion à votre site web en utilisant openssl :

Ce problème est bien connu sur de nombreuses versions d’openssl, et un bug a même été remonté pour les dépôts Ubuntu :
https://bugs.launchpad.net/ubuntu/+source/openssl/+bug/1475228

Pour le moment, il y a un moyen simple de rapidement contourner le problème !

Pour openssl

Si vous rencontrez le problème lorsque vous utilisez openssl directement, vous pouvez corriger le souci en spécifiant l’option servername sur la ligne de commande :

Pour pyOpenSSL

Si vous avez le problème en utilisant pyOpenSSL (un wrapper python pour OpenSSL), il est également possible de contourner le problème en ajoutant l’option set_tlsext_host_name() pour spécifier le nom du serveur dans votre objet « Connection » :
Vous aurez alors quelque chose comme :

  • Mar 30 / 2016
  • 0
Linux, Python

Générer un hash SHA-512 en ligne de commande avec Python

Besoin de générer un hash pour un mot de passe ? Pas besoin d’utiliser un générateur en ligne, totalement insécurisé pour vos mots de passe …
Cette simple commande vous demandera pour quelle chaine vous souhaitez effectuer un hash et vous retournera le résultat dès que vous presserez « Entrée » !

  • Oct 09 / 2015
  • 0
Python

AWS – Mettre à jour massivement les méta-données sur plusieurs objets S3 en utilisant boto (python)

Ce simple script permet de mettre à jour massivement les Content-Type de fichiers sur un bucket S3.
Ce script est capable de :

  • Parcourir récursivement un bucket
  • Effectuer une action uniquement sur les fichiers correspondant à un certain préfixe
  • Détecter automatiquement le type de fichier en fonction de son extension

Evidemment, vous pouvez ajouter n’importe quelle extension à la fonction update_md pour en gérer plus si nécessaire.

  • Sep 18 / 2015
  • 0
Python

Python – Parcourir un répertoire et envoyer vers S3 (avec regex)

Un simple script qui permet de parcourir un répertoire, et d’envoyer vers S3 certains fichiers correspondant à une expression régulière.
Le fichier sera envoyé en respectant le chemin que vous avez en local.

Pages :12
Question ? Contact