C/Visual C - APIS para Apache en LINUX - UNIX

 
Vista:

APIS para Apache en LINUX - UNIX

Publicado por Alvaro Mouat V. (8 intervenciones) el 07/08/2001 17:58:58
Hola.
debo lograr que un programa en C (UNIX) que se comunica a traves de Sockets le pregunte al servidor APACHE si una direccion IP esta conectada en este momento con el, si es así, obtener el nombre de usuario correspondiente.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Verificar la conexión de una dirección IP al servidor Apache utilizando sockets en C

Publicado por Alejandro (913 intervenciones) el 04/10/2024 23:59:10
Álvaro, para lograr esto, puedes utilizar la función `getpeername()` en tu programa en C para obtener la dirección IP y el puerto remoto al que está conectado el socket. Luego, puedes utilizar una herramienta como `netstat` en UNIX para verificar si la dirección IP está conectada al servidor Apache en ese momento.

Aquí hay un ejemplo de cómo podrías implementar esto:

1. Obtén la dirección IP y el puerto remoto utilizando la función `getpeername()` en tu programa en C. Puedes encontrar ejemplos de cómo hacer esto en la documentación de sockets de UNIX.

2. Ejecuta el comando `netstat -an | grep <dirección IP>` en tu programa en C utilizando la función `system()` para obtener la lista de conexiones activas en el servidor Apache.

3. Analiza la salida del comando `netstat` para verificar si la dirección IP está presente en la lista de conexiones activas. Si está presente, puedes obtener el nombre de usuario correspondiente utilizando el comando `who` o `w` en UNIX.

Aquí hay un ejemplo de cómo podrías implementar esto en tu programa en C:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
#include <stdlib.h>
 
int main() {
    // Obtener la dirección IP y el puerto remoto utilizando getpeername()
    // ...
 
    // Ejecutar el comando netstat y obtener la salida
    char command[100];
    sprintf(command, "netstat -an | grep %s", ipAddress);
    FILE* fp = popen(command, "r");
    if (fp == NULL) {
        printf("Error al ejecutar el comando netstat\n");
        return 1;
    }
 
    // Leer la salida del comando netstat
    char output[100];
    while (fgets(output, sizeof(output), fp) != NULL) {
        // Verificar si la dirección IP está presente en la salida
        if (strstr(output, ipAddress) != NULL) {
            // Obtener el nombre de usuario correspondiente utilizando el comando who o w
            // ...
        }
    }
 
    // Cerrar el archivo
    pclose(fp);
 
    return 0;
}

Recuerda que este es solo un ejemplo básico y deberás adaptarlo a tus necesidades específicas. Además, ten en cuenta que el acceso a la información del servidor Apache puede requerir permisos de administrador.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar