subrutina rcmd

Finalidad

Permite la ejecución de mandatos en un host remoto.

Biblioteca

Biblioteca C estándar (libc.a)

Sintaxis

int rcmd (Host,
Port, LocalUser, RemoteUser, Command, ErrFileDesc)
char ** Host;
u_short  Port;
char * LocalUser;
char * RemoteUser;
char * Command;
int * ErrFileDesc;

Descripción

La subrutina rcmd permite la ejecución de determinados mandatos en un host remoto que soporta rshd, rloginy rpc entre otros.

Sólo los procesos con un ID de usuario efectivo de usuario root pueden utilizar la subrutina rcmd . Se utiliza un esquema de autenticación basado en números de puerto remotos para verificar los permisos. Los puertos en el rango entre 0 y 1023 sólo los puede utilizar un usuario root. La aplicación debe pasar en Puerto, que debe estar en el rango de 512 a 1023.

La subrutina rcmd busca un host a través del servidor de nombres o si el servidor de nombres local no se está ejecutando, en el archivo /etc/hosts .

Si la conexión es satisfactoria, un socket en el dominio de Internet de tipo SOCK_STREAM se devuelve al proceso de llamada y se proporciona al mandato remoto como entrada estándar (stdin) y salida estándar (stdout).

Especifique siempre el parámetro Host . Si el dominio local y el dominio remoto son iguales, la especificación de las partes del dominio es opcional.

Todas las aplicaciones que contienen la subrutina rcmd deben compilarse con la macro _BSD establecida en un valor específico. Los valores aceptables son 43 y 44. Además, todas las aplicaciones de socket deben incluir la biblioteca BSD libbsd.a .

Parámetros

Elemento Descripción
Nombre del servidor Especifica el nombre de un host remoto que se lista en el archivo /etc/hosts . Si el nombre especificado del host no se encuentra en este archivo, la subrutina rcmd no se ejecuta correctamente.
Puerto Especifica el puerto conocido públicamente que se debe utilizar para la conexión. El archivo /etc/services contiene los servicios de Internet DARPA, sus puertos y tipos de socket.
LocalUser y RemoteUser Apunta a nombres de usuario que son válidos en el host local y remoto, respectivamente. Se puede proporcionar cualquier nombre de usuario válido.
Mandato Especifica el nombre del mandato que se debe iniciar en el sistema principal remoto.
ErrFileDesc Especifica un entero que controla la configuración de canales de comunicación. Las opciones de enteros son las siguientes:
valor distinto a cero
Indica que se ha configurado un canal auxiliar para un proceso de control, y el parámetro ErrFileDesc apunta al descriptor de fichero para el canal. El proceso de control proporciona salida de diagnóstico del mandato remoto en este canal y también acepta bytes como números de señal que se reenviarán al grupo de procesos del mandato.
0
Indica que el error estándar (stderr) del mandato remoto es el mismo que la salida estándar (stdout). No se prevé el envío de señales arbitrarias al proceso remoto. Sin embargo, es posible enviar datos fuera de banda al mandato remoto.

Valores de retorno

Tras una finalización satisfactoria, la subrutina rcmd devuelve un descriptor de socket válido.

Si no se completa correctamente, la subrutina rcmd devuelve el valor -1. La subrutina devuelve un -1, si el ID de usuario efectivo del proceso de llamada no es el usuario root o si la subrutina no tiene éxito en resolver el host.

Archivos

Elemento Descripción
/etc/services Contiene los nombres de servicio, los puertos y el tipo de socket.
/etc/hosts Contiene nombres de host y sus direcciones para los hosts de una red.
/etc/resolv.conf Contiene el servidor de nombres y el nombre de dominio.