Vue normale

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

[Script] Être notifié d’une facture d’eau à payer (Métropole)

Par : Mr Xhark
26 mars 2024 à 08:00

 


Les organisations publiques telles que les régies des eaux ne sont pas forcément les mieux dotées en terme de délivrance d'email.

Il est très facile de passer à côté d'une notification de facture à payer, ou pire : de ne jamais recevoir la facture ! Ensuite c'est la relance par courrier et éventuellement les pénalités qui vont avec 🤑

Pour éviter ça j'ai écrit un script bash qui va vérifier tous les jours si une facture est en attente de règlement et me notifie sur mon téléphone via ntfy :

 

Cela fonctionne avec certaines communes de l'agglomération Grenobloise, mais pas que.

Liste des communes de l'agglo compatibles

Avant tout vous devez savoir si votre commune est compatible avec ce script. Pour que cela fonctionne votre commune doit être en "gestion métropole".

3 méthodes pour cela : une facile 2 autres plus destinées aux bidouilleurs. Pas d'inquiétude car peu importe la méthode le résultat sera le même.

Méthode 1 (facile)

Rendez-vous sur cette page https://ael.eauxdegrenoblealpes.fr/ puis cliquer sur votre commune dans le menu.

Prêtez attention au message qui vous informe de qui dépend votre commune :

Si votre commune dépend de "Métropole Alpes Grenoble" le script fonctionnera pour votre commune.

Si votre commune dépend d'autre chose que "Métropole Alpes Grenoble" désolé mais ce script ne fonctionnera pas.

Méthode 2 (avancée)

Rendez-vous sur cette liste :

https://ael.eauxdegrenoblealpes.fr/local/communes.json

Une fois votre commune trouvé, cherchez :

"nomSociete": "METROPOLE"
  • Si votre commune est listée et avec cette valeur alors ce script va fonctionner
  • Si votre commune est listée mais avec une autre valeur que "METROPOLE" en face du champ "nomSociete" alors ce script risque de ne pas fonctionner.

Méthode 3 (avancée en CLI)

Pour les paresseux vous pouvez également vérifier la compatibilité depuis un terminal bash :

curl -s https://ael.eauxdegrenoblealpes.fr/local/communes.json | jq -r '.items[] | select(.nomSociete == "METROPOLE") | .nomCommune'

Cette valeur correspond aux communes qui utilisent le système d'agence en ligne (AEL) de "www.somei.fr" (également visible dans les entêtes HTTP de certaines requêtes) compatible avec ce script. Si votre commune fait partie de la liste retournée alors ce script fonctionnera.

Si vous habitez en dehors de l'agglomération Grenobloise et que cela marche pour vous pensez à le préciser en commentaire 🙂

Téléchargement du script

Récupérez le script depuis mon espace GitHub :

↪ regiesDesEauxGrenoble.sh (raw)

Rendez le script exécutable chmod +x *.sh

puis modifiez les 3 variables obligatoires :

LOGIN="[email protected]"
PASSW="xxxxxxxxxxxxxxxx"
NUMCONTRAT="1234567"

Le numéro de contrat se trouve en haut à gauche de votre espace en ligne, sinon sur vos factures.
⚠ à ne pas confondre avec le numéro de compteur.

Enfin pour recevoir la notification avec ntfy renseignez le chemin du script de notification ntfy :

NTFYSCRIPT="/home/pi/ntfy/ntfy-ng.sh"
NTFYTOPIC="topic-ntfy-au-choix"

Pour ne pas recevoir la notification via NTFY commentez la ligne qui commence par $NTFYSCRIPT

Lancement du script

Et voici une trace d'exécution du script :

./regiesDesEauxGrenoble.sh
___ Debut du script v2023.11.30 ___

> conversationId=JS-WEB-Netscape-d2b7b62f-dbbc-4e98-b6d9-c6cf0df682a2

=== [CURL_0] Lecture cookie BigIP ===
> Cookie BigIP=!FEnXYYZzn8rzsY1t3jM/Zi5c...

=== [CURL_1] Recup openToken et MessageId (/generateToken) ===
> OpenToken=openToken-9270a4c3-db52-5573-ccdf-a6548855ff0a3
> MessageId=SMI-WEBAPI-MSG-20240325-123157-874s9fd2-daf2-4cd6-9425-c718ea1011c1

=== [CURL_2] Envoi du formulaire de connexion (/authentification) ===
> tokenAuthentique=50364c12-19ac-87a2-a9b1-c14f2f8415ac

=== [CURL_3] Lecture solde euros (/Facturation) ===
[Facture d'Eau] 34,15€ A REGLER

Et voilà !

Conclusion

Vous n'avez maintenant plus aucune excuse pour payer vos factures en retard !

Vous pouvez ensuite connecter le tout facilement à votre solution domotique, ou laisser le script tourner en crontab.

Je suis content de vous partager ce bout de script car j'ai passé quelques heures dessus pour décortiquer le fonctionnement sans avoir d'API digne de ce nom. Je ne m'attendais pas à devoir faire autant d'étapes avec cURL !

J'espère que ce script vous sera utile! En tout cas c'était un très entrainement pour moi et je sais que cette base me resservira. D'ailleurs je vous partage très bientôt un autre script similaire pour des charges envoyés par un syndic d'immeuble (même problème : les emails arrivent aléatoirement...)

 

 

Vous n'aimez pas le RSS : abonnez-vous par email 📥
Vous devriez me suivre sur Twitter : @xhark

Article original écrit par Mr Xhark publié sur Blogmotion le 26/03/2024 | Pas de commentaire |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons

Cet article [Script] Être notifié d’une facture d’eau à payer (Métropole) provient de : on Blogmotion.

Linux : comment créer un fichier d’une taille spécifique ?

27 février 2024 à 16:22

I. Présentation

Dans ce tutoriel, nous allons voir comment créer un fichier d'une taille définie sur une machine Linux (Debian, Ubuntu, Rocky Linux, Fedora, etc.) grâce à l'utilisation de la commande "dd" et d'un fichier spécial : /dev/zero.

Que ce soit sous Linux, Windows, ou un autre système, il est intéressant de savoir créer des fichiers vide ayant une taille définie. Pourquoi ? Nous pouvons imaginer plusieurs scénarios et cas d'usages. Par exemple, pour effectuer un transfert de fichiers plus ou moins lourd et voir le taux de transfert sur le réseau, pour tester une restriction au niveau des quotas sur une machine, ou encore pour tester des commandes de recherche fichiers en fonction de leur taille.

Pour atteindre notre objectif, nous allons utiliser la commande « dd » qui est une sorte de couteau suisse permettant de nombreuses opérations dont la création de fichiers avec une taille prédéfinie. Nous allons coupler l'utilisation de la commande "dd" avec le fichier de périphérique "/dev/zero" qui a une particularité : lorsqu'on le lit, il génère des caractères nuls (des zéros). Ainsi, nous allons pouvoir générer plus ou moins de zéros en fonction de la taille de fichier souhaitée.

Passons à la pratique...

Version originale de cet article : 09 juin 2013.

II. Procédure

Voyons comment créer un fichier de 100 Mo, nommé « MonFichier.txt » (stocké dans le répertoire courant) et qui sera constitué de 100 000 blocs de 1 Ko. La seconde commande permet de lister le contenu du répertoire en affichant la taille sous une forme lisible.

dd if=/dev/zero of=MonFichier.txt bs=1k count=100000

Le paramètre « bs » correspond à « block_size » c’est-à-dire la taille d’un bloc et, « count » au nombre de blocs de cette taille qu’on doit créer. En ce qui concerne « if=/dev/zero », on appelle comme fichier d’entrée un fichier spécial qui génère des caractères nuls. De ce fait, le fichier sera rempli de 0.

Créer un fichier taille définie sous Linux avec la commande dd

Partant de ce constant, nous pouvons jouer sur les paramètres "bs" et "count" pour atteindre le même résultat en créant un fichier avec un seul bloc de 100 Mo. Ce qui donnerait :

dd if=/dev/zero of=MonFichier2.txt bs=100M count=1

Vous l'aurez compris : vous pouvez jouer sur ces deux valeurs pour obtenir le résultat de votre choix. Ainsi, nous pouvons facilement créer des fichiers de plusieurs Mo ou Go.

Si vous cherchez à mesurer les performances d'un disque, vous pouvez utiliser la commande "dd" d'une autre façon qui consiste à ajouter le flag "oflag=direct". Voici comment effectuer un test avec 10 blocs de 1 Go :

dd if=/dev/zero of=MonFichier.txt bs=1G count=10 oflag=direct

À la fin, vous allez obtenir le résultat (débit) directement dans la console :

Linux - Commande dd mesurer performances disque

Sachez que vous pouvez remplacer « /dev/zero » par "/dev/random" ou "/dev/urandom" pour remplir un fichier avec des nombres aléatoires, plutôt que d'utiliser des valeurs nulles.

III. Conclusion

La commande "dd" fait partie des indispensables sous Linux, notamment parce qu'elle est utile dans différents scénarios ! Nous pourrions également l'utiliser pour effectuer un effacement sécurisé d'un disque, mais ceci pourra faire l'objet d'un autre article.

The post Linux : comment créer un fichier d’une taille spécifique ? first appeared on IT-Connect.

Linux : comment obtenir la taille d’un répertoire ? La réponse avec la commande du

12 février 2024 à 07:00

I. Présentation

Dans ce tutoriel, nous allons apprendre à calculer la taille d'un dossier sous Linux, à l'aide de la commande "du". Que ce soit sous Linux, ou sur un autre système d'exploitation, il peut s'avérer nécessaire et utile d'être capable d'afficher la taille totale d'un dossier ou d'un fichier.

Sous Linux, la commande "du" qui signifie "Disk Usage", fait partie des commandes indispensables, notamment sur un système dépourvu d'interface graphique.

Version originale de l'article : 6 mars 2013.

II. Calculer la taille d'un dossier avec du

Pour cette démonstration, nous allons utiliser le répertoire "/home/flo/docs" qui contient plusieurs fichiers, comme le montre l'image ci-dessous :

ls -l /home/flo/docs
Calculer taille dossier Linux

Tout d'abord, il faut savoir que le fait d'exécuter la commande "du" sans option va permettre d'obtenir la taille du répertoire courant.

du

Dans le cas présent, la valeur retournée est celle-ci : 350004. Voilà, ceci correspond à la taille, en octets, de ce répertoire.

Pour que ce soit plus facile à lire, nous allons ajouter l'option "-h" qui signifie "Human readable" et qui permet d'afficher le résultat en kilo-octets, méga-octets, giga-octets, etc... Afin d'avoir une valeur plus facilement compréhensible pour un humain.

du -h

Cette fois-ci, le résultat est plus explicité : 342M, pour 342 Mo.

Voici la différence en image :

Afficher taille dossier avec commande du Linux

Ici, il n'y a pas de sous-dossiers dans "/home/flo/docs", donc la commande retourne uniquement la taille de ce répertoire. Il est à noter que s'il y a des sous-dossiers, la commande du va retourner la taille totale, ainsi que la taille pour chaque sous-dossier. Pratique, n'est-ce pas...

Voici un exemple, si l'on remonte d'un cran (/home/flo) :

commande du taille dossier et sous-dossiers

Si l'on souhaite obtenir un résultat plus compact avec uniquement la taille totale, l'option "s" doit être ajoutée, comme ceci :

du -sh

Enfin, sachez que pour calculer la taille du répertoire de notre choix, il suffit de le préciser à la suite de la commande. Par exemple, si l'on désire calculer la taille du répertoire "/etc/" de notre machine :

du -sh /etc/

Peu importe dans quel répertoire on se situe (au niveau du prompt), c'est bien la taille du répertoire cible qui est calculée.

Obtenir taille d'un répertoire sous Linux avec du

Remarque : si vous spécifiez le chemin vers un fichier, vous pouvez obtenir sa taille dans un format human readable avec l'option "h". Toutefois, cette option est également disponible avec la commande "ls" que vous connaissez certainement.

III. Obtenir la liste des répertoires les plus volumineux

La commande du, couplée aux commandes sort et head, va permettre d'obtenir la liste des répertoires les plus volumineux présents sur votre machine Linux. Dans certaines situations, notamment si l'on a besoin de libérer de l'espace disque sur un serveur Linux, ceci peut s'avérer très pratique. Ce qui est intéressant, c'est que l'on peut effectuer cette recherche sur une partie spécifique du système de fichiers : /var, /home, /etc, etc.

Sur une machine où il y a de nombreux utilisateurs, nous pourrions rechercher les répertoires "home" les plus volumineux.

Pour cela, nous allons cibler "/home" avec du puis envoyer le résultat à la commande sort pour trier les répertoires en fonction de leur taille, et enfin, nous allons envoyer la sortie de la commande sort à la commande head pour afficher que les 5 premiers répertoires (il suffit de modifier cette valeur pour avoir un Top 3, un Top 5, un Top 10, etc.).

Ce qui donne :

du -h --max-depth=1 /home/ | sort -rh | head -5

L'option "--max-depth=1" permet de prendre uniquement les répertoires de premier niveau (c'est-à-dire les répertoires avec le nom des utilisateurs, dans notre cas). C'est important, car sinon la sortie de la commande sera moins explicite.

Voici la différence avec ou sans cette option :

Linux liste des répertoires les plus volumineux

IV. Conclusion

La commande du, disponible sur Debian, Ubuntu, Red Hat, etc... est très pratique, et elle doit être connue de tous les administrateurs systèmes qui ont besoin de gérer des machines Linux. 😉

Enfin, pensez à précéder la commande "du" avec "sudo" pour éviter d'utiliser directement le compte "root" et avoir suffisamment de privilèges pour calculer la taille d'un répertoire ou d'une arborescence complète.

The post Linux : comment obtenir la taille d’un répertoire ? La réponse avec la commande du first appeared on IT-Connect.

Linux : comment utiliser grep pour rechercher un mot dans plusieurs fichiers et dossiers ?

25 janvier 2024 à 18:19

I. Présentation

Dans ce tutoriel, nous allons utiliser la commande "grep" sous Linux pour rechercher la présence d'un mot dans plusieurs fichiers et dossiers, sur une machine Linux (Debian 12, pour cet exemple).

La commande "grep" fait partie des commandes indispensables lorsqu'il est question d'administration de machines Linux. D'ailleurs, vous avez peut-être déjà utilisé la commande grep pour rechercher une chaine de caractère dans un fichier. Cette fois-ci, nous irons plus loin puisque nous allons effectuer une recherche dans plusieurs fichiers ou dossiers.

Les cas d'utilisation sont nombreux :

  • Rechercher les occurrences d'une adresse IP dans des fichiers
  • Rechercher les occurrences d'un nom d'utilisateur
  • Rechercher les occurrences d'une fonction dans un ensemble de scripts
  • Etc...

Sur un environnement Windows, vous pouvez utiliser le cmdlet PowerShell "Select-String" pour effectuer des recherches similaires :

Version d'origine de l'article : 15 août 2012

II. La commande grep et la récursivité

Pour que la commande grep recherche dans les fichiers et dossiers de façon récursive, nous devons utiliser l'option "-r". La syntaxe de la commande sera la suivante :

grep -r "mot à rechercher" /chemin/vers/le/dossier

Par exemple, si nous voulons rechercher tous les fichiers contenants le mot "it-connect" sur tout le système (la racine "/" est notre point de départ), nous allons utiliser cette commande :

grep -r "it-connect" ./

Nous pouvons également rechercher à partir d'un autre répertoire. Par exemple, si l'on souhaite rechercher dans tous les fichiers et dossiers sous "/home", nous utiliserons cette commande :

grep -r "it-connect" /home/

Voici le résultat obtenu :

Grep rechercher mot dans plusieurs fichiers dossiers

Cela signifie qu'après avoir analysé le contenu de tous les fichiers présents dans "/home/" et dans tous les sous-dossiers présents sous cette racine, grep a trouvé uniquement un seul résultat. Il s'agit du fichier "/home/flo/document.txt" et grep a identifié la chaine "www.it-connect.fr" à l'intérieur.

III. Quelques options supplémentaires

A. Grep : ne pas tenir compte de la casse

Pour étendre légèrement votre recherche, vous pouvez utiliser l'option "-i" au lancement de votre commande pour rendre grep insensible à la casse. Sinon, sans cette option, la commande est sensible à la casse, ce qui signifie qu'elle fait la distinction entre les minuscules et les majuscules, ce qui peut influencer le résultat de la recherche (c'est un mode plus strict).

grep -r -i "it-connect" /home/
# ou
grep -ri "it-connect" /home/

Cela donnera le résultat suivant:

Nous pouvons voir que la commande retourne un résultat supplémentaire, dans une page HTML où grep a pu identifier la chaine "IT-Connect".

B. Grep : afficher seulement les noms de fichiers

Vous pouvez simplifier le résultat de votre recherche en y ajoutant l'option "-l". Ainsi, seuls les noms des fichiers apparaitront. Sans cette option, et comme nous l'avons vu précédemment, vous aurez le nom du fichier ainsi que le contenu de la ligne contenant le mot recherché, ce qui peut rendre le résultat de la recherche peu lisible s'il y a beaucoup de résultats.

grep -r -i -l "it-connect" /home/
# ou
grep -ril "it-connect" /home/

Cela donnera le résultat suivant :

C: Grep : afficher les numéros de ligne

Nous pouvons afficher le numéro de ligne où une chaîne a été trouvée en utilisant l'option "-n" avec la commande grep. Cette option ne peut pas être utilisée conjointement avec l'option "-l".

grep -r -i -n "it-connect" /home/
# ou 
grep -rin "it-connect" /home/

Ainsi, nous pouvons que pour le premier résultat, la chaine a été identifiée sur la ligne n°1, tandis que pour le second résultat, la chaine a été identifié sur la ligne n°3.

grep avec numero de ligne

Une fois de plus, nous pouvons constater que grep contient beaucoup d'options d'exécution, ce qui en fait un outil très puissant !

IV. Conclusion

Grâce à cette commande facile à utiliser, nous pouvons effectuer une recherche rapidement sur un système Linux. Ceci peut permettre de gagner un temps précieux...!

The post Linux : comment utiliser grep pour rechercher un mot dans plusieurs fichiers et dossiers ? first appeared on IT-Connect.

[Synology] Envoyer un email de notification

Par : Mr Xhark
4 octobre 2023 à 08:00

Je vous propose aujourd'hui une astuce à destination des possesseurs de NAS Synology qui souhaite envoyer des notifications par email. Le tout en bash.

Le but est d'envoyer un email sans se préoccuper de la configuration du serveur SMTP. Je me sers de ce système pour recevoir un compte rendu mensuel par email d'un script de sauvegarde (de Blogmotion).

Pré-requis

Il est nécessaire d'avoir configuré la partie notification dans DSM :

Panneau de configuration > système > notification

Je vous conseille de créer une boite email chez Microsoft et de la dédier pour les notifications. Cela peut fonctionner avec d'autres fournisseurs comme Gmail ou votre serveur personnalisé, libre à vous d'essayer. J'ai de bons résultats avec une boite outlook donc je n'ai pas cherché plus loin 🙂

Voici ma configuration pour une boite email Outlook :

  • Serveur SMTP personnalisé
  • Serveur SMTP : smtp.office365.com
  • Port SMTP : 587

A l'aide du bouton "envoyer un courriel test" vérifiez que vous recevez bien l'email. En cas de doute sur un filtrage antispam, testez sur une adresse YopMail (aucun email n'est filtré chez YopMail).

Le script bash

DSM va s'appuyer sur un fichier de configuration suivant :

/usr/syno/etc/synosmtp.conf

Voici comment parser ce fichier et envoyer un email en s'appuyant sur cette configuration :

#!/bin/bash
TOMAIL="[email protected]"
SUJETMAIL="voici le sujet du mail"CORPSMAIL="un exemple de contenu du mail"FROMMAIL=$(grep 'smtp_from_mail' /usr/syno/etc/synosmtp.conf | cut -d '=' -f2 | tr -d '"')

{
echo To: $TOMAIL
echo From: $FROMMAIL
echo Subject: $SUJETMAIL
echo 
echo $CORPSMAIL
} | ssmtp $TOMAIL -v

L'option -v permet d'avoir un retour verbeux, pratique en cas de problème d'expédition.

⚠ Attention à bien laisser la ligne avec le "echo" vide.

A la place de la ligne echo $CORPSMAIL vous pouvez insérer une commande système (résultat d'un script, contenu d'un fichier, etc).

Conclusion

J'ai souhaité vous partager cette astuce qui permet d'envoyer facilement des emails, sans se soucier des problématiques de délivrabilité.

Outlook (ex Hotmail) a pour réputation d'être particulièrement tatillons pour la réception des emails vers des boites outlook, hotmail, etc. C'est pourquoi j'ai choisi d'utiliser une boite email Microsoft : les serveurs de réception du destinataire ont tendance à accorder une bonne confiance aux emails qui sont relayés par Microsoft (je ne sais pas si cette phrase est claire 😄). Si vous avez des données sensible privilégier un fournisseur d'email un peu plus respectueux des données (protonmail, etc).

Pensez à laisser un commentaire si ce post vous a été utile 👍

Vous n'aimez pas le RSS : abonnez-vous par email 📥
Vous devriez me suivre sur Twitter : @xhark

Article original écrit par Mr Xhark publié sur Blogmotion le 04/10/2023 | Pas de commentaire |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons

Cet article [Synology] Envoyer un email de notification provient de : on Blogmotion.
❌
❌