IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes POSIX Discussion :

Faire un tableau bilan vers OpenOffice [AIX][KSH]


Sujet :

Shell et commandes POSIX

  1. #1
    Nouveau membre du Club Avatar de I folima Elda
    Homme Profil pro
    Programmeur & Intégrateur
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Programmeur & Intégrateur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Points : 34
    Points
    34
    Par défaut Faire un tableau bilan vers OpenOffice
    Bonjour à tous,

    Je sais que le titre est peut être peu explicite. Alors je vais vous exposer ma tâche à faire.

    On m'a demandé de faire un bilan de la taille de différent répertoires. J'effectue ceci avec un bout de code simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /mon/chemin/
    for i in $(ls -1); do du -sg $i; done
    Pour le moment pas de souci.

    Seulement, on me demande maintenant de pouvoir faire un bilan mensuel de façon automatique et lisible dans un fichier OpenOffice (oui, les chefs n'aiment pas faire des commandes). Or, je sèche un peu sur la méthode à suivre pour faire ceci. Je pourrais le faire à la main dans OpenOffice, mais ça serai fastidieux (et surtout faut se le rappeller).
    L'idéal du chef serai un tableau dans ce genre:
    rep1 rep2 rep3 taille dossierA différence taille dossierA avec mois précédent
    mois1 /dossierA/parent1/ taille taille taille tailleA /\tailles mois prec.
    /dossierA/parent2/ taille taille taille
    mois2 /dossierA/parent1/ taille taille taille tailleA /\tailles mois prec.
    /dossierA/parent2/ taille taille taille
    ...
    NB: rep'n' sont des répertoires ayant un nom commun pour chacun des dossiers parent1 et parent2

    J'ai pensé à plusieurs choses:
    1. Passer par un tableau sous ksh et exporter dans un fichier type .csv via un >fic.csv. Inconvénient, on ne peut faire que des tableaux monodimensionnel. Pas sûr que l'on puisse jouer à faire des imbrications de monodim. pour donner l'illusion d'un multidim. Et surtout réusir à faire un formatage et ajout correct mensuellement
    2. Le stockage dans un tableau OO. J'avoue ne pas savoir comment exporter et mettre à jour dans un fichier Calc. Je ne pourrais pas stocker de fichier sur le serveur sûrement. Mais je pense qu'il faudra passer par un fichier type .csv tout de même.
    NB: L'automatisation mensuel passera par un ordonnanceur ($Universe)

    Je ne sais pas si j'ai été bien claire au final.
    En gros, via ma 1ere commande et une automatisation mensuel avec mon ordonnanceur, je souhaite créer un tableau OpenOffice comme présenté plus haut.

    Merci de votre contribution.

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Développeur informatique en retraite

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 101
    Points : 5 849
    Points
    5 849
    Par défaut
    Bonjour.

    Petit rappel: le but de ce forum est d'aider les demandeurs à surmonter leurs difficultés, mais pas à faire le travail à leur place... (mais ça peut se discuter, si tu as les moyens d'engager un prestataire )

    L'idéal serait que tu nous montres ce que tu as déjà fait et ce sur quoi tu butes.

    Mais on peut aussi te donner quelques conseils et pistes gratuitement (quelle générosité!).

    Citation Envoyé par I folima Elda Voir le message
    On m'a demandé de faire un bilan de la taille de différent répertoires. J'effectue ceci avec un bout de code simple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /mon/chemin/
    for i in $(ls -1); do du -sg $i; done
    Pour le moment pas de souci.
    Par principe, on n'utilise pas "ls" dans un script (demande à N_BaH ce qu'il en pense).
    De plus, on entoure toujours les variables de guillemets (sauf si tu as une très bonne raison de ne pas le faire).
    De préférence, on donne des noms explicites aux variables (pour simplifier la relecture du code).

    Imaginons donc que nous partions de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cd /mon/chemin/
    for dir in *; do du -sg "${dir}"; done
    Il est totalement hors de question de créer un document OpenOffice depuis un script shell!
    (Tout est faisable sur une machine de Turing, mais c'est un travail hénorme!)

    Par contre, générer un fichier "csv", comme tu le suggères, est une excellente idée.

    OpenOffice sait très bien importer (avec les options qui vont bien) un fichier "csv".

    Idée: tu peux tout à fait envisager d'importer le fichier "csv" dans un onglet dédié à cette tâche et peaufiner la présentation (éventuellement graphique) des-dites données dans un autre onglet, grâce à des formules de bon aloi (ou des macros, si besoin). Par exemple, la variation par rapport au mois précédent sera faite plutôt par une formule que par le script lui-même, qui n'aura alors pas besoin de se souvenir des données du mois précédent et pourra se concentrer juste sur la production des données du mois courant.

    L'idéal serait vraiment que le script s'occupe de la récupération la plus brute possible des données du mois courant, à ajouter à un fichier qui collecte tous les mois, et que Calc s'occupe de la mise en forme de l'ensemble des données.

    Toutefois, je ne sais pas si on pourra mettre à jour le résultat automatiquement avec l'ordonnanceur ou s'il ne faudra pas, à la main, ré-importer le fichier chaque mois dans Calc...
    (c'est une question à poser sur le forum OpenOffice plutôt que Shell)

    Remarque: il y a une chose qui m'intrigue et m'inquiète un peu. Dans la présentation en tableau, tu mets 3 répertoires "rep1" "rep2" "rep3" en colonnes.

    Si le nombre et le nom de ces répertoires est fixe, ça simplifie considérablement le travail.
    S'il est susceptible de varier d'un mois à l'autre, c'est une autre paire de manches...

    De la même manière, le nombre et le nom des lignes "/dossierA/parent1/" et "/dossierA/parent2/" est-il fixe?

    Si tout est fixe, àmha et à vue de nez, on peut le faire facilement avec 2 boucles "for" imbriquées, un appel à "du" et "date".

    Remarque: j'utiliserais plutôt "du -sk" que "du -sg" (sauf si les répertoires font beaucoup de Go), de manière à avoir des données plus précises. Ensuite, l'affichage dans les cellules OpenOffice peut être configuré pour afficher les données comme tu le souhaites, avec la précision voulue.

    Voilà quelques pistes.

    Bonne continuation!

  3. #3
    Nouveau membre du Club Avatar de I folima Elda
    Homme Profil pro
    Programmeur & Intégrateur
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Programmeur & Intégrateur

    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Points : 34
    Points
    34
    Par défaut
    Salut Jack,
    Merci de ta réponse.

    Citation Envoyé par jack-ft Voir le message
    Petit rappel: le but de ce forum est d'aider les demandeurs à surmonter leurs difficultés, mais pas à faire le travail à leur place... (mais ça peut se discuter, si tu as les moyens d'engager un prestataire )

    L'idéal serait que tu nous montres ce que tu as déjà fait et ce sur quoi tu butes.

    Mais on peut aussi te donner quelques conseils et pistes gratuitement (quelle générosité!).
    Je n'attendais absolument à ce que l'on me fasse mon taf. J'aurai horreur de ça ^^. Loin de moi cette idée.
    De plus c'est un travail de fond. Je ne suis pas presser dans sa réalisation . Mais j'aurai dit la même chose que toi, on est sur la même longueur d'onde

    Citation Envoyé par jack-ft Voir le message
    Par principe, on n'utilise pas "ls" dans un script (demande à N_BaH ce qu'il en pense).
    De plus, on entoure toujours les variables de guillemets (sauf si tu as une très bonne raison de ne pas le faire).
    De préférence, on donne des noms explicites aux variables (pour simplifier la relecture du code).
    Je ne connaissais pas ce principe du "pas de ls dans un script".
    Les guillement, simple oublie de ma part ^^ (corrigé entre temps en plus).
    Bon j'ai fait un peu évoluer cette récupération entre temps. Car j'avais besoin de la liste de tous les sous-dossiers de façon unique etc... Et j'ai remarqué aussi que suivant les commande, ça ne te les donnait pas dans le même ordre (j'ai lu qu'il y avait les commande qui restituais en ordre alphabétique et d'autre qui restituais en ordre d'apparition dur le disque... mais passons).
    J'en arrive à une commande comme celle-ci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ENV="parent1 parent2"
    cd /mon/chemin
    LISTE=$(diff -s $ENV | awk '{print substr($0,length($0)-2,3)}')     #recupère que le trigramme des dossiers
    for dir in $LISTE; do du -sg "$dir"; done
    Citation Envoyé par jack-ft Voir le message
    Idée: tu peux tout à fait envisager d'importer le fichier "csv" dans un onglet dédié à cette tâche et peaufiner la présentation (éventuellement graphique) des-dites données dans un autre onglet, grâce à des formules de bon aloi (ou des macros, si besoin). Par exemple, la variation par rapport au mois précédent sera faite plutôt par une formule que par le script lui-même, qui n'aura alors pas besoin de se souvenir des données du mois précédent et pourra se concentrer juste sur la production des données du mois courant.

    L'idéal serait vraiment que le script s'occupe de la récupération la plus brute possible des données du mois courant, à ajouter à un fichier qui collecte tous les mois, et que Calc s'occupe de la mise en forme de l'ensemble des données.

    Toutefois, je ne sais pas si on pourra mettre à jour le résultat automatiquement avec l'ordonnanceur ou s'il ne faudra pas, à la main, ré-importer le fichier chaque mois dans Calc...
    (c'est une question à poser sur le forum OpenOffice plutôt que Shell)
    Pour ce qui est de la suite du code, je suis effectivement partis sur la création d'un fichier .csv stocké sur le serveur (j'ai une "autorisation exceptionnelle pour simplifier le travail". Merci chef). Je m'amuse surtout à mettre mes données en forme pour une récupération rapide par OO (mettre un bon séparateur etc...). Après, comme tu le suggérais, j'ai commencé avec un onglet données brut et un onglet mise en forme. Ca sera surement plus simple à gérer.
    Pour la présentation du tableau, c'est libre. Ca peut être en ligne, en colonne, en diagonal, en donut... C'était mon dessin de base pour travailler. Pour bien visualiser ^^

    Citation Envoyé par jack-ft Voir le message
    Remarque: j'utiliserais plutôt "du -sk" que "du -sg" (sauf si les répertoires font beaucoup de Go), de manière à avoir des données plus précises. Ensuite, l'affichage dans les cellules OpenOffice peut être configuré pour afficher les données comme tu le souhaites, avec la précision voulue.
    Le top ça serai un "du -h", mais je n'ai pas cette option de disponible (oui il ai dans le man mais il ne la reconnait pas. Ô joie). Donc je fait un "du -sg" car c'est plus lisible et en plus le plus petit repertoire fait déjà 0.7Go (et c'est le plus petit ^^). Après pas besoin que ça soit précis. Le but c'est d'avoir une tendance générale de gavage de dossier :p.

    Merci en tout cas de ton aide. D'un coté ça me conforte dans le chemin que j'avais pris.
    Je vais clore le sujet car au final ca va se faire petit à petit. En bidouillant un peu

  4. #4
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 549
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 549
    Points : 19 377
    Points
    19 377
    Par défaut
    salut,

    la boucle for semble ne servir à rien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ du -s ~/dir1 ~/dir2
    234  /home/nbah/dir1
    1245 /home/nbah/dir2
    .
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Conception][constructeur] pour faire un tableau
    Par vasilov dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 20/07/2005, 10h58
  2. [CR] comment faire un tableau croisé
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/08/2004, 18h32
  3. Porter une macro Excel vers OpenOffice
    Par totofweb dans le forum Applications et environnements graphiques
    Réponses: 3
    Dernier message: 13/07/2004, 13h20
  4. Comment faire un Drag&Drop vers Windows ?
    Par Lung dans le forum Composants VCL
    Réponses: 17
    Dernier message: 21/06/2004, 13h10
  5. comment faire evoluer ma base vers interbase6
    Par toure32 dans le forum InterBase
    Réponses: 5
    Dernier message: 23/10/2002, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo