[ CATEGORIE ] : Langage

[ TITLE    ] : Boucles for avec "&" ou ";"
[ CATEGORY ] : //
[ DATE     ] :

La principale différence entre ces 2 boucles for est que la 1ère fait de l’exécution parallèle (&) et l’autre séquentielle (;) des processus : # for i in {1..3}; do md5sum /dev/zero & done# for i in {1..3}; do md5sum /dev/zero; done Commande avec & ou exécution en arrière-planCommande pour une éxécution en arrière-plan : # for i in {1..3}; do md5sum /dev/zero & done Dans cette commande : La boucle for itère 3 fois À chaque itération, la commande m

[ TITLE    ] : Script bash - Backup on distant stockage
[ CATEGORY ] : //
[ DATE     ] :

A bash script for backup some configuration files on a distant volume. PrerequiesYou need at least this packages: # yum install nfs-utils# yum intall s-nail // for send mails You need to edit your /etc/fstab and add the following line: nfs-stockage.my.company.org:/backups/aap /mnt/aap-backups nfs defaults 0 0 You can add a cron like this (every monday at 8am): 0 8 * * 1 /root/AAP-scripts/backup-config.sh | mailx -v -s "[AAP] - Backup of $HOSTNAME" -S smtp=mail.m

[ TITLE    ] : Python - Canny lib
[ CATEGORY ] : //
[ DATE     ] :

Script en Python pour donner un effet “Canny” à vos images en ajouter une couche de vert (mais en conservant les blancs) : from PIL import Image, ImageOpsimport cv2import numpy as npimport osimport globdef canny_edge_detection(input_path, output_path): try: image = cv2.imread(input_path, cv2.IMREAD_GRAYSCALE) edges = cv2.Canny(image, 150, 250) cv2.imwrite(output_path, edges) print(f"canny_edge_detection : {input_path} - OK") except Exception

[ TITLE    ] : .bashrc par défaut pour tous les users
[ CATEGORY ] : //
[ DATE     ] :

Pour créer un fichier .bashrc par défaut pour tous les utilisateurs, il faut le placer dans /etc/skel/. Les fichiers et répertoires situés dans /etc/skel/ sont utilisés comme modèle lors de la création de tous nouveaux utilisateurs. Créez un fichier /etc/skel/.bashrc qui, par exemple contient : # Récupération des informations de la distributioninfos=$(lsb_release -d)version=$(cat /etc/debian_version)# Récupération des informations utilesa=${infos:13:6}b=${version:0:5}c=$

[ TITLE    ] : Bash - Activité des utilisateurs
[ CATEGORY ] : //
[ DATE     ] :

Ce script est à mettre dans la crontab #!/bin/bash# Fichier pour les logsACTIVITY_LOG_FILE="/opt/activity_log.txt"# DestinatairesTO_EMAIL="[email protected] [email protected]"# ExpéditeurFROM_EMAIL="[email protected]"# Serveur SMTPSMTP_SERVER="mail.domain.company.org"# Fonction mailsend_email() { subject="$1" body="$2" printf "%b" "$body" | mailx -v -s "$subject" -S smtp=&qu

[ TITLE    ] : Python - Calcul matriciels
[ CATEGORY ] : //
[ DATE     ] :

Script Python permettant de calculer des matrices booléennes et décimales avec les principaux opérateurs. from fractions import Fractionimport numpy as np# Création de matrice 4x4matrice_decimal1 = np.array([[1, 2, 8, 0], [1, 4, 0, 1], [0, 3, 2, 0], [3, 1, 2, 1]])matrice_decimal2 = np.array([[8, 1, 0, 4], [1, 5, 1, 1], [0, 0, 4, 3],

[ TITLE    ] : Bash - Convertir des caracteres
[ CATEGORY ] : //
[ DATE     ] :

Ce script bash permet de convertir des caractères en les remplaçant par d’autres. #!/bin/bash# Chaîne de caractères fourniema_chaine="23:31-13:08-02:45-[...]-10:23-00:00-13:37-03:14-16:51-[...]-20:17-09:54-23:31"# Définir l'association chiffre-lettredeclare -A num_to_letter=( [0]="O" [1]="L" [2]="Z" [3]="E" [4]="A" [5]="S" [6]="G" [7]="T" [8]="B" [9]="J"

[ TITLE    ] : Bash - Heure 1337
[ CATEGORY ] : //
[ DATE     ] :

Ce script bash permet de définir une heure au format hh:mm, d’ajouter à chaque fois 13h et 37 minutes et de colorer le résultat lorsque 13:37 apparait.Pour faire un cycle complet il faut 1441 itérations. #!/bin/bashcurrent_date="23:31"for i in {1..1441}; do if [[ "$current_date" = "23:31" ]]; then echo -en "\e[32m$current_date\e[0m-" elif [[ "$current_date" = "13:37" ]]; then echo -en "\e[37m$current_d

[ TITLE    ] : Bash Pattern Filter
[ CATEGORY ] : //
[ DATE     ] :

Une expression régulière ou motif ou regex (de l’anglais regular expression) est une chaîne de caractères qui décrit, selon une syntaxe précise, un ensemble de chaînes de caractères possibles. Elles sont issues des théories mathématiques des langages formels. Les expressions régulières peuvent être testées via https://regex101.com/ Tableau des correspondancesExpressions rationnelles courantes : Pattern Correspondance * Toute chaîne de zéro caractère ou plus ? Tout ca

[ TITLE    ] : Python - PIL - Pixelisation
[ CATEGORY ] : //
[ DATE     ] :

Pour pixeliser des images il existe la bibliothèque PIL pour Python. Pour utiliser PIL dans vos scripts : # pip install Pillow Pixelisation d’imageSimple pixelisationJe crois vraiment que c’est le script le plus simple de toute la Terre entière pour pixeliser des images : #!/usr/local/bin/python3from PIL import Image# Open imageimg = Image.open("UneImage.jpg")# Resize smoothly down to 16x16 pixelsimgSmall = img.resize((16,16), resample=Image.Resampling.NEAREST)# Scale back up using NE

[ TITLE    ] : Script bash de ping
[ CATEGORY ] : //
[ DATE     ] :

Simple script : #!/bin/bashHOST=x.x.x.xwhile !(ping -c1 -W1 $HOST > /dev/null)do echo "$HOST n'est pas accessible"doneecho "$HOST est accessible Documentation https://forums.archlinux.fr/viewtopic.php?t=2317

[ TITLE    ] : Javascript - Image aléatoire
[ CATEGORY ] : //
[ DATE     ] :

Pour modifier une image HTML toutes les 10 secondes en JavaScript : <img id="image" src="https://lien/vers/image/01.jpg" style="width:100px"> <script> var imageSources = ["https://lien/vers/image/02.jpg", "https://lien/vers/image/03.jpg", "https://lien/vers/image/04.jpg", "https://lien/vers/image/05.jpg"] var index = 0; setInterval(function(){ if (index === imageSources.length) {

[ TITLE    ] : Bash - Jeux Tetris
[ CATEGORY ] : //
[ DATE     ] :

J’ai trouvé 2 tetris en bash, les liens originaux se trouvent dans la section Documentation. ScriptsVersion colorLe script tétris en bash avec des couleurs : #!/bin/bash # Tetris Game #APP declarationAPP_NAME="${0##*[\\/]}"APP_VERSION="1.0" cRed=1cGreen=2cYellow=3cBlue=4cFuchsia=5cCyan=6cWhite=7colorTable=($cRed $cGreen $cYellow $cBlue $cFuchsia $cCyan $cWhite) iLeft=3iTop=2((iTrayLeft = iLeft + 2))((iTrayTop = iTop + 1))((iTrayWidth = 10))((iTrayHeight = 15)) cBord

[ TITLE    ] : Bash - Deviner un nombre
[ CATEGORY ] : //
[ DATE     ] :

Script avec une boucle while et un random pour deviner un nombre compris entre 0 et 1000 Script bashAvec mise en formeLe scriptLe script avec une mise en forme : #!/bin/bashnumber=$(( $RANDOM % 1000 + 1 ))echo -e "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"echo -e "┃ JEUX : DEVINER UN NOMBRE "echo -e "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"guess=0n=0echo -n "┃ Deviner le nombre compris entre

[ TITLE    ] : Bash - Perimètre Aire Surface Volume
[ CATEGORY ] : //
[ DATE     ] :

Calcul en bash des périmètres, aires, surfaces et volumes d’un cercle/sphère, carré/cube et triangle/tétraèdre. Dans ce script, les résultats n’affichent que la partie entière. Rappel des formules de plusieurs formes géométriques Cerce/Sphère Triangle/Tetraèdre Carré/Cube Rectangle/Boîte Périmètre 2πR C1+C2+C3 4C (L+l)*2 Aire πR² (C1*C2)/2 C² (L*l) Surface 4πR² 2(C1*C2) 6C² 2((L1*l1)+(L2*l2)+(L3*l3)) Volume (4/3)πR³ (Aire*h)/3 C³ (L*l)*P Script

[ TITLE    ] : Bash - Nombre pair ou impair
[ CATEGORY ] : //
[ DATE     ] :

Un nombre est pair lorsque le reste de sa division euclidienne par 2 est 0. En d’autres termes un nombre est pair lorsque son modulo 2 est égal à zéro. Script bashAvec mise en formeLe scriptLe script avec une mise en forme : #!/bin/bash# Fonction Pair/Impairpairimpair(){ for i in $valeur do if (($i%2==0)); then echo pair else echo impair fi done}# Affichage de tous les termes

[ TITLE    ] : Bash - Fibonnaci
[ CATEGORY ] : //
[ DATE     ] :

Les sempiternelles suites de Fibonnaci…, on les retrouve toujours partout en progra, comme la tour de Hanoï dans n’importe quel jeu d’énigmes d’ailleurs… Voici donc un script bash permettant de calculer la suite de Fibonnaci. Pour rappel, une suite de Fibonnaci est une fonction récursive et se calcule de la façon suivante : F(0) = 0F(1) = 1F(n) = F(n–1) + F(n–2) Exemple :F(2) = F(1) + F(0) = 1F(3) = F(2) + F(1) = 1+1 = 2F(4) = F(3) + F(2) = 1+1 + 1 = 3F(5) = F(4) + F(3) = 1+1+1 + 1+1 = 5F(6) =

[ TITLE    ] : Bash - Factorielle
[ CATEGORY ] : //
[ DATE     ] :

Un script bash permettant de calculer la factorielle d’un nombre. Pour rappel, une factorielle est une fonction récursive et se calcule de la façon suivante : n! = n * (n-1) * (n-2) * ... * 1 Exemple : 5! = 5 * 4 * 3 * 2 * 1 = 120 Script bashAvec mise en formeLe scriptLe script avec une mise en forme : #!/bin/bash# Fonction factorielleF=1factorielle(){ for ((i=1;i<=valeur;i++)) do F=$((F*$i)) done echo -e "\e[31m $F \e[0m"}# Affichage de tous les termes

[ TITLE    ] : Migration Site Internet et Mail
[ CATEGORY ] : //
[ DATE     ] :

Ce script a été écrit aux environs de 2012. Dans le cadre d’une migration de plusieurs sites Internet et de boites mail depuis un serveur (Gentoo) vers un autre plus récent (Debian), j’avais codé un petit script dans le but d’automatiser les tâches. ContexteDe nombreux éléments étaient à migrer sur le nouveau serveur : les sites Internet de chaque client les boites mail de chaque client les bases de données de chaque client ScriptsScript principal, comportant les 3 fonctions de récupération a

[ TITLE    ] : Bash - Petit script de recherche
[ CATEGORY ] : //
[ DATE     ] :

Pour faire une recherche dans un répertoire nommé rep, avec des fichiers d’extention .md ScriptRecherche basiqueDans votre .bashrc, créer la fonction suivante, il s’agit d’un grep couplé à un sort. Le $@ permet de passer des arguments dans la fonction : # Fonction de recherchesrh () { grep -R --color "$@" /chemin/vers/le/répertoire | sort} Recherche évoluéeUne version plus évoluée de cette fonction, avec sed et awk, le “µ” désigne le caractère de remplacement : # Fonction

[ TITLE    ] : Shell Interactif ou Shell de connexion
[ CATEGORY ] : //
[ DATE     ] :

Un shell sert basiquement à exécuter des commandes sans se soucier de savoir si elles sont dans un fichier ou tapées directement dans le terminal, cependant, quelles sont les différences entre un shell interactif/non-interactif et un shell de connexion ? Shell interactif : lorsque vous tapez une commande directement dans le terminal et attendez qu’elle s’exécute. Shell non-interactif : lorsque le shell lit les commandes d’un fichier. Shell de connexion : login + mot de passe, la commande log

[ TITLE    ] : Bash - Exporter tous les groupes
[ CATEGORY ] : //
[ DATE     ] :

Voici un script qui permet de récupérer la liste de TOUS les groupes (primaire et secondaires) de chaque utilisateurs en parsant le fichier /etc/passwd et en utilisant la commande id. #!/bin/bashfor U in $(cut -d: -f1 /etc/passwd)do GROUPS=$(id -Gn $U);echo "$U : $GROUPS"done Le rendre exécutable puis lancer la commande $ . monscript.sh > monfichier.csv documentationRemerciements ddfdom Merci ddfdom !

[ TITLE    ] : Bash - Exporter tous les utilisateurs
[ CATEGORY ] : //
[ DATE     ] :

Voici un script qui permet de récupérer la liste de tous les utilisateurs Linux en parsant le fichier /etc/passwd. #!/bin/bash# "/etc/passwd" data in format "LOGIN:UID:GID:DESCRIPTION".accounts=$(awk -F ':' '{print $1";"$3";"$4";"$5}' /etc/passwd | grep -v "^#" | sort)result=""while IFS= read -r account; dologin=$(echo "$account" | awk -F ';' '{print $1}')ui

[ TITLE    ] : Repertoires et fichiers de config
[ CATEGORY ] : //
[ DATE     ] :

Par défaut les fichiers et répertoires de config se placent dans : /home/[...] La configuration de base se trouve dans le fichier /bin/idea.properties Et contient : [...]#---------------------------------------------------------------------# Uncomment if you want to customize a path to the settings directory.#---------------------------------------------------------------------# idea.config.path=${user.home}/.PyCharmCE/config#------------------------------------------------------------

[ TITLE    ] : Bash - Confort Visuel
[ CATEGORY ] : //
[ DATE     ] :

Résumé des paramètres essentiels dans le but d’améliorer le confort visuel dans votre terminal. Scripts BashPour une connexion en rootLes couleurs sont ici dans les tons de rouges.Dans votre fichier bash utilisé par root : # ================================================= ## Personalisations visuelles ## ================================================= ## Récupération des informations de la distributioninfos=$(lsb_release -d)version=$(cat /etc/debian_version)# Récupérat

[ TITLE    ] : Programmation parallèle
[ CATEGORY ] : //
[ DATE     ] :

La programmation parallèle ou parallélisme consiste à mettre en œuvre des architectures permettant de traiter des informations ou algorithmes de manière simultanée ayant pour but de réaliser un grand nombre d’opérations en un temps le plus petit possible. Pour utiliser le parallélisme, les programmes doivent être réalisés avec cette optique. La programmation parallèle est très utilisé pour le calcul de la dynamique des fluides, les prédictions météorologiques, la modélisation et simulation de p

[ TITLE    ] : Matrix terminal
[ CATEGORY ] : //
[ DATE     ] :

Voici plusieurs façon d’avoir un “effet Matrix” dans votre terminal à l’aide d’un script bash ScriptsAffichage classiqueUn défilé de 0 et de 1 #!/bin/bash echo -e while truedo # Nombre de colonnes, ici 30 for i in `seq 1 30` # Génération aléatoire de 0 et 1 do random="$[($RANDOM % 2)]" # Colorisation aléatoire des 0 et 1 chiffre="$[($RANDOM % 4)]" if [ $chiffre -eq 1 ] then couleur="\e[;1;32m $r

[ TITLE    ] : Script - infos distribution et noyau
[ CATEGORY ] : //
[ DATE     ] :

Un petit script qui permet d’avoir toutes les infos sur la version de votre distribution et de votre noyau. Commandes de baseLes commandes utiles brutes nous avons : # cat /etc/issue # cat /etc/os-release# cat /etc/debian_version# lsb_release -a# hostnamectl # uname -a Script basiqueIl s’agit juste ici des commandes les unes à la suite des autres avec une fantastique mise en page : #!/bin/bashecho -e "--------------------------------------------------------------"echo -e "\033[

[ TITLE    ] : Supprimer l'historique
[ CATEGORY ] : //
[ DATE     ] :

Pour effacer plusieurs lignes de l’historique à l’aide d’un script avec de la couleur et des prompts, oui c’est presque magnifique. Le script : #!/bin/bashecho -e "\n\033[0;4;31mChoississez un intervalle de suppression\033[0m"echo -e "\nPremière ligne :"read minValueecho -e "\nDernière ligne :"read maxValueecho -e "\n"# Script utilefor (( i=minValue; i<=maxValue; i++ ))do history -d $i echo "Supression de la ligne" $i done Le rendre ex

[ TITLE    ] : Python 3 Aide mémoire
[ CATEGORY ] : //
[ DATE     ] :

Aide-mémoire sur les fonctions basiques de Python3. Fonctions prédéfinies▷abs(x) : valeur absolue de x▷int(x) : valeur x convertie en entier▷float(x) : valeur x convertie en réel▷str(x) : valeur x (int ou float), convertie en str▷list(x) : valeur x convertie en liste▷tuple(x) : valeur x convertie en tuple▷dict(x) : séquence de couples x convertie en dictio

[ TITLE    ] : Aspirateur de site
[ CATEGORY ] : //
[ DATE     ] :

J’avais besoin de récupérer tous les fichiers audio d’un site internet pour apprendre la prononciation de certains sinogrammes en chinois mandarin. Je devais pour cela me rendre sur la page du sinogramme et afficher la source pour pouvoir enregistrer le fichier audio, dans le but de pouvoir l’écouter à tous moments et sur n’importe quels supports. J’ai donc codé un script rudimentaire pour récupérer tous les fichiers audios d’un répertoire. Je connaissais l’emplacement des fichiers, je savais au

[ TITLE    ] : Python Les basiques
[ CATEGORY ] : //
[ DATE     ] :

Les basiques en Python3. Mémo sur les basiques de la programmation Python3. Importer une librairie et lister ses méthodes : >>> import math>>> dir (math)['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'deg