Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
806 connectés 

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Conditions en bash

n°783904
Plam
Bear Metal
Posté le 18-02-2006 à 16:25:18  profilanswer
 

Bonjour  :hello:  
J'ai codé un petit script pour rentrer les informations sur les stations d'un réseau (que je dirige vers un fichier texte). C'est très trivial pour l'instant, mais j'aimerai rajouter quelques fonctionnalités :)
 
En gros, un exemple du code :
 

Citation :

echo "Entrez l'adresse mac de la station"
read macstation


 
Cependant, j'aimerai vérifier que l'adresse mac rentrée est bien du type "xx:xx:xx:xx:xx:xx" :)
C'est a dire sans espaces à la fin, et bien deux caracteres apparié séparé par deux point. Sans oublier bien sur qu'il m'en faut exactement 12 (17 au total en comptant les ':') Peu m'importe de vérifier si ces caractère sont bien hexa.
 
Merci.
 
P.S : je sais pas comment compter le nombre de caracteres entrées, et en plus les while que j'ai utilisés ne marchent pas :(


Message édité par Plam le 18-02-2006 à 16:26:55
mood
Publicité
Posté le 18-02-2006 à 16:25:18  profilanswer
 

n°783911
matafan
Posté le 18-02-2006 à 17:09:49  profilanswer
 

#!/bin/sh
 
echo -n "Entres l'adresse mac de la station: "
read mac
 
if echo $mac | grep -qvE '^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$'
then
        echo "Adresse invalide"
fi

n°783919
Plam
Bear Metal
Posté le 18-02-2006 à 17:43:18  profilanswer
 

:ouch:
Pourrait tu m'expliquer en gros ce qui se passe apres le grep :??:
Je cherche a faire un while pour qu'il me demande l'adresse tant qu'elle est pas bonne :)
Donc il faut que je traduise le "if" en while :)
Je m'y essaye de ce pas :)

n°783920
Plam
Bear Metal
Posté le 18-02-2006 à 17:48:08  profilanswer
 

Ca marche !!!!
Merci :D
:hello:

n°783921
Plam
Bear Metal
Posté le 18-02-2006 à 17:49:54  profilanswer
 

Erf faut que je rajoute en cas de vide :(
 
edit : ah non bizarre  :heink:  
Ca a marché une fois avec un vide mais plus maintenant  :heink:


Message édité par Plam le 18-02-2006 à 17:52:46
n°783922
treolar
Posté le 18-02-2006 à 18:37:18  profilanswer
 

:hello:  Tu postera ton code, une fois terminé ?

n°784039
matafan
Posté le 19-02-2006 à 05:00:12  profilanswer
 

La regexp du grep match les chaines qui contiennent 5 groupes ({5}) de deux ({2}) caractères alphanumériques ([0-9a-fA-F]) suivis d'un ":", suivis d'un groupe de deux caractères alphanumériques. Le ^ veut dire début de chaîne, et le $ fin de chaîne.

n°784728
Plam
Bear Metal
Posté le 20-02-2006 à 18:48:01  profilanswer
 

treolar a écrit :

:hello:  Tu postera ton code, une fois terminé ?


 
En gros, ça me sert à stocker 'temporairement' les informations sur un point d'accès (elles seront réutilisés par d'autres scripts).
Le temporaire "propre" écrasé à chaque fois est "AP.txt". Celui qui recense tous les AP stocké s'appelle APKC.txt  
 

Citation :

echo "Nom AP ?"
echo "Attention ! Si espace, mettre ' ' à la place !"
read nomap
echo "MAC AP ?"
read macap
while echo $macap | grep -qvE '^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$'
do echo "Adresse AP invalide. Recommencez !"
read macap
done
echo "MAC Station connecté à l'AP ?"
read macst
while echo $macst | grep -qvE '^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$'
do echo "Adresse Station invalide. Recommencez !"
read macst
done
echo "$nomap // $macap // $macst
 
" >>APKC.txt
echo "$nomap/$macap/$macst" > AP.txt

n°784731
Plam
Bear Metal
Posté le 20-02-2006 à 18:50:24  profilanswer
 

Ensuite, j'utilise ce fichier pour me générer les lignes voulue. Par exemple, des commandes sur aireplay, c'est bien trop long.
Donc ce qui est écris dans ce fichier est repris par ça part exemple :
 

Citation :


echo "________________________________________________________________"
nomap1=$(cat AP.txt | cut -d "/" -f1)
macap1=$(cat AP.txt | cut -d "/" -f2)
macst1=$(cat AP.txt | cut -d "/" -f3)
echo "La commande à copier pour l'association est :"
echo aireplay -1 0 -e $nomap1 -a $macap1 -b $macap1 -h $macst1 ath0
echo " "
echo "La commande à copier pour l'injection est :"
echo aireplay -3 -b $macap1 -h $macst1 -x 600 -r out-0$ncap.cap ath0


 
D'où l'interet de pas recopier n'importe quoi !
Le cat permet de prendre dans le fichier, ce qui m'évite de rettaper le SSID, l'adresse MAC du point d'acces et de sa station associée !
 
Je précise que j'utilise ça dans un cadre légal :)

n°784735
Plam
Bear Metal
Posté le 20-02-2006 à 18:55:42  profilanswer
 

D'ailleur si j'affiche la commande avec echo, sans l'executer directement, c'est que ça marche pas d'y aller directement (par exemple, mettre juste le code de l'injection).  
En fait je crois qu'il considere les autres echo plus haut comme le début du code et donc aireplay ne pige pas les parametres. Il me faudrait une commande pour afficher le résultat "proprement" (sans rien avant).
Tiens en tapant, je me demande ce que donnerai un clear :??:
 
edit : ben non marche pas non plus  :sweat:


Message édité par Plam le 20-02-2006 à 19:01:34
mood
Publicité
Posté le 20-02-2006 à 18:55:42  profilanswer
 

n°784875
matafan
Posté le 21-02-2006 à 04:15:07  profilanswer
 

Je n'ai pas compris ce qui ne marche pas. Ca fait quoi exactement si tu enlève simplement les "echo" qui sont devant les "aireplay" ?

n°784877
Plam
Bear Metal
Posté le 21-02-2006 à 07:07:34  profilanswer
 

matafan a écrit :

Je n'ai pas compris ce qui ne marche pas. Ca fait quoi exactement si tu enlève simplement les "echo" qui sont devant les "aireplay" ?


 
 
et bien tous d'abord je ne vois pas la ligne de commande car elle est executé de suite (ça encore c'est pas un probleme)
Ensuite, le logiciel aireplay lance une suite de parametre a mettre (comme quand c'est mal tapé, genre il manque un parametre etc.) => comme une aide en gros.
Alors que le code que je copie colle marche parfaitement [:spamafote]

n°784998
treolar
Posté le 21-02-2006 à 13:03:15  profilanswer
 

Plam a écrit :

En gros, ça me sert à stocker 'temporairement' les informations sur un point d'accès (elles seront réutilisés par d'autres scripts).
Le temporaire "propre" écrasé à chaque fois est "AP.txt". Celui qui recense tous les AP stocké s'appelle APKC.txt  
...


 
Merci :)

Message cité 1 fois
Message édité par treolar le 21-02-2006 à 13:03:38
n°785034
Plam
Bear Metal
Posté le 21-02-2006 à 14:03:28  profilanswer
 


 
mais de rien :D


Aller à :
Ajouter une réponse
 

Sujets relatifs
récupérer des "?" en ligne de commande bash/ksh[resolu]script bash, problème de jointure
Interface graphique pour un script bashColorier Bash ?
[Bash] rediriger stdout et stderr vers un fichierpetit prb de condition sous bash
[bash] supprimer les espaces à la fin d'une chaine de caractères ?[BASH] Jours pair ou impair ?
[BASH] pb de retour de ligneBash: tester si un partage a bien été monté
Plus de sujets relatifs à : Conditions en bash


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR