Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/03/2014, à 23:08

franckyfoys

[Résolu] scripter les interfaces wifi existantes

bonjour,
voici mon script actuel:

#!/bin/bash
#
#
# liste des interfaces wifi
clear
set `ifconfig |grep wlan |awk -F " " '{ print $1 }'`
nbcarte=$#
if [ $nbcarte = 1 ];then
        echo "$nbcarte carte wifi a ete trouvé:"
        echo "carte $nbcarte: $1"
else
        echo "$nbcarte cartes wifi ont ete trouvées:"
        #Compteur:
        cpt=0
        while [ $cpt -le $nbcarte ]
        do
                cpt=$(($cpt+1))
                echo interface$cpt: $($cpt)
        done
fi

mon probleme se situe au niveau de la ligne  echo interface$cpt: $($cpt)
je souhaiterais un resultat graphique du genre interface2: wlan2 mais j'obtient interface2: 2

pouvez vous m'aidez svp?

si c'est une erreur de syntaxe, cela m'arrangerais de comprendre mon erreur, si c'est ma methode de travail, je veux bien repartir de zero, ce n'est pas un soucis.

merci a vous

Dernière modification par franckyfoys (Le 23/03/2014, à 00:08)

Hors ligne

#2 Le 22/03/2014, à 23:13

jplemoine

Re : [Résolu] scripter les interfaces wifi existantes

Je pense que

echo interface$cpt: $($cpt)

doit devenir

echo "interface$cpt: $1"

Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#3 Le 22/03/2014, à 23:21

franckyfoys

Re : [Résolu] scripter les interfaces wifi existantes

bonsoir jplemoine,

oui c'est effectivement le but, seulement je ne sait pas combien d'interfaces je possede donc je voulais que $1, $2, $... devienne $$cpt

le probleme c'est que $$ veut dire quelque chose (le PID du script je crois) donc ca me foire mon script

comment contourner cela ?

Hors ligne

#4 Le 22/03/2014, à 23:36

jplemoine

Re : [Résolu] scripter les interfaces wifi existantes

exact. C'est pas bon. Je réfléchis et je t'envoie un truc mais je ne peux pas tester : j'ai qu'une interface...


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#5 Le 22/03/2014, à 23:39

Yannou90

Re : [Résolu] scripter les interfaces wifi existantes

Bonsoir
Utilise un tableau :

interface=(wlan0 wlan1 ath0 eth1)
echo ${interface[0]}
wlan0
echo ${interface[1]}
wlan1
echo ${interface[2]}
ath0
echo ${interface[3]}
eth1
echo ${interface[@]}
wlan0 wlan1 ath0 eth1

Hors ligne

#6 Le 22/03/2014, à 23:40

jplemoine

Re : [Résolu] scripter les interfaces wifi existantes

Peux-tu me donner le retour de

ifconfig |grep wlan |awk -F " " '{ print $1 }

Dans le cas où il  a plusieurs interfaces.
Merci.


Membre de l'ALDIL (Association Lyonnaise pour le Développement de l'Informatique Libre)
- En pro, après 20 ans de développement, administrateur Linux / Unix depuis Avril 2019.
- En privé, sous Ubuntu-Xubuntu depuis 2009.

Hors ligne

#7 Le 22/03/2014, à 23:59

franckyfoys

Re : [Résolu] scripter les interfaces wifi existantes

voici ce que ca donne:

ifconfig |grep wlan |awk -F " " '{ print $1 }'
wlan1
wlan2

j'ai trouver une solution qui fonctionne en changant la methode et en utilisant un principe de tableau (a ma facon)
voici ce que ca donne:

set `ifconfig |grep wlan |awk -F " " '{ print $1 }'`
nbcarte=$#
iface=$*
if [ $nbcarte = 1 ];then
        echo "$nbcarte carte wifi a ete trouvé:"
        echo "carte $nbcarte: $1"
else
        echo "$nbcarte cartes wifi ont ete trouvées:"
        #Compteur:
        cpt=0
        while [ $cpt -lt $nbcarte ]
        do
                cpt=$(($cpt+1))
                echo -n interface $cpt:
                echo $iface|cut -d' ' -f$cpt
        done
fi

voici le resultat a l'ecran

2 cartes wifi ont ete trouvées:
interface 1:wlan1
interface 2:wlan2

je vais essayer d'integrer ta syntaxe echo ${interface[0]}

merci de ton aide

Hors ligne

#8 Le 23/03/2014, à 00:06

franckyfoys

Re : [Résolu] scripter les interfaces wifi existantes

bon voila je peux dire que c'est resolu, merci beaucoup :-)

voici ce que ca donne avec ta methode de tableau (que je vais garder d'ailleurs)

set `ifconfig |grep wlan |awk -F " " '{ print $1 }'`
nbcarte=$#
iface=($*)
if [ $nbcarte = 1 ];then
        echo "$nbcarte carte wifi a ete trouvé:"
        echo "carte $nbcarte: $1"
else
        echo "$nbcarte cartes wifi ont ete trouvées:"
        #Compteur:
        cpt=0
        while [ $cpt -lt $nbcarte ]
        do
                echo interface $cpt= ${iface[$cpt]}
                cpt=$(($cpt+1))
        done
fi

retour a l'ecran

2 cartes wifi ont ete trouvées:
interface 0= wlan1
interface 1= wlan2

merci encore

Hors ligne

#9 Le 23/03/2014, à 00:26

Yannou90

Re : [Résolu] scripter les interfaces wifi existantes

wink

Hors ligne

#10 Le 23/03/2014, à 00:32

Watael

Re : [Résolu] scripter les interfaces wifi existantes

salut,

iface=( $(ifconfig | awk '/wlan/{ print $1 }') )

ou simplement

iface=( $(ifconfig | grep -o '^wlan[0-9]') )

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#11 Le 23/03/2014, à 15:11

pingouinux

Re : [Résolu] scripter les interfaces wifi existantes

Bonjour,
Et en gardant la structure de ton script en #1 :

#!/bin/bash
#
#
# liste des interfaces wifi
clear
set -- `/sbin/ifconfig | awk '/^wlan/{ print $1 }'`

echo "$# cartes wifi ont ete trouvées:"

#Compteur:
cpt=0
for carte in "$@"
do      
   echo interface$((++cpt)): $carte
done    

Hors ligne

#12 Le 29/03/2014, à 10:16

franckyfoys

Re : [Résolu] scripter les interfaces wifi existantes

merci pour ces deux derniere methodes, je vais orienter mes futurs scripts vers ce genre de syntaxe. bien plus concis ^^

Dernière modification par franckyfoys (Le 29/03/2014, à 10:17)

Hors ligne