Script shell pour extraire des balises xml
Fermé
isecs
Messages postés
12
Date d'inscription
mercredi 28 août 2013
Statut
Membre
Dernière intervention
22 septembre 2013
-
28 août 2013 à 11:50
mctroubleshooter - 29 août 2013 à 08:47
mctroubleshooter - 29 août 2013 à 08:47
A voir également:
- Script shell pour extraire des balises xml
- Script vidéo youtube - Guide
- Extraire une video youtube - Guide
- Xml viewer - Télécharger - Édition & Programmation
- Extraire son video - Guide
- Classic shell windows 11 - Télécharger - Personnalisation
4 réponses
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
28 août 2013 à 11:58
28 août 2013 à 11:58
Salut,
svvvvvvvvvvvp c'est trés urgent........:)
En cas d'urgence absolue, un seul réflexe : 3615 SOS !
Le reste n'est que broutille superfétatoire ;-\
Traduction : Ce site n'est pas tenu par des robots ou des professionnels mais par des bénévoles. Ces derniers répondent dans la limite de leurs compétence et du temps qu'ils peuvent consacrer à vos problèmes. Pour les urgences, s'adresser à des professionnels.
svvvvvvvvvvvp c'est trés urgent........:)
En cas d'urgence absolue, un seul réflexe : 3615 SOS !
Le reste n'est que broutille superfétatoire ;-\
Traduction : Ce site n'est pas tenu par des robots ou des professionnels mais par des bénévoles. Ces derniers répondent dans la limite de leurs compétence et du temps qu'ils peuvent consacrer à vos problèmes. Pour les urgences, s'adresser à des professionnels.
isecs
Messages postés
12
Date d'inscription
mercredi 28 août 2013
Statut
Membre
Dernière intervention
22 septembre 2013
28 août 2013 à 12:14
28 août 2013 à 12:14
Bon j m'excuse infinément je sais que ce n'est pas facile ce que je demande :) j'espère que je recevais des réponses qui résoud mon prob parceque vraiment chui plantée :(
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
Modifié par zipe31 le 28/08/2013 à 12:27
Modifié par zipe31 le 28/08/2013 à 12:27
Montres-nous ce que tu as commencé à faire...
Utilisateur anonyme
28 août 2013 à 12:45
28 août 2013 à 12:45
salut,
pourquoi se contraindre à parser du xml?
tshark peut sortir les données au format txt (peut-être plus pratique).
pourquoi se contraindre à parser du xml?
tshark peut sortir les données au format txt (peut-être plus pratique).
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
Modifié par ryko1820 le 28/08/2013 à 12:47
Modifié par ryko1820 le 28/08/2013 à 12:47
En plus, il est bizarre ce XML, non ?
isecs
Messages postés
12
Date d'inscription
mercredi 28 août 2013
Statut
Membre
Dernière intervention
22 septembre 2013
28 août 2013 à 13:00
28 août 2013 à 13:00
en fait avec tshark j'ai exporté la trace sous 2 formes:pdml et psml
trace psml:
?xml version="1.0"?>
<psml version="0" creator="wireshark/1.8.2">
<structure>
<section>No.</section>
<section>Time</section>
<section>Source</section>
<section>Destination</section>
<section>Protocol</section>
<section>Length</section>
<section>Info</section>
</structure>
<packet>
<section>9</section>
<section>27.127176000</section>
<section>192.168.245.1</section>
<section>192.168.245.142</section>
<section>SIP/SDP</section>
<section>949</section>
<section>Request: INVITE sip:6002@192.168.245.142, with session description</section>
</packet>
trace pdml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="pdml2html.xsl"?>
<!-- You can find pdml2html.xsl in /usr/share/wireshark or at http://anonsvn.wireshark.org/trunk/wireshark/pdml2html.xsl. -->
<pdml version="0" creator="wireshark/1.8.2" time="Fri Aug 23 21:41:11 2013" capture_file="/home/serveur4/Desktop/xml-packet-wireshark/cap-okk">
<packet>
<proto name="geninfo" pos="0" showname="General information" size="709">
<field name="num" pos="0" show="1" showname="Number" value="1" size="709"/>
<field name="len" pos="0" show="709" showname="Frame Length" value="2c5" size="709"/>
<field name="caplen" pos="0" show="709" showname="Captured Length" value="2c5" size="709"/>
<field name="timestamp" pos="0" show="Aug 23, 2013 21:37:00.335476000 CEST" showname="Captured Time" value="1377286620.335476000" size="709"/>
</proto>
................................................
</proto>
<proto name="sip" showname="Session Initiation Protocol" size="667" pos="42">
<field name="sip.Request-Line" showname="Request-Line: SUBSCRIBE sip:asterisk@192.168.245.142:5060 SIP/2.0" size="51" pos="42" show="SUBSCRIBE sip:asterisk@192.168.245.142:5060 SIP/2.0" value="530">
<field name="sip.Method" showname="Method: SUBSCRIBE" size="9" pos="42" show="SUBSCRIBE" value="535542534352494245"/>
<field name="sip.r-uri" showname="Request-URI: sip:asterisk@192.168.245.142:5060" size="33" pos="52" show="sip:asterisk@192.168.245.142:5060" value="7369703a617374657269736b403139322e3136382e3234352e3134323a35303630">
<field name="sip.r-uri.user" showname="Request-URI User Part: asterisk" size="8" pos="56" show="asterisk" value="617374657269736b"/>
<field name="sip.r-uri.host" showname="Request-URI Host Part: 192.168.245.142" size="15" pos="65" show="192.168.245.142" value="3139322e3136382e3234352e313432"/>
<field name="sip.r-uri.port" showname="Request-URI Host Port: 5060" size="4" pos="81" show="5060" value="35303630"/>
</field>
........................................
</proto>
avec tshark j'ai pu extraite le temps et le type de requète :
tshark -eth0 -T fiels -e frame.time et sip.Request-Line -z sip,stat > test2.txt
j'au le fichier test2.txt suivant :
Aug 27, 2013 23:06:46.205544000
Aug 27, 2013 23:06:47.334270000 INVITE
Aug 27, 2013 23:06:47.335045000 SIP/2.0 401 Unauthorized
Aug 27, 2013 23:06:47.336897000 ACK
Aug 27, 2013 23:06:47.350187000 INVITE
Aug 27, 2013 23:06:47.351728000 SIP/2.0 100 Trying
Aug 27, 2013 23:06:47.354311000 INVITE
Aug 27, 2013 23:06:47.500954000 SIP/2.0 180 Ringing
Aug 27, 2013 23:06:47.504776000 SIP/2.0 180 Ringing
Aug 27, 2013 23:06:48.415368000 CANCEL
Aug 27, 2013 23:06:48.416001000 SIP/2.0 487 Request Terminated
Aug 27, 2013 23:06:48.416193000 SIP/2.0 200 OK
Aug 27, 2013 23:06:48.416522000 CANCEL
Aug 27, 2013 23:06:48.424779000 ACK
Aug 27, 2013 23:06:48.590352000 SIP/2.0 200 OK
Aug 27, 2013 23:06:48.590370000 SIP/2.0 487 Request Terminated
Aug 27, 2013 23:06:48.595704000 ACK
===================================================================
SIP Statistics
Number of SIP messages: 16
Number of resent SIP messages: 0
* SIP Status Codes in reply packets
SIP 401 Unauthorized : 1 Packets
SIP 180 Ringing : 2 Packets
SIP 200 OK : 2 Packets
SIP 487 Request Terminated : 2 Packets
SIP 100 Trying : 1 Packets
* List of SIP Request methods
INVITE : 3 Packets
ACK : 3 Packets
CANCEL : 2 Packets
* Average setup time 593364750 ms
Min 2 ms
Max 1802658152 ms
trace psml:
?xml version="1.0"?>
<psml version="0" creator="wireshark/1.8.2">
<structure>
<section>No.</section>
<section>Time</section>
<section>Source</section>
<section>Destination</section>
<section>Protocol</section>
<section>Length</section>
<section>Info</section>
</structure>
<packet>
<section>9</section>
<section>27.127176000</section>
<section>192.168.245.1</section>
<section>192.168.245.142</section>
<section>SIP/SDP</section>
<section>949</section>
<section>Request: INVITE sip:6002@192.168.245.142, with session description</section>
</packet>
trace pdml:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="pdml2html.xsl"?>
<!-- You can find pdml2html.xsl in /usr/share/wireshark or at http://anonsvn.wireshark.org/trunk/wireshark/pdml2html.xsl. -->
<pdml version="0" creator="wireshark/1.8.2" time="Fri Aug 23 21:41:11 2013" capture_file="/home/serveur4/Desktop/xml-packet-wireshark/cap-okk">
<packet>
<proto name="geninfo" pos="0" showname="General information" size="709">
<field name="num" pos="0" show="1" showname="Number" value="1" size="709"/>
<field name="len" pos="0" show="709" showname="Frame Length" value="2c5" size="709"/>
<field name="caplen" pos="0" show="709" showname="Captured Length" value="2c5" size="709"/>
<field name="timestamp" pos="0" show="Aug 23, 2013 21:37:00.335476000 CEST" showname="Captured Time" value="1377286620.335476000" size="709"/>
</proto>
................................................
</proto>
<proto name="sip" showname="Session Initiation Protocol" size="667" pos="42">
<field name="sip.Request-Line" showname="Request-Line: SUBSCRIBE sip:asterisk@192.168.245.142:5060 SIP/2.0" size="51" pos="42" show="SUBSCRIBE sip:asterisk@192.168.245.142:5060 SIP/2.0" value="530">
<field name="sip.Method" showname="Method: SUBSCRIBE" size="9" pos="42" show="SUBSCRIBE" value="535542534352494245"/>
<field name="sip.r-uri" showname="Request-URI: sip:asterisk@192.168.245.142:5060" size="33" pos="52" show="sip:asterisk@192.168.245.142:5060" value="7369703a617374657269736b403139322e3136382e3234352e3134323a35303630">
<field name="sip.r-uri.user" showname="Request-URI User Part: asterisk" size="8" pos="56" show="asterisk" value="617374657269736b"/>
<field name="sip.r-uri.host" showname="Request-URI Host Part: 192.168.245.142" size="15" pos="65" show="192.168.245.142" value="3139322e3136382e3234352e313432"/>
<field name="sip.r-uri.port" showname="Request-URI Host Port: 5060" size="4" pos="81" show="5060" value="35303630"/>
</field>
........................................
</proto>
avec tshark j'ai pu extraite le temps et le type de requète :
tshark -eth0 -T fiels -e frame.time et sip.Request-Line -z sip,stat > test2.txt
j'au le fichier test2.txt suivant :
Aug 27, 2013 23:06:46.205544000
Aug 27, 2013 23:06:47.334270000 INVITE
Aug 27, 2013 23:06:47.335045000 SIP/2.0 401 Unauthorized
Aug 27, 2013 23:06:47.336897000 ACK
Aug 27, 2013 23:06:47.350187000 INVITE
Aug 27, 2013 23:06:47.351728000 SIP/2.0 100 Trying
Aug 27, 2013 23:06:47.354311000 INVITE
Aug 27, 2013 23:06:47.500954000 SIP/2.0 180 Ringing
Aug 27, 2013 23:06:47.504776000 SIP/2.0 180 Ringing
Aug 27, 2013 23:06:48.415368000 CANCEL
Aug 27, 2013 23:06:48.416001000 SIP/2.0 487 Request Terminated
Aug 27, 2013 23:06:48.416193000 SIP/2.0 200 OK
Aug 27, 2013 23:06:48.416522000 CANCEL
Aug 27, 2013 23:06:48.424779000 ACK
Aug 27, 2013 23:06:48.590352000 SIP/2.0 200 OK
Aug 27, 2013 23:06:48.590370000 SIP/2.0 487 Request Terminated
Aug 27, 2013 23:06:48.595704000 ACK
===================================================================
SIP Statistics
Number of SIP messages: 16
Number of resent SIP messages: 0
* SIP Status Codes in reply packets
SIP 401 Unauthorized : 1 Packets
SIP 180 Ringing : 2 Packets
SIP 200 OK : 2 Packets
SIP 487 Request Terminated : 2 Packets
SIP 100 Trying : 1 Packets
* List of SIP Request methods
INVITE : 3 Packets
ACK : 3 Packets
CANCEL : 2 Packets
* Average setup time 593364750 ms
Min 2 ms
Max 1802658152 ms
isecs
Messages postés
12
Date d'inscription
mercredi 28 août 2013
Statut
Membre
Dernière intervention
22 septembre 2013
28 août 2013 à 13:02
28 août 2013 à 13:02
Donc mo prob maintenant est de calculer à l'aide d'un script le temps d'interarrivé des requetes succésives ( invite,ack,cancel) :
isecs
Messages postés
12
Date d'inscription
mercredi 28 août 2013
Statut
Membre
Dernière intervention
22 septembre 2013
28 août 2013 à 13:17
28 août 2013 à 13:17
la sortie serais une valeur (réelle) ,l'obectif final est calculer la durée moyenne:
donc iil faut commencer à calculer la durée d'inter-arrivée des requètes sucessives ,deux par deux c àd la durée entre chaque requète en cours et celle qui la précède ( Temps_arrivé -req - Temps_arrivé_req-1 ) et ensuite on :
Durée moyenne = ? (Temps_arrivé -req - Temps_arrivé_req-1 ) / (Nombre total des requêtes).
donc iil faut commencer à calculer la durée d'inter-arrivée des requètes sucessives ,deux par deux c àd la durée entre chaque requète en cours et celle qui la précède ( Temps_arrivé -req - Temps_arrivé_req-1 ) et ensuite on :
Durée moyenne = ? (Temps_arrivé -req - Temps_arrivé_req-1 ) / (Nombre total des requêtes).
Bonjour,
J'ai fais un script qui répond à votre première demande, vous le trouverez ici :
http://mathieu.coavoux.free.fr/index.php?title=Commande#Exemple_sed_et_awk
J'ai fais un script qui répond à votre première demande, vous le trouverez ici :
http://mathieu.coavoux.free.fr/index.php?title=Commande#Exemple_sed_et_awk
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
28 août 2013 à 19:29
28 août 2013 à 19:29
Salut,
Merci pour lui, mais il eut été plus simple de copier/coller le code ici plutôt que de poster un lien (non cliquable qui plus est du fait que vous n'êtes pas inscrit), qui rend la compréhension difficile du fait qu'il ne soit pas direct sur le script ;-(
Merci pour lui, mais il eut été plus simple de copier/coller le code ici plutôt que de poster un lien (non cliquable qui plus est du fait que vous n'êtes pas inscrit), qui rend la compréhension difficile du fait qu'il ne soit pas direct sur le script ;-(
mctroubleshooter
Messages postés
1
Date d'inscription
mercredi 28 août 2013
Statut
Membre
Dernière intervention
28 août 2013
28 août 2013 à 19:41
28 août 2013 à 19:41
désolé, je viens de m'inscrire.
je me suis dis que le code serait plus lisible sur le wiki et les caractères ne risque pas d'être changés
je me suis dis que le code serait plus lisible sur le wiki et les caractères ne risque pas d'être changés
zipe31
Messages postés
36402
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
27 janvier 2021
6 417
28 août 2013 à 20:03
28 août 2013 à 20:03
#!/bin/bash MONFICHIER=test.xml TOTALLIGNE='cat $MONFICHIER|wc -l' LIGNEHEADER=11 LIGNEALIRE='expr $TOTALLIGNE - $LIGNEHEADER' #Soustrait les lignes d en-tete et le nombre de ligne pour garder les donnees tail -n $LIGNEALIRE $MONFICHIER |tr '\n' ';'|awk '{gsub(/<.?packet> ;/,"\n");print $0}'|awk 'FS=";" {print $2"\n"$7}'|sed -e 's/<section>//' -e 's/<\/section>//' -e '/^ *$/d'
ryko1820
Messages postés
1677
Date d'inscription
dimanche 28 avril 2013
Statut
Membre
Dernière intervention
15 août 2021
276
28 août 2013 à 21:42
28 août 2013 à 21:42
Sinon bienvenue mctroubleshooter, en plus c'est cool, j'ai cru comprendre que tu utilisais Gentoo ?