REXEC(3)

NOM
rewec, rexec_af - Renvoyer un flux sur une commande distante

SYNOPSIS
#define _BSD_SOURCE             /* Consultez feature_test_macros(7) */
#include <netdb.h>

int rexec(char **ahost, int inport, const char *user,
          const char *passwd, const char *cmd, int *fd2p);

int rexec_af(char **ahost, int inport, const char *user,
             const char *passwd, const char *cmd, int *fd2p,
             sa_family_t af);

DESCRIPTION
Cette interface est rendue obsolète par rcmd(3). La fonction rexec() cherche l'hôte *ahost en utilisant gethostbyname(3), elle renvoie -1 si l'hôte n'existe pas. Sinon, *ahost est configuré avec le nom standard de l'hôte. Si un nom d'utilisateur et un mot de passe sont également indiqués, ils sont utilisés pour s'authentifier sur l'hôte ; autrement, les informations appropriées sont recherchée dans l'environnement puis dans le fichier .netrc situé dans le répertoire personnel de l'utilisateur. Si cela échoue, les informations sont demandées à l'utilisateur.

Le port inport indique le port Internet DARPA qui sera utilisé pour la connexion ; l'appel getservbyname("exec", "tcp") (consultez getservent(3)) renverra un pointeur sur une structure qui contient le port nécessaire. Le protocole de la connexion est décrit en détails dans rexecd(8).

Si la connexion réussit, une socket dans le domaine Internet de type SOCK_STREAM est renvoyée à l'appelant et est fournie à la commande distante comme stdin et stdout. Si fd2p est non nul, un canal auxiliaire sur un processus de contrôle sera configuré et un descripteur de celui-ci sera placé dans *fd2p. Le processus de contrôle renverra une sortie de diagnostic de la commande (unité 2) sur ce canal et acceptera les octets sur ce même canal comme étant des numéros de signaux UNIX à transmettre au groupe du processus de la commande. L'information de diagnostic n'inclut pas l'échec d'autorisation distante. Une connexion secondaire est configurée après que l'autorisation a été vérifiée. Si fd2p vaut 0, stderr (unité 2 de la commande distante) sera la même que stdout et aucun canal supplémentaire ne sera utilisé pour envoyer des signaux arbitraires au processus distant, bien qu'il soit possible d'obtenir son attention en transmettant des données supplémentaires.

  rexec_af()
La fonction rexec() fonctionne en IPv4 (AF_INET). En revanche, la fonction rexec_af() fournit un argument supplémentaire, af, qui permet à l'appelant de sélectionner le protocole. Cet argument peut être indiqué comme AF_INET, AF_INET6 ou AF_UNSPEC (pour permettre à l'implémentation de sélectionner le protocole).

VERSIONS
La fonction rexec_af() a été ajoutée dans la version 2.2 de la glibc.

ATTRIBUTS

  Multithreading (voir pthreads(7))
Les fonctions rexec() et rexec_af() ne sont pas sûres dans un contexte multithread.

CONFORMITÉ
Ces fonctions ne sont pas dans POSIX.1-2001. La fonction rexec() est d'abord apparue dans BSD 4.2, et est présente sur BSD, Solaris et bien d'autres systèmes. La fonction rexec_af() est plus récente, donc moins répandue.

BOGUES
La fonction rexec() envoie des mots de passe non chiffrés sur le réseau.

Le service sous-jacent est considéré comme un gros trou de sécurité et ne devrait pas être activé sur bien des machines ; consultez rexecd(8) pour plus d'explications.

VOIR AUSSI
rcmd(3), rexecd(8)

COLOPHON
Cette page fait partie de la publication 3.70 du projet man-pages Linux. Une description du projet et des instructions pour signaler des anomalies peuvent être trouvées à l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil po4a <http://po4a.alioth.debian.org/> par l'équipe de traduction francophone au sein du projet perkamon <http://perkamon.alioth.debian.org/>.

Alain Portal <http://manpagesfr.free.fr/> (2006). Nicolas François et l'équipe francophone de traduction de Debian (2006-2009).

Veuillez signaler toute erreur de traduction en écrivant à <perkamon-fr@traduc.org>.

Vous pouvez toujours avoir accès à la version anglaise de ce document en utilisant la commande « LC_ALL=C man <section> <page_de_man> ».