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 09/01/2015, à 19:21

Sylvainremi

Nombre d'erreur 400

Salut a tous je cherche a répertorié le pourcentage d'erreur 400 dans mes fichiers logs apache

De ce fait j'ai crée un petit script:
#!/bin/bash

sed -n '$=' pictures.log >> total.txt  #le nombre de ligne totale du fichier log#
grep "400" pictures.log | sed -n '$=' >> err400.txt  #le nombre de ligne comprenant l’erreur 400#
cat  total.txt err400.txt > pourcentage.txt  #le nombre totale et le nombre de d'erreur 400#
rm -Rf total.txt err400.txt #suppression des deux anciens fichiers
sed -e '2d' pourcentage.txt *  sed -e '1d' pourcentage.txt #? récupération des données a la ligne 1 et 2 ?#
??
??
exit 0

Je suis bloqué apres avoir obtenu le totale de ligne et le nombre de ligned avec l'erreur 400;
je ne sais pas quelles commandes et comment utilisé ces chiffres pour créer un pourcentage

un peu d'aide serais le bienvenu


Merci d'avance et bon weekend lol

Hors ligne

#2 Le 09/01/2015, à 21:40

tiramiseb

Re : Nombre d'erreur 400

Salut,

Ton grep n'est pas top top, s'il y a le nombre "400" dans le nom d'un fichier et qu'il y a un code 200, bah ce sera un faux positif.
Autre chose : ta façon de compter les lignes est un peu bizarre...

Voici un script qui me semble répondre à ton besoin :

#!/bin/sh
LOGFILE="pictures.log"

# La commande "wc" ("word count") avec l'option "-l" ("lines") compte les lignes ; "cut" permet de ne conserver que le nombre
total=$(wc -l "$LOGFILE" | cut -d" " -f1)
# Un grep un peu compliqué pour être sûr qu'on vérifie le 6me champ pour le code 400, l'option "-c" retourne le compte de lignes
err400=$(grep -c '[^ ]* [^ ]* [^ ]* \[[^]]*\] "[^"]*" 400' "$LOGFILE")

# Et on utilise bc pour calculer le pourcentage, avec une précision de 2 décimales
echo "scale=2;100*$err400/$total" | bc -l

... et en version super-short histoire de montrer comment qu'c'est simple tongue

#!/bin/sh
total=$(wc -l pictures.log | cut -d" " -f1)
err400=$(grep -c '[^ ]* [^ ]* [^ ]* \[[^]]*\] "[^"]*" 400' pictures.log)
echo "scale=2;100*$err400/$total" | bc -l

PS : mets les contenus de fichiers entre balises "code", obtenues en cliquant sur l'icônebt_pre.png.
1369359175.gif

Dernière modification par tiramiseb (Le 09/01/2015, à 21:41)

Hors ligne

#3 Le 10/01/2015, à 01:14

Sylvainremi

Re : Nombre d'erreur 400

Merci beaucoup pour le script et surtout les explications des commandes ainsi que la manière de définir une variable je me sentais perdu

Merci encore d'avoir pris le temps

Hors ligne