[ TAG ] : Bash

[ TITLE    ] : Manage Script Bash
[ CATEGORY ] : //
[ DATE     ] :

TIPS & TRICKSTo search the contents of the man pages # man -k searchterm # man -K searchterm Script bash tasks examplesScript bash 1| Create a script file:| - if the paramater is “GM” it outputs “good morning”| - if it is “GN”, it outputs “good night” #!/bin/bash# Vérifie si exactement un argument est fourniif [ $# != 1 ]; then echo "Erreur : Ce script nécessite exactement un argument (GM ou GN)." exit 1fi# Vérifie la valeur de l'argumentif [ "$1" = "GM&quo

[ 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    ] : 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 - Boucles FOR
[ CATEGORY ] : //
[ DATE     ] :

Memo pour les boucles for et while en bash. Boucles forDans un script bashBoucle limitée : #!/bin/bashfor i in {1..10}do echo "My number is $i"done Boucle limitée : #!/bin/bashfor (( n=1; n<=10; n++ ))do echo "My number is $n"done Boucle infinie : #!/bin/bashfor (( ; ; ))do echo "Hello World!"done Dans un terminalDirectement dans le terminal : # for i in {1..10} ; do echo "Bonjour $i" ; done# for i in {1..3}; do sha

[ 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    ] : Utilisateurs connectés et activités
[ CATEGORY ] : //
[ DATE     ] :

La commande w affiche les utilisateurs connectés et ce qu’ils font. Commande wUtilisationExtrait du manuel : w [options] user [...] OptionsLes options sont peu nombreuses et se résument à : -h : ne pas afficher l’entête -s : short format, sans les colonnes JCPU et PCPU -u : Ignores the username while figuring out the current process and cpu times -f : n’affiche pas le champ FROM -V : affiche la version. <username> : affiche les informations d’un utilisateur FichiersLa commande fait app

[ 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    ] : Variables d'environnement
[ CATEGORY ] : //
[ DATE     ] :

La commande printenv peut être utilisée pour répertorier toutes les variables d’environnement sur le système, certaines de ces valeurs changent en fonction de l’utilisateur connecté. Pour afficher toutes les variables d’environnement : # printenv Exemple de sortie : SHELL=/bin/bashPWD=/rootLOGNAME=alineXDG_SESSION_TYPE=ttyMOTD_SHOWN=pamHOME=/rootLANG=fr_FR.UTF-8LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:

[ 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    ] : Exécuter un fichier bash
[ CATEGORY ] : //
[ DATE     ] :

Commande très triviale mais on oublie facilement comment la lancer… Les 3 façons d’éxécuter un .bashrcPour lancer un fichier bash dans un autre répertoire, ici c’est le fichier bash.bashrc :(Bien penser à mettre le point “.“) # . /etc/bash.bashrc Pour lancer un fichier bash dans le répertoire courant, ici c’esr le fichier .bashrc :(Bien penser à mettre le point “.“ et le tilde “~“) # . ~/.bashrc Il également possible d’utiliser la commande source, qui exécute des commandes (ici celles conte

[ 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    ] : Equivalences DOS Bash
[ CATEGORY ] : //
[ DATE     ] :

Equivalence DOS/Bash pour les commandes de base. Equivalences Explication DOS Bash Copier un fichier copy cp Déplacer un fichier move mv Lister le répertoire dir ls Effacer l’écran cls clear Fermer la fenêtre de prompt exit exit Afficher/modifier la date date date Supprimer un fichier del rm Afficher un message dans le terminal echo echo Editer un fichier edit pico

[ 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    ] : Personnaliser Bash V2
[ CATEGORY ] : //
[ DATE     ] :

Un bash en couleur est toujours plus agréable, fait moins mal aux yeux et permet de distinguer plus facilement les lignes et les résultats. Le fichier de configuration se situe dans votre dossier personnel : /home/utilisateur/.bashrc Voir l’article de base : https://n0tes.fr/2017/04/20/Personaliser-bash/ Récupération des infosLa commande lsb_release -d nous permet de récupérer les informations nécessaire pour afficher le nom de la distribution et sa version. Ce script permet de manipuler la cha

[ 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    ] : Les disques sous Linux
[ CATEGORY ] : //
[ DATE     ] :

Résumé sur les commandes générales et essentielles pour manipuler les disques sous Linux, visualiser les différents systèmes de fichiers, les différents disques et pour gérer les partitions. Informations sur les périphériquesDisques SCSI/SATALa commande lsscsi permet d’énumérer les périphériques SCSI/SATA. L’option -s permet d’obtenir la taille du disque. # lsscsi -s[0:0:0:0] disk ATA ST1000LM024 HN-M 2BA3 /dev/sda 1.00TB[1:0:0:0] cd/dvd PLDS DVD-RW DA8A5SH RL61 /dev/sr0

[ TITLE    ] : Liste des commandes hardware Linux
[ CATEGORY ] : //
[ DATE     ] :

Informations sur le système Linux Nom générique et version # cat /etc/issue Nom générique et version détaillées # lsb_release -a # cat /etc/lsb-release Version du noyau # cat /proc/version Version du noyau détaillées # uname -a Informations sur le matériel du système Linux Informations CPU # lscpu # cat proc/cpuinfo # dmidecode -t processor Informations sur bus PCI # lspci (-v -s <numero>) Informations sur les ports USB # lsusb (-v -d <numero>