Forum Programmation.c Fonction rexec : help !

Posté par  .
Étiquettes : aucune
0
14
nov.
2005
Bonjour,

Je dois pour un TP de reseau utiliser la fonction rexec.
A chaque fois que j'execute mon programme, le rexec me renvoie "Connection Refused"

Voici le code :



char host[256]
char* phost=host;

sptr=getservbyname("exec", "tcp");
rexec(&phost, sptr->s_port, "fab", "", "/home/fab/ftp/serv/serveur", 0)



Le demon xinetd est bien lancé sur ma machine.
Je pense que Linux est parametré pour refuser les connexions rexec (Mandrake 10 AMD64).
Etant donné l'absence quasi-totale de documentation pour cette fonction, merci de me dire si mon code et correct et comment configurer mon systeme pour que ça fonctionne.

Merci
  • # Pas sûr de moi

    Posté par  . Évalué à 1.

    Mais rexec me fait doucement pensement à du rcp, rsh, rlogin etc....
    Verifie le .rhosts distant, au pire, effaces son contenu et mets y juste un "+"
  • # rexec ?

    Posté par  . Évalué à 2.

    Ca à l'air bien gruikesque, comme fonction. Pourquoi en as-tu particulièrement besoin ?

    En plus, c'est obsolète :
    This interface is obsoleted by krcmd(3). It is available from the compatibility library, libcompat.


    Bon, il est tout-à-fait possible que ce soit getservbyname qui échoue. Cette fonction recherche dans /etc/services le port qui correspond au protocole "exec" en TCP/IP, chez moi c'est 512. Si cette ligne n'est pas renseignée, il est possible que ta structure renvoie un port nul et que ta connexion échoue à cause de cela.

    De toutes façons, en y réfléchissant, le port 512, je ne l'ai jamais vu ouvert. La man page sur le net dit qu'il s'agit d'une fonction BSD, et dans tous les cas, il ne doit pas s'agir de ssh.

    Donc oui, il y a 99,999% de chances pour qu'il n'y ait pas de daemon Linux configuré pour écouter ce port et faire ce type d'action, ce qui est très bien comme ça.
    • [^] # Re: rexec ?

      Posté par  . Évalué à 1.

      Le getservbyname réussi et me renvoie le bon port.
      Maintenant, il est vrai que cette fonction est obsolète, mais les profs nous l'impose .... En effet, il est possible de l'utiliser sur les PC de la FAC (seulement une salle), mais comme je ne suis pas tout le temps a la FAC, j'aurais bien voulu pouvoir developper chez moi. Malheuresuement, ça n'a pas l'air possible.
      • [^] # Re: rexec ?

        Posté par  . Évalué à 2.

        Si, c'est possible. Il suffit de lancer le daemon correspondant sur la machine que tu attaques. Si tu utilises xinetd, il ne suffit pas qu'il soit lancé pour que le tout fonctionne. Il faut encore qu'il soit correctement configuré.

        Vérifie le port renvoyé par getservbyname(), à priori 512, mais c'est peut-être une autre valeur, puis regarde la config de xinetd pour voir s'il est bien configuré pour répondre sur ce port et y lancer quelque chose. À priori, cela ne devrait pas être le cas.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.