[ CATEGORIE ] : Bash

[ 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    ] : .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    ] : 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    ] : 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    ] : 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    ] : 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    ] : 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    ] : 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    ] : Toutes les couleurs et styles Bash
[ CATEGORY ] : //
[ DATE     ] :

Ce script permet d’afficher toutes les couleurs et tous les styles d’écriture possibles dans un terminal. Cette version permet d’afficher les paramètres de style sur le rendu final. #!/bin/bash# -----------------------------------------------# Resize the terminal if it's not in full screen# -----------------------------------------------resizeWindow(){ echo -en "\e[$1;$2;$3t"}# -----------------------------------------------# Example# ------------------------------

[ TITLE    ] : Toutes les couleurs en Bash
[ CATEGORY ] : //
[ DATE     ] :

Petit script permettant d’afficher toutes les couleurs possibles dans le terminal. #!/bin/bash# This program is free software. It comes without any warranty, to# the extent permitted by applicable law. You can redistribute it# and/or modify it under the terms of the Do What The Fuck You Want# To Public License, Version 2, as published by Sam Hocevar. See# http://sam.zoy.org/wtfpl/COPYING for more details.for fgbg in 38 48 ; do # Foreground / Background for color in {0..255} ; do #

[ TITLE    ] : Créer un faux UPTIME
[ CATEGORY ] : //
[ DATE     ] :

Si vous ne savez pas quoi faire un dimanche après midi car il pleut (ou que l’indice UV est trop élevé, au choix) vous pouvez vous amuser à faire un faux uptime. Pour cela, rien de plus simple, il suffit de créer un petit script bash ayant pour but de décomposer et de restituer un faux uptime avec certaines valeurs modifiées. #!/bin/bash# -------------------------------------------------# Reconstitution de l'uptime# L'uptime s'affiche comme tel :# current hour - uptime, - nombre