GNU/Linux >> Tutoriels Linux >  >> Linux

Créer un tableau avec toutes les interfaces réseau en bash

Voici une solution, attribuez la liste puis ajoutez-y un élément :

#!/bin/bash

array_test=()
for iface in $(ifconfig | cut -d ' ' -f1| tr ':' '\n' | awk NF)
do
        printf "$iface\n"
        array_test+=("$iface")
done
echo ${array_test[@]}

Si vous souhaitez que la sortie affiche un élément par ligne :

for i in "${array_test[@]}"; do echo "$i"; done

Pour supprimer localhost de la sortie :

if [ "$iface" != "lo" ] 
then
    array_test+=("$iface")
fi

Mon essai :

readarray -t interfaces < <(ip l | awk -F ":" '/^[0-9]+:/{dev=$2 ; if ( dev !~ /^ lo$/) {print $2}}')
for i in "${interfaces[@]// /}" ; do echo "$i" ; done

bash construira un tableau à partir de toute liste délimitée par des espaces blancs (espaces, tabulations, retours à la ligne) que vous lui donnerez. par exemple. array=(a b c) . Nous pouvons utiliser la substitution de commande ($() ) pour générer une telle liste délimitée par des espaces blancs. Par exemple :

$ ifaces=( $(ip addr list | awk -F': ' '/^[0-9]/ {print $2}') )

et maintenant imprimez le tableau que nous venons de créer :

$ declare -p ifaces
declare -a ifaces=([0]="lo" [1]="eth0" [2]="eth1" [3]="br1" [4]="br0" [5]="ppp0")

Pour exclure lo :

$ ifaces=( $(ip addr list | awk -F': ' '/^[0-9]/ && $2 != "lo" {print $2}') )
$ declare -p ifaces
declare -a ifaces=([0]="eth0" [1]="eth1" [2]="br1" [3]="br0" [4]="ppp0")

Si vous voulez vraiment utiliser ifconfig plutôt que ip , essayez ceci :

ifaces=( $(ifconfig | awk -F':'  '/^[^ ]*: / && $1 != "lo" {print $1}') )

Linux
  1. Bash -c avec des paramètres positionnels ?

  2. Comment créer un tableau d'éléments uniques à partir d'une chaîne/tableau dans Bash ?

  3. `declare -a A` crée-t-il un tableau vide `a` dans Bash ?

  4. Le tutoriel Ultimate Bash Array avec 15 exemples

  5. Répertorier uniquement les noms de périphérique de toutes les interfaces réseau disponibles

Tableaux bash

Tableau associatif dans Bash

Bash Scripting - Tableau associatif expliqué avec des exemples

Bash Scripting - Tableau indexé expliqué avec des exemples

Comment créer des documents avec des scripts Bash

Interfaces utilisateur avec dialogue. Script bash (IV)