Icecast Streaming Media Server Forum Index Icecast Streaming Media Server
Icecast is a Xiph Foundation Project
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Obtenir le nombre d'auditeurs courants pour chaque flux

 
Post new topic   Reply to topic    Icecast Streaming Media Server Forum Index -> Forum Francophone
View previous topic :: View next topic  
Author Message
Anonymous
Guest





PostPosted: Wed Oct 24, 2007 6:23 pm    Post subject: Obtenir le nombre d'auditeurs courants pour chaque flux Reply with quote

Je vous propose un article que j'ai écrit et publié sur : http://www.groolot.net/ concernant le recueil du nombre d'auditeurs courants sur l'ensemble des flux du serveur Icecast2 sous GNU/Linux.


Script
Code:

! /bin/bash
#================================================
#
# Ce script a ete ecrit par :
#
       AUTEUR="Gregory DAVID 'aka' groolot"
       CONTACTS_WEB="http://www.groolot.net/"
#
# L'objet de ce script est de recuperer le nombre total d'auditeurs courant
# sur un serveur Icecast2
#
# Tout bug est a envoyer a l'auteur.
#
# Modifications / Bug List :
       VERSION="0.1.1"
#       20 octobre 2007 - Version 0.1.1
#               - Le script prend en compte la multiplicite des flux
#                 du serveur (aucune limite existante)
#
#       19 octobre 2007 - Version 0.1.0
#               - Version initiale.
#
#================================================

### VARIABLES

FILE="/var/log/icecast/error.log"

### FIN VARIABLES



### PROGRAMME

tail -n100 $FILE | awk '
       $4 == "source/source_main" {
               les_flux[$8] = $10;
       }
       END {
               for( flux in les_flux ){
                       print "le flux " flux " est actuellement ecoute par " les_flux[flux] " auditeurs";
               }
       }
'

### FIN PROGRAMME



Description

Nous avons besoin dans un premier temps de définir quel est le fichier sur lequel nous allons travailler.

Code:
FILE="/var/log/icecast/error.log"


Ensuite, nous n’avons pas besoin de tout le contenu du fichier $FILE, seul les dernières lignes nous intéressent. Par conséquent, on commence par réaliser un tail -n100 $FILE qui permet de ne sortir sur STDOUT que les 100 dernières lignes du fichier.

Nous réalisons ensuite un pipe | permettant alors de rediriger la sortie standard de l’opérande de gauche (ici la sortie de tail) vers l’entrée standard de l’opérande de droite (ici le programme awk).

Ainsi nous utilisons awk pour effectuer un filtrage sur les lignes retournées par tail.

Code:
$4 == "source/source_main"
permet, à la manière de grep, de ne prendre en compte dans le parcour des différentes lignes, que celles qui contiennent source/source_main en tant que 4ème champ de la ligne

Code:
les_flux[$8] = $10
est l’action effectuée pour chaque ligne correspond au critère défini au préalable : $4 == "source/source_main". Cette action stocke dans le tableau associatif de clef le champ 8 les_flux[$8] la valeur du champ 10 de la ligne courante. Comme cette action est effectuée pour chacune des lignes, seule la dernière valeur d’une clef donnée sera gardée.

Code:
print "le flux " flux " est actuellement ecoute par " les_flux[flux] " auditeurs"
affiche, lorsque l’ensemble des lignes a été parcouru (section END), le contenu de la variable flux correpondant à la clef et les_flux[flux] la valeur stockée pour la clef courante.
Back to top
Display posts from previous:   
Post new topic   Reply to topic    Icecast Streaming Media Server Forum Index -> Forum Francophone All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2002 phpBB Group
subRebel style by ktauber