Scroll to navigation

REXEC(3) Manuel du programmeur Linux 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, char *user, 
          char *passwd, char *cmd, int *fd2p);

int rexec_af(char **ahost, int inport, char *user, 
             char *passwd, 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. Autrement, *ahost est configuré avec le nom standard de l'hôte. Si un nom d'utilisateur et un mot de passe sont également spécifiés, ils sont utilisés pour s'authentifier sur l'hôte ; autrement, on cherche les informations appropriées dans l'environnement puis dans le fichier .netrc de l'utilisateur situé dans le répertoire personnel. Si cela échoue, on demande l'information à l'utilisateur.

Le port inport spécifie quel port Internet DARPA 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.52 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> ».

4 juillet 2013 Linux