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

Linux Discussion :

Besoin d'aide pour un script shell


Sujet :

Linux

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 126
    Points : 49
    Points
    49
    Par défaut Besoin d'aide pour un script shell
    Bonjour, je vais avoir besoin d'aide. Je souhaiterais envoyé par mail plusieurs résultat de commande.

    La première commande #dba -check
    crée un nouveau fichier texte dans /tmp/check. Je dois la lancer sous le compte 'oracle'. Je souhaiterais envoyer par mail le plus récent. La commande qui affiche le fichier le plus récent est (sous hp-ux)
    #ls -ltr |tail -1

    Il faut ensuite envoyer ce fichier par mail. Pour envoyer une piece jointe, j'utilise sous root:
    #mailx -s 'sujet' adresse@mail.com </tmp/message.txt

    Il faut aussi (ça se complique) que j'ajoute à ce mail certains résultat de commande comme:
    #ioscan -kfnC tape
    #bdf
    Le tout sous root

    Bref, les commandes fonctionnent bien et je souhaiterais automatiser cela pour y recevoir par mail.

    PS=Le bash n'est pas dispo seulement le sh.


    D'avance merci à tous ceux qui répondront

  2. #2
    Membre actif
    Avatar de vosaray
    Profil pro
    Architecte technique
    Inscrit en
    Mai 2004
    Messages
    217
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2004
    Messages : 217
    Points : 299
    Points
    299
    Par défaut
    Et quel est le probleme exactement ?

    Tu peux tres bien concatener tous le fichiers dans un fichier temporaire et l'envoyer par mail (maix, sendmail ... en fonction de ce que tu as sous la main).

    De plus il semble que tu sois root pour la derniere operation donc tu peux au moins lire les fichiers crees sous le compte oracle ...

  3. #3
    Expert confirmé
    Avatar de Katyucha
    Femme Profil pro
    DevUxSecScrumOps Full Stack Bullshit
    Inscrit en
    Mars 2004
    Messages
    3 287
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Irlande

    Informations professionnelles :
    Activité : DevUxSecScrumOps Full Stack Bullshit

    Informations forums :
    Inscription : Mars 2004
    Messages : 3 287
    Points : 5 075
    Points
    5 075
    Par défaut
    Bon, du Hp-Ux... beurk déjà

    Ensuite :
    En root

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/bin/sh
    #Je lance avec le compte oracle la commande
    su - oracle -c "dba -check" 
    #Je fais une copie du fichier de résultat
    cp /tmp/check /tmp/envoimail
    # Je rajoute une ligne pour départager les zones (ici, je met la commande que je vais lancer)
    echo "Commande ioscan -kfnC tape" >> /tmp/envoimail
    ioscan -kfnC tape >> /tmp/envoimail
    # Je rajoute une ligne pour départager les zones (ici, je met la commande que je vais lancer)
    echo "Commande bdf" >> /tmp/envoimail
    bdf >> /tmp/envoimail
    mailx -s 'sujet' <a href="mailto:adresse@mail.com">adresse@mail.com</a> < /tmp/envoimail
    Si tu as des problèmes pour dba -check, ca sera du aux variables d'environnent. A toi de te faire un script sous oracle pour :
    1- mettre en place toutes les variables d'env
    2- lancher la commande dba -check

    Modifie alors mon petit script.

    sinon, tu as tout pour apprendre a scripter ici :
    http://marcg.developpez.com/ksh
    http://marcg.developpez.com/ksh/#L3.1

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    126
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 126
    Points : 49
    Points
    49
    Par défaut
    Citation Envoyé par Katyucha
    Bon, du Hp-Ux... beurk déjà

    Ensuite :
    En root

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    #!/bin/sh
    #Je lance avec le compte oracle la commande
    su - oracle -c "dba -check" 
    #Je fais une copie du fichier de résultat
    cp /tmp/check /tmp/envoimail
    # Je rajoute une ligne pour départager les zones (ici, je met la commande que je vais lancer)
    echo "Commande ioscan -kfnC tape" >> /tmp/envoimail
    ioscan -kfnC tape >> /tmp/envoimail
    # Je rajoute une ligne pour départager les zones (ici, je met la commande que je vais lancer)
    echo "Commande bdf" >> /tmp/envoimail
    bdf >> /tmp/envoimail
    mailx -s 'sujet' <a href="mailto:adresse@mail.com">adresse@mail.com</a> < /tmp/envoimail
    Si tu as des problèmes pour dba -check, ca sera du aux variables d'environnent. A toi de te faire un script sous oracle pour :
    1- mettre en place toutes les variables d'env
    2- lancher la commande dba -check

    Modifie alors mon petit script.

    sinon, tu as tout pour apprendre a scripter ici :
    http://marcg.developpez.com/ksh
    http://marcg.developpez.com/ksh/#L3.1

    Merci pour ton aide, en fait ça bute sur le dba -check car cette commande a pour conséquence la création d'un fichier au format heuredatemoisannee.chk. Si je fais un #dba -check >/tmp/redirection, rien ne se passe, un fichier est crée : /tmp/check/150018052006.chk.
    C'est pour cela que pour palier à ce pb, dans mon premier message, j'avais mis la commande #ls -ltr |tail -1. En effet cette dernière affiche le nom du fichier chk le plus récent.
    La redirection des autres commandes dans un fichier fonctionne.


    Enfin, encore un autre problem, je suis sur un logiciel et system assez particulier (pas le droit de modif des variables d'environnement), ce qui fait que quand j'execute ton script il bloque au #su - oracle parceque le systeme me demande le terme
    TERM=

    Même qd en telent je fais un #su - oracle il me demande a cqes fois le TERM. Je réponds tjrs vt100 car je n'ai pas le droit de modifier les fichiers de profile. Sais tu comment je peux répôndre à cette question à travers tes scripts? juste après le "su - oracle" répondre vt100 au prompt?

    Merci

  5. #5
    Membre du Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Octobre 2005
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2005
    Messages : 29
    Points : 43
    Points
    43
    Par défaut
    Ton pb de TERM vient peut ete du fait que la variable n'est pas définie.
    Si tu rajoute avant le su -
    #Je lance avec le compte oracle la commande
    export TERM=vt100
    su - oracle -c "dba -check"
    Est-ce que cela fonctionne ?
    Sinon peut tu envoyer ce qui concerne la gestion du terminal dans le .profile d'oracle

    C.

  6. #6
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    344
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 344
    Points : 324
    Points
    324
    Par défaut
    Non, en fait, si tu fais :
    export TERM=vt100
    su - oracle -c "dba -check"
    ta variable ne sera pas utilisée car annulée par le su - oracle.
    Il faudrait faire :

    su - oracle -c "export TERM=vt100; dba -check"
    Si ça ne marche pas, alors il faudrait essayer un truc du genre:

    su - oracle << EOF
    vt100
    dba -check
    EOF
    en assumant que ton compte oracle est bien défini en korn/bash. Si c'est du csh, il faudra utiliser setenv ...et donc modifier le script de Katyucha de la manière suivante:

    #!/bin/sh
    #Je lance avec le compte oracle la commande
    su - oracle -c "export TERM=vt100; dba -check"
    #Je fais une copie du fichier de résultat
    fichier=`ls -1tr /tmp/check/????????????.chk | tail -1`
    cp /tmp/check/$fichier /tmp/envoimail
    # Je rajoute une ligne pour départager les zones (ici, je met la commande que je vais lancer)
    echo "Commande ioscan -kfnC tape" >> /tmp/envoimail
    ioscan -kfnC tape >> /tmp/envoimail
    # Je rajoute une ligne pour départager les zones (ici, je met la commande que je vais lancer)
    echo "Commande bdf" >> /tmp/envoimail
    bdf >> /tmp/envoimail
    mailx -s 'sujet' adresse@mail.com < /tmp/envoimail
    Ca devrait passer

Discussions similaires

  1. besoin d'aide pour un script shell extrayant les données d'un fichier texte ou un fichier log
    Par haithem20080 dans le forum Applications et environnements graphiques
    Réponses: 7
    Dernier message: 15/03/2010, 14h10
  2. [MySQL] Besoin d'aide pour un script
    Par spespam dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 30/11/2008, 15h03
  3. [MySQL] besoin d'aide pour un script pour la numérotation de page
    Par rysis83 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 30/01/2008, 20h59
  4. Aide pour un script shell
    Par vanitom dans le forum Linux
    Réponses: 2
    Dernier message: 07/04/2007, 19h02
  5. Besoin d'aide pour modif script
    Par Abdias dans le forum Langage
    Réponses: 5
    Dernier message: 12/10/2006, 07h00

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