Partage
  • Partager sur Facebook
  • Partager sur Twitter

Shell fils/pére et FIFO

    23 mars 2015 à 14:48:31

    Bonjour,
    J'ai un petit problème au niveau de mon script bash dans la récupération du groupe.
    j'ai définis les shells suivantes


    [B]=======================================
    Fifo_client
    ===========
    [/B]#! /bin/sh

    FIFO_SRV=~/noms_ident.fifo
    FIFO_CLT=~/fifo_$$.fifo

    if [ -z "$1" ] ; then
        echo "Syntaxe : $0 identifiant" >&2
        exit 1
    fi

    if [ ! -p $FIFO_SRV ] ; then
        echo "Le serveur n'est pas accessible"
        exit 1
    fi

    mkfifo -m 0622 $FIFO_CLT
    if [ ! -p $FIFO_SRV ] ; then
        echo "Impossible de créer la file ~/fifo_$$.fifo"
        exit 1
    fi

    echo "$1 $FIFO_CLT" > $FIFO_SRV
    cat < $FIFO_CLT
    rm -f $FIFO_CLT


    [B]=======================================
    Fifo_serveur
    [/B]#! /bin/sh

    # Passage en mode démon
    if [ "$MON_PID" != "$PPID" ] ; then
        export MON_PID=$$
        MON_LISTING=$(cat $0)
        cd /
        setsid /bin/bash -c "$MON_LISTING" "$0" "$@" 0<&- 1>&- 2>&- &
        logger -t $(basename $0) "Le PID du demon est $!"
        echo "Le PID du démon est $!" >& 2
        exit 0
    fi

    FIFO_SRV=~/noms_ident.fifo

    function gestionnaire_signaux
    {   
        rm -f $FIFO_SRV
        exit 0;
    }
    trap gestionnaire_signaux EXIT QUIT INT HUP

    if [ -e $FIFO_SRV ] ; then
        echo "FIN" > $FIFO_SRV &
        exit 0;
    fi

    mkfifo -m 0622 $FIFO_SRV
    if  [ ! -p $FIFO_SRV ] ; then
        echo "Impossible de créer la file FIFO $FIFO_SRV"
        exit 1
    fi

    FIN=""
    while [ ! $FIN ] ; do
        read IDENT FIFO_CLT < $FIFO_SRV

        TROUVE=""
        exec < /etc/passwd
        ANCIEN_IFS="$IFS"
        IFS=":"
        while read ident passe uid gid nom reste ; do
            if [ "$IDENT" == "$ident" ] ; then
                TROUVE="Oui"
                break
            fi
        done
        IFS=$ANCIEN_IFS
       
        if [ "$IDENT" == "FIN" ] ; then
            FIN="Oui"
            TROUVE="Oui"
            nom="Fin du serveur"
        fi
        if [ $TROUVE ] ; then
            echo "$nom" > $FIFO_CLT
        else
            echo "Non trouvé"  > $FIFO_CLT
        fi
    done

    [B]=======================================[/B]
    • Partager sur Facebook
    • Partager sur Twitter

    Shell fils/pére et FIFO

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown