Vue normale

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

Comment vérifier et corriger vos scripts bash ☑️

Par : Mr Xhark
29 mars 2024 à 08:00

J'utilise le site shellcheck pour vérifier que je n'ai pas fait d'erreur de syntaxe, déclaré des variables inutilisées, etc.

shellcheck peut fonctionner localement si vous ne souhaitez que vos scripts restent sur votre machine (disponible dans les dépôts de votre distribution) :

$ shellcheck myscript
In myscript line 12:
eof
^-- SC1118: Delete whitespace after the here-doc end token.

Je l'utilise avant de vous partager un script sur Blogmotion et cela me permet de faire une vérification avant publication. Il y a toujours quelques détails à modifier 😉

Je vous partage aussi la présentation d'Adrien D :

Attention aux suggestions de correction sur les doubles quotes, qui peuvent parfois être superflues et casser le script (j'ai eu le cas avec cURL).

Pour faire tourner du code en ligne (bash y compris) je vous rappelle que vous pouvez utiliser le site ideone.

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 29/03/2024 | Pas de commentaire |
Attention : l'intégralité de ce billet est protégée par la licence Creative Commons

Cet article Comment vérifier et corriger vos scripts bash ☑️ provient de : on Blogmotion.

[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.

[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.
❌
❌