Aide sur scripting shell - option timeout

weshweshpopo -  
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai besoin d'utiliser une option de timeout dans un script unix en shell.

Voici un bout de mon script :

        if test -n "$SENDER"
        then
                CONNEXION="/usr/local/bin/ssh -n $SENDER -l root /bin/rsh $IP"
        else
                CONNEXION="/usr/local/bin/ssh -n $IP -l root"
        fi


Je souhaite indiquer que si la commande met plus de 10 secondes pour s'executer alors je fais
echo "prout"


Merci.
Configuration: Windows XP
Firefox 2.0.0.8

1 réponse

  1. jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 898
     
    Salut,

    Y'a aucune commande dans ton bout de script susceptible de mettre + de 10 secondes à s'exécuter, c'est pas le test de l'existence d'un utilisateur (ou autre) et l'affectation d'une variable qui va mettre tout ce temps...

    C'est tout le bloc que tu qualifies de commande ?

    Voilà un petit script susceptible de faire ce que tu veux, adapte à ton cas :
    #!/bin/bash
    
    # on regroupe les commandes entre parenthèses
    (
    # on conditionne la création d'un fichier que si
    #+ la commande précédente a renvoyé un code retour égal à 0 (vrai)
    sleep $1  && touch blabla
    ) &     # on lance les commandes précédentes en arrière-plan (&)
    sleep 5 # on fait une pause
    # si le fichier "blabla" n'existe pas c'est que la commande
    #+ précédente n'a pas abouti
    if [ ! -f blabla ]
    # donc on le dit
    then echo "Prout"
    # on tue la tâche en arrière-plan
    kill $!
    # sinon on efface le fichier créé
    else rm -f blabla
    fi
    ;-))
    0