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 :

Script pour checker lecteur de bande


Sujet :

Shell et commandes POSIX

  1. #1
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2009
    Messages : 66
    Par défaut Script pour checker lecteur de bande
    Bonjour,

    N'étant pas doué à réaliser les scripts, j'aimerais demander votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mt -f /dev/rmt/0cbn status
    Avec cette commande je recois si ok
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Unconfigured Drive: Vendor 'HP      ' Product 'SDLT600        ' tape drive:
       sense key(0x0)= No Additional Sense   residual= 0   retries= 0
       file no= 0   block no= 0
    soit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    /dev/rmt/0cbn: no tape loaded or drive offline
    Je n'arrive pas à lier les résultat que je possede dans un script.

    J'ai esayé d'envoyer dans un fichier texte pour pour voir grepper un mot mais quand il n'y pas de tape le résulat ne s'envoie pas dans le fichier.

    Une aide serait bienvenu, merci.

  2. #2
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 382
    Par défaut
    Bonjour,

    En cas d'erreur, le message est envoyé sur la sortie d'erreur et non sur la sortie standard.
    Donc, pour récupérer le message, il suffit de rediriger la sortie d'erreur dans un fichier ou bien sur la sortie standard qui peut elle-même être redirigée dans un fichier.
    Redirection sortie d'erreur d'une commande dans un fichier:
    ou en mode rajout:
    Redirection sortie d'erreur vers sortie standard:
    Redircetion sortie d'erreur vers sortie standard elle-même redirigée vers un fichier:
    Sinon, selon ton besoin, si le lecteur n'est pas disponible, la commande sort en erreur, et donc il suffit juste de vérifier le code retour de la commande.
    ici un exemple avec la commande true (ce que retournera ta commande si c'est ok) et exactement le même exemple mais en remplaçant la commande true par la commande false (ce que retournera ta commande en cas d'erreur):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ if true; then echo ok; else echo ko; fi
    ok
    $ if false; then echo ok; else echo ko; fi
    ko

  3. #3
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2009
    Messages : 66
    Par défaut
    Merci beaucoup de votre réponse rapide et trés bien argumenté!

    Je m'y attele!

    Cordialement

  4. #4
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par rouget Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mt -f /dev/rmt/0cbn status
    Je soupçonne que cette commande n'est pas exécutée sur un GNU/Linux mais plutôt sur un Unix, probablement Solaris ou un autre System V.

    Dans ce cas, bien que la réponse de disedorgue soit pertinente, ce n'est quand même pas le bon forum.

  5. #5
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2009
    Messages : 66
    Par défaut
    Tout à fait c'est un OS Sun
    Désolé!
    Merci le scripts fonctionne à merveille!
    Cordialement

  6. #6
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2009
    Messages : 66
    Par défaut
    Bonjour,

    Il m'est apparu un cas auquel je n'avais pas penser....
    Il faut que je recherche une chaine de caractere avec un grep mais je n'y arrive pas!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep "/dev/rmt/0cbn: Device busy" /tmp/checkItarch
    Ne me prend pas toute la chaine de caractere.

    J'ai vu sur le site qu'il était possible de mettre les options ie au grep mais cela ne fonctionne pas non plus.

    J'ai aussi trouvé cela aucun effet

    Auriez vous la solution?

    Merci d'avance.

  7. #7
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Pas facile sans savoir ce qu'il y a dans le fichier /tmp/checkItarch, mais le problème est probablement dû à une tabulation.

    Qu'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grep 0cbn /tmp/checkItarch | od -c

  8. #8
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2009
    Messages : 66
    Par défaut
    Merci de votre réponse.

    le fichier /tmp/checkItarch est fichier texte simple.
    Je me sers de se fichier dans le script que j'ai fait ( ci-dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    >/tmp/checkItarch
     
    mt -f /dev/rmt/0cbn status >>/tmp/checkItarch 2>&1
            if [ -s /tmp/checkItarch ]
                    then
                    grep  "/dev/rmt/0cbn: Device busy" /tmp/checkItarch
                            if true
                            then
                                    echo " restauration en cours ok "
                            else
                                    echo " Mettre tape dans lecteur SDLT600"
                                    echo " Lecteur ItArch SDLT600 sans tape" | mailx -s "Charger tape SDLT600 dans lecteur ItArch" "rouget@st.com"
                            fi
                    else
                            echo " Tape SDLT600 presente ok "
            fi

  9. #9
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Pourquoi ne réponds-tu pas à ma question ?

  10. #10
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    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 103
    Par défaut
    Citation Envoyé par rouget Voir le message
    Je me sers de se fichier dans le script que j'ai fait ( ci-dessous)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    >/tmp/checkItarch
     
    mt -f /dev/rmt/0cbn status >>/tmp/checkItarch 2>&1
            if [ -s /tmp/checkItarch ]
                    then
                    grep  "/dev/rmt/0cbn: Device busy" /tmp/checkItarch
                            if true
                            then
                                    echo " restauration en cours ok "
                            else
                                    echo " Mettre tape dans lecteur SDLT600"
                                    echo " Lecteur ItArch SDLT600 sans tape" | mailx -s "Charger tape SDLT600 dans lecteur ItArch" "rouget@st.com"
                            fi
                    else
                            echo " Tape SDLT600 presente ok "
            fi
    Euh... si tu en es resté là, il est fort probable que ça ne marche pas...

    Le if true suggéré, c'était juste pour te montrer un exemple de commande. Pour tester le retour de la dernière commande, c'est if test $? -eq 0; then ..., mais on peut plus logiquement tester le retour d'une commande en la mettant directement dans la clause "if".
    Dans ton cas, la commande, c'est "grep", d'où:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                    if grep  "/dev/rmt/0cbn: Device busy" /tmp/checkItarch ; then echo " restauration en cours ok "...
    De plus, passer par un fichier intermédiaire non généré par "mktemp" peut s'avérer dangereux (notamment si le script est lancé 2 fois en même temps ou si un autre script simultané utilise le même nom de fichier).
    Ici, tu peux mettre le contenu dans une variable si tu l'utilises plusieurs fois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    checkItarch=$(mt -f /dev/rmt/0cbn status 2>&1)
    if test -z "${checkItarch}" ; then echo " Tape SDLT600 presente ok "
    elif echo "${checkItarch}" | grep "/dev/rmt/0cbn: Device busy" ; then echo " restauration en cours ok "
    else ...

  11. #11
    Membre confirmé
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Novembre 2009
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Help Desk

    Informations forums :
    Inscription : Novembre 2009
    Messages : 66
    Par défaut
    Bonjour,
    Désolé de ma réponse tardive mais je reprends le travail que cette nuit.
    Encore merci pour vos réponses

    jlliagre je n'avais fait attention à votre commande jointe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    grep 0cbn /tmp/checkItarch | od -c
    0000000   /   d   e   v   /   r   m   t   /   0   c   b   n   :       n
    0000020   o       t   a   p   e       l   o   a   d   e   d       o   r
    0000040       d   r   i   v   e       o   f   f   l   i   n   e  \n
    0000057
    jk-ft quand je vous disais que je n'étais pas doué....
    J'ai modifié mon script avec votre aide avec succés

    Merci encore de votre aide, comme on dit c'est en forgeant ....et il faut que je forge encore!

    Bonne soirée à vous.

  12. #12
    Expert confirmé
    Homme Profil pro
    Développeur informatique en retraite
    Inscrit en
    Avril 2008
    Messages
    2 103
    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 103
    Par défaut
    Citation Envoyé par rouget Voir le message
    Merci encore de votre aide, comme on dit c'est en forgeant ....et il faut que je forge encore!
    [HS]C'est en forgeant qu'on devient forgeron et c'est en bûchant que Léonard devint scie...[/HS]

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/04/2010, 12h14
  2. [WS 2008] Software de backup pour lecteur de bande LTO
    Par izakiel dans le forum Windows Serveur
    Réponses: 4
    Dernier message: 26/01/2010, 19h16
  3. script pour nettoyer des lecteurs réseaux
    Par ko0nz dans le forum VBScript
    Réponses: 1
    Dernier message: 06/02/2008, 18h13
  4. recherche script pour le montage de lecteurs reseaux
    Par nvanheers dans le forum Windows
    Réponses: 2
    Dernier message: 13/10/2005, 23h23

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