Bonjour,
Mon objectif serais de récupérer des valeurs de pings qui sont stockés dans un fichier texte à côté du script shell. Pour ensuite les stocker dans des variables Ping1, Ping2…
Dans le fichiers qui stocke les valeurs de pings cela s'affiche ainsi :
2
3
2
3
3
Mais je 'arrive pas à le faire pouvez m'aider ?
# qu'es-ton supposé comprendre ?
Posté par -=[ silmaril ]=- (site web personnel) . Évalué à 2.
Sooooo, on est sensé comprendre quoi du dump ? qu'est que tu veut exactement ?
Un truc du genre:
ping1=2
ping2=3
ping3=2
ping4=4
..
? (si oui ça va être inutilisable, charge plutot ton fichier dans un tableau par exemple)
# La saison des TPs est repartie…
Posté par Anthony Jaguenaud . Évalué à 10.
Nouveau compte, aucune réflexion… c’est reparti pour un tour.
Quelques conseil quand même :
# Compléments
Posté par ruginux . Évalué à 1.
Bonjour,
Merci de vos réponses.
Désolé de ne pas avoir assez détaillé et de débuter en bash.
Du coup c'est un mini projet dans lequel on va ping et télécharger un site dans mon cas "Ac-Nantes.fr"il faut faire ça toutes les heures puis enregistrer la moyenne de chaque jour afin après au bout d'une semaine il faut envoyer un mail dans lequel on trouve un tableau avec la moyenne de tous les jours.
Pour le moment j'ai donc réussi à tout faire individuelement sauf le stockage des pings.
Pouvez vous me dire pour vous me conseillerez plus de stocker mes données dans un tableau ?
Merci de votre aide.
[^] # Re: Compléments
Posté par totof2000 . Évalué à 2.
Désolé mais je ne comprends toujours pas le but de ce que tu veux faire …
Ca veut dire quoi "on va ping et télécharger un site" ?
Tu fais un ping par heure c'est ça ? Ou un téléchargement ?
La moyenne de quoi ?
La moyenne calculée précédemment ? Mais de quoi ?
[^] # Re: Compléments
Posté par totof2000 . Évalué à 2.
Je crois que je commence à comprendre …
Tu as un fichier qui contient un certain nombre de valeurs …
Et tu veux calculer la moyenne ?
Pas besoin. Il te suffit de définir une variable, ajouter à cette variable chaque valeur, puis diviser par le nombre de lignes, tu auras ta moyenne.
voir while read ou for en shell:
un truc du genre :
Pas testé, suis pas sûr que ça marche.
Plus d'infois sur https://www.commentcamarche.net/faq/5027-comment-lire-un-fichier-ligne-par-ligne
[^] # Re: Compléments
Posté par ruginux . Évalué à 1.
Rebonjour,
Merci de votre réponse, votre code marche parfaitement.
Vous avez compris l'idée, juste dernière petite question est ce que vous savez comment est ce que je pourrais récupérer les valeurs extrêmes (min et max) de cette série de pings ?
[^] # Re: Compléments
Posté par NeoX . Évalué à 4.
en lisant ton cours de shell pour lire une ligne, prendre certains mots…
[^] # Re: Compléments
Posté par totof2000 . Évalué à 2.
Avant la boucle, tu initialise une variable MIN et une variable MAX à 0
Dans la boucle, tu testes :
- si la valeur courante est supérieure à max, tu affectes la valeur courante a la variable MAX
- si la valeur courante est inférieure a MIN, tu affectes la valeur courante a min.
quelques infos :
https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions
https://openclassrooms.com/fr/courses/43538-reprenez-le-controle-a-laide-de-linux/43394-les-conditions
http://www.linuxfr-france.org.invalid/article/dalox/unix04.htm#autre
Attention, tu fais des tests numériques donc le test se fera avec "lt" ou "gt", pas avec "<" ou ">"
[^] # Re: Compléments
Posté par Anthony Jaguenaud . Évalué à 3.
Si tu initialises
MIN
à 0, il probable qu’elle soit encore à 0 à la fin ;-)Généralement on initialise min au max et max au min.
[^] # Re: Compléments
Posté par totof2000 . Évalué à 2. Dernière modification le 24 octobre 2019 à 09:59.
Effactivement, bien vu, j'ai répondu un peu vite (manque de pratique sur ce genre de choses depuis un bout de temps …).
Quand je traite ce genre de cas, j'initialise min et max avec une des valeurs de la liste à traiter. Bien souvent j'extrait la première et j'initialise min et max à cette valeur.
Il suffit donc de récupérer la première valeur du fichier (man head) et de l'affecter à la variable ( chercher la façon d'affecter la sortie standard d'une commande à une variable).
Autre méthode: vu que dans notre cas on a un compteur sur le nombre de valeur traités on pourrait insérer une condition dans la boucle : si on traite la première ligne, on affecte la valeur courante à MIN et a MAX , sinon on fait comme j'ai dit plus haut (comparaison de la valeur de MIN ou de MAX et affectation de la valeur courante de MIN et MAX en fonction de cette valeur).
C'est mieux comme ça professeur ? ;) J'espère que ma boulette ne m'enlèvera pas trop de points à mon TP ..
[^] # Re: Compléments
Posté par totof2000 . Évalué à 2. Dernière modification le 22 octobre 2019 à 18:51.
En fait il y a une petite coquille.
Le code marche, mais n'est pas réellement parlant. Pour être plus clair il faudrait remplacer
bash
SUM=$((SUM/NB_LINE))
par
MOYENNE=$((SUM/NB_LINE))
et utiliser la variable MOYENNE dans la suite du code.
[^] # Re: Compléments
Posté par Anthony Jaguenaud . Évalué à 4.
Tu n’as pas à t’excuser de débuter. Par contre, il faut le dire. Ma réponse était un peu rude, mais personnellement, je ferai comme avec mes enfants je les amènerai à réfléchir et à trouver la réponse par eux même.
Étape 1 : exposer correctement ton problème.
Étape 2 : essayer de faire un programme.
Étape 3 : Présenter l’ensemble.
Étape 4 : On t’aide à trouver une solution.
Totof2000 a réussi à comprendre ton besoin, mais franchement pour moi, ce n’était pas clair.
Pour ton max et min, tu peux à chaque ligne lue, vérifier si c’est le nouveau min ou max et mettre à jour le min et/ou le max.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.