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 31/07/2014, à 20:42

Brunod

mise en forme sortie script

Bonjour,
j'utilise la commande suivante :

iwlist eth1 scanning |egrep -i "ss|key|wep|wpa"|sed -e "s/^ *//g"

qui me sort un résultat de ce type :

Cell 01 - Address: 00:25:25:FB:11:22
ESSID:"Billi-Wifi"
Encryption key:on
IE: IEEE 802.11i/WPA2 Version 1
Cell 02 - Address: 00:25:25:FB:11:23
ESSID:"Billi-Nonfi"
Encryption key:on
IE: IEEE 802.11i/WPA2 Version 1

Mais je voudrais obtenir ce type de mise en forme :

00:25:25:FB:11:22|ESSID:"Billi-Wifi"|Encryption key:on|IE: IEEE 802.11i/WPA2 Version 1
00:25:25:FB:11:23|ESSID:"Billi-Nonfi"|Encryption key:on|IE: IEEE 802.11i/WPA2 Version 1

Les champs par section mis en lignes, supprimer l'en-tête avant la mac, insérer des séparateurs de champs autre que l'espace genre "|", et si possible rapide et léger. Avec le café, ce serait parfait wink
Le but est d'injecter le tout dans un fichier puis y faire un sort et uniq sur les mac.
Comme je sèche sur la mise en colonne, que je crains de faire usine à gaz alors que je sais qu'il y a des spécialistes du script, je préfère vous demander votre avis. smile
Merci !
BD


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#2 Le 31/07/2014, à 22:04

pingouinux

Re : mise en forme sortie script

Bonsoir,
Tu peux essayer ceci :

iwlist eth1 scanning | egrep -i "ss|key|wep|wpa" | sed -re "s/^ *//g;s/^Cell [0-9]+ - Address: /\n/" | awk 'BEGIN{RS="";OFS="|"}{$1=$1;print}'

Hors ligne

#3 Le 31/07/2014, à 22:46

Brunod

Re : mise en forme sortie script

Merci !
Je m'attendais bien à te retrouver la-dessus wink
Je teste demain et je reposte. Merci!
BD


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#4 Le 31/07/2014, à 23:53

Brunod

Re : mise en forme sortie script

Je n'ai pas résisté, je viens de tester smile
C'est presque parfait : dans le remplacement  par les pipes |, ce sont les retour à la ligne qu'il faudrait remplacer (sauf le dernier de chaque bloc) plutôt que les espaces et deux colonnes doivent permuter car j'obtiens :

00:25:26:FB:11:21|Encryption|key:on|ESSID:"Billi-Wifi"|IE:|IEEE|802.11i/WPA2|Version|1
00:25:26:FB:11:22|Encryption|key:on|ESSID:"WiFi-2.4-c7ba"|IE:|IEEE|802.11i/WPA2|Version|1
00:25:26:FB:11:23|Encryption|key:off|ESSID:"FON_BELGACOM"

au lieu de :

00:25:26:FB:11:21|ESSID:"Billi-Wifi"|Encryption key:on |E: IEEE 802.11i/WPA2 Version 1
00:25:26:FB:11:22|ESSID:"Billi-Nonfi"|Encryption key:on |E: IEEE 802.11i/WPA2 Version 1
00:25:26:FB:11:23|ESSID:"FON_BELGACOM"|Encryption key:off |

Encore merci !

Dernière modification par Brunod (Le 31/07/2014, à 23:56)


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#5 Le 01/08/2014, à 05:55

pingouinux

Re : mise en forme sortie script

Brunod a écrit :

dans le remplacement  par les pipes |, ce sont les retour à la ligne qu'il faudrait remplacer (sauf le dernier de chaque bloc)

Ah oui, désolé… Ceci devrait être mieux :

iwlist eth1 scanning | egrep -i "ss|key|wep|wpa" | sed -re "s/^ *//g;s/^Cell [0-9]+ - Address: /\n/" | awk 'BEGIN{RS="";FS="\n";OFS="|"}{$1=$1;print}'

deux colonnes doivent permuter

Les colonnes apparaissent normalement dans l'ordre des lignes de la sortie de iwlist. Sinon, pour inverser 2 colonnes (à condition qu'il y ait toujours 4 champs) :

iwlist eth1 scanning | egrep -i "ss|key|wep|wpa" | sed -re "s/^ *//g;s/^Cell [0-9]+ - Address: /\n/" | awk 'BEGIN{RS="";FS="\n"}{printf("%s|%s|%s|%s\n",$1,$3,$2,$4)}'

Hors ligne

#6 Le 01/08/2014, à 08:58

Brunod

Re : mise en forme sortie script

Pinguinux cool
Non seulement c'est parfait, mais en plus tu travailles de nuit ! smile
Merci vraiment tout plein !
Brunod
Edit : J'en profite pour te demander ton avis : Quand bash est trop lent pour effectuer une procedure genre récursive ou calcul itératif, qu'est-ce que tu utilises alors ?
J'ai vu mentionné python et perl, mais je suis ouvert à d'autres suggestions car je ne sais pas vers quoi me tourner sachant que pour ces deux langages je partirai de zero. J'aurai aimé qu'il soit compilable pour raison de performance et d'indépendance de paquets (pas de "fausse" compilation comme perl), mais je ne vois pas de solution évidente. Si tu as une idée... je suis tout ouïe.

Dernière modification par Brunod (Le 01/08/2014, à 09:11)


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne

#7 Le 01/08/2014, à 09:26

pingouinux

Re : mise en forme sortie script

C'est surtout que je suis matinal. smile
Je n'ai jamais accroché à perl, mais je pratique python depuis au moins 7 ou 8 ans, et ça me plaît bien (il peut utiliser des librairies écrites en C). Auparavant, j'ai aussi fait beaucoup de C. Je trouve beaucoup plus facile de partir de zéro en python qu'en C.
Il faudrait éventuellement voir un exemple de ce que tu veux faire.

Hors ligne

#8 Le 01/08/2014, à 09:47

Brunod

Re : mise en forme sortie script

Rien de bien précis, mais je suis parfois confronté au besoin de créer un petit bout de code pour manipuler un fichier, lancer un calcul itératif... Le genre de chose que l'on rencontre par exemple dans les hacking challenges, et alors bash ne suffit pas notamment pour une question de vitesse.
Pour cerner ma situation, j'ai fait du C il y a 20 ans, j'aimais bien mais je n'ai plus pratiqué. J'ai vu d'autres langages de l'époque, mais je ne connais ni python ni perl.
La vitesse de traitement est donc vraiment un élément décisif du choix à faire, ainsi que la possibilité d'aboutir à un "exécutable" indépendant de tout paquet pour son utilisation.
Merci !


Windows est un système d'exploitation de l'homme par l'ordinateur. Linux, c'est le contraire...
39 pc linux convertis

Hors ligne