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

Unix Discussion :

Filiation process sur Unix


Sujet :

Unix

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 11
    Points
    11
    Par défaut Filiation process sur Unix
    Je dois developper un script permettant de vérifier la filiation d'un process A par rapport à un process B : si le process A est bien enclenché par B, je dois effectuer un traitement.

    Seulement là ou 'je coince' c'est que le cahier des charges est assez "serré" :
    notamment pour éviter au max les problèmes de portage, il ne doit pas y avoir de commande spécifiquement basé sur le PPID.

    Je pensais à un truc de ce genre mais le soucis c'est que c'est codé un peu 'crade' à mon goût...

    - coller le contenu du pstree du process A dans un fichier en supprimant les caracteres 'speciaux' (les traits et autres permettant de 'dessiner' la hierarchie)
    - inverser le contenu du fichier de façon à ce que le process 'fils' soit en premiere ligne (c'est la fonction sed '1!G;h;$!d')
    - prendre la 2eme ligne (qui contient normalement le pere du process en 1ere ligne)
    - vérifier dans cette ligne que le PID correspond a celui du process pere
    - si c'est ok, effectuer le traitement

    Ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    pstree -g 0 -p $PROC | sed 's/\\-+=//g;s/\\-+-//g;s/\\---//g' | sed '1!G;h;$!d'> fichier_tmp.txt
     
    LIGNE_MOT=`cat fichier_tmp.txt | head -2 | tail -1`
    echo $LIGNE_MOT | grep $PID_SCRIPT_A | grep $LOGIN
     
     if [ $? = 0 ]
        then
         Echo "Traitement demarre ici"
     fi
    Auriez-vous des conseils, astuces ou autres infos pour 'améliorer' ce truc en évitant au max les 'spécifications' d'OS (ca doit tourner sur tout Unix).

  2. #2
    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
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par Fung999 Voir le message
    Je dois developper un script permettant de vérifier la filiation d'un process A par rapport à un process B : si le process A est bien enclenché par B, je dois effectuer un traitement.

    Seulement là ou 'je coince' c'est que le cahier des charges est assez "serré" :
    notamment pour éviter au max les problèmes de portage, il ne doit pas y avoir de commande spécifiquement basé sur le PPID.
    Peux tu préciser exactement ce que stipule ton "cahier des charges" ?
    - coller le contenu du pstree ......

    Auriez-vous des conseils, astuces ou autres infos pour 'améliorer' ce truc en évitant au max les 'spécifications' d'OS (ca doit tourner sur tout Unix).
    pstree n'est pas portable. Si tu dois coder quelque chose qui tour sous tous les Unix, utilise la commande ps avec des options Posix et en particulier l'affichage du PPID.
    ɹǝsn *sıɹɐlos*

  3. #3
    Expert éminent sénior Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Points : 12 264
    Points
    12 264
    Par défaut
    Citation Envoyé par Fung999 Voir le message
    Je dois developper un script permettant de vérifier la filiation d'un process A par rapport à un process B : si le process A est bien enclenché par B, je dois effectuer un traitement.

    Seulement là ou 'je coince' c'est que le cahier des charges est assez "serré" :
    notamment pour éviter au max les problèmes de portage, il ne doit pas y avoir de commande spécifiquement basé sur le PPID.

    Je pensais à un truc de ce genre mais le soucis c'est que c'est codé un peu 'crade' à mon goût...

    - coller le contenu du pstree du process A dans un fichier en supprimant les caracteres 'speciaux' (les traits et autres permettant de 'dessiner' la hierarchie)
    - inverser le contenu du fichier de façon à ce que le process 'fils' soit en premiere ligne (c'est la fonction sed '1!G;h;$!d')
    - prendre la 2eme ligne (qui contient normalement le pere du process en 1ere ligne)
    - vérifier dans cette ligne que le PID correspond a celui du process pere
    - si c'est ok, effectuer le traitement

    Ce qui donnerait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    pstree -g 0 -p $PROC | sed 's/\\-+=//g;s/\\-+-//g;s/\\---//g' | sed '1!G;h;$!d'> fichier_tmp.txt
     
    LIGNE_MOT=`cat fichier_tmp.txt | head -2 | tail -1`
    echo $LIGNE_MOT | grep $PID_SCRIPT_A | grep $LOGIN
     
     if [ $? = 0 ]
        then
         Echo "Traitement demarre ici"
     fi
    Auriez-vous des conseils, astuces ou autres infos pour 'améliorer' ce truc en évitant au max les 'spécifications' d'OS (ca doit tourner sur tout Unix).
    c'est rigoureusement impossible la seule solution existante est la gestion du PPID

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Peux tu préciser exactement ce que stipule ton "cahier des charges" ?
    Il faut juste que j'évites l'usage du PPID : En gros, ca doit tourner sur Solaris et HP.
    Hors sous Solaris il faut être root il me semble pour avoir le PPID du proc...
    Là ou j'ai un soucis c'est justement pour pouvoir faire le portage sans avoir X lignes de code redondante via l'usage d'un case.

    Il semblerait alors qu'il n'y ait pas de moyen "simple"...

  5. #5
    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
    Citation Envoyé par Fung999 Voir le message
    Il faut juste que j'évites l'usage du PPID : En gros, ca doit tourner sur Solaris et HP.
    Hors sous Solaris il faut être root il me semble pour avoir le PPID du proc...
    Là ou j'ai un soucis c'est justement pour pouvoir faire le portage sans avoir X lignes de code redondante via l'usage d'un case.

    Il semblerait alors qu'il n'y ait pas de moyen "simple"...
    il te semble mal....
    Quelque soit l'utilisateur sur tout serveur unix, tu peux lancer un ps
    Grave urgent !!!

  6. #6
    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
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par Fung999 Voir le message
    Hors sous Solaris il faut être root il me semble pour avoir le PPID du proc...
    La seule restriction de ps sous Solaris est l'affichage de la ligne de commande complète. L'affichage du ppid n'est absolument pas restreint puisqu'il n'induit aucune vulnérabilité.
    ɹǝsn *sıɹɐlos*

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Si tu dois coder quelque chose qui tour sous tous les Unix, utilise la commande ps avec des options Posix et en particulier l'affichage du PPID.
    Je vais tenter ça, reste à trouver les options qui vont bien pour avoir une sortie 'standard' sur les 2 plateformes.

  8. #8
    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
    Points : 7 842
    Points
    7 842
    Par défaut
    Citation Envoyé par Fung999 Voir le message
    Je vais tenter ça, reste à trouver les options qui vont bien pour avoir une sortie 'standard' sur les 2 plateformes.
    Ce n'est pas compliqué. Il suffit que tu utilises la syntaxe POSIX décrite dans l'URL suivante plutôt que regarder les pages de manuel des différents OS cibles, qui risquent de présenter des extensions non portables.
    http://www.opengroup.org/onlinepubs/...lities/ps.html
    ɹǝsn *sıɹɐlos*

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    Merci Jliagre je vais explorer ce contenu )

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

Discussions similaires

  1. cryptographie avec C sur UNIX
    Par xheo dans le forum Algorithmes et structures de données
    Réponses: 2
    Dernier message: 26/04/2006, 09h28
  2. activation d'un process sur une machine distante
    Par Plumet dans le forum Windows
    Réponses: 8
    Dernier message: 21/11/2005, 12h44
  3. Pb install SAMBA sur UNIX Digital v4.0D !!!
    Par dam_51 dans le forum Autres Logiciels
    Réponses: 6
    Dernier message: 14/10/2005, 15h00
  4. Demarer BD Oracle 7 sur unix
    Par bilalove dans le forum Oracle
    Réponses: 5
    Dernier message: 16/03/2005, 15h58
  5. suppression base 7.3.4 sur unix (DG)
    Par Yorglaa dans le forum Oracle
    Réponses: 8
    Dernier message: 16/03/2005, 12h41

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