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
[ CATEGORIE ] : Langage
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
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
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=$
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
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],
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"
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
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
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
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
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) {
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
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
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
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
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) =
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
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
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
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
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 !
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
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#------------------------------------------------------------
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
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
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
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[
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
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
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
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