Cobol Foro

Cobol Foro (https://www.cobolforo.es/index.php)
-   PowerCOBOL (ActiveX, v4 - v11) (https://www.cobolforo.es/forumdisplay.php?f=9)
-   -   [Duda] Archivar información de la conexión (Usuario, IP) (https://www.cobolforo.es/showthread.php?t=992)

Fito 31 de mayo de 2019 16:03

Archivar información de la conexión (Usuario, IP)
 
Hola Amigos:

Necesito armar un sistema de auditoria, les comento el escenario.

Tengo un servidor con Windows Server 2016, salvo una máquina que trabaja en red (esa ingresa así, porque tiene conectada un escaner de cheques, y los tecnicos no lograron comunicarla por escritorio remoto), todas las demás trabajan con escritorio remoto.

Lo que necesito hacer es grabar un archivo de auditoria con toda la mayor información posible (usuario de windows que accedió, ip desde donde accedió, etc, etc) para agregarle a la ya auditoria que realizo cada vez que dan de baja o modifican algun dato desde el sistema (clientes, remitos, facturas, etc).

El desarrollo está hecho en PowerCobol 8, si alguien tiene alguna "soga" que me tire, lo agradeceré.

Saludos.

Fito...

Kuk 31 de mayo de 2019 19:06

Fito, hay utilidades gratuitas, como PC Info etc. que te registran información en un fichero de texto plano. ¿Has googleado un poco en este sentido?

Lascu 24 de junio de 2019 22:25

Auditoría
 
Cita:

Citación del post de Fito (Mensaje 4961)
Hola Amigos:

Necesito armar un sistema de auditoria, les comento el escenario.

Tengo un servidor con Windows Server 2016, salvo una máquina que trabaja en red (esa ingresa así, porque tiene conectada un escaner de cheques, y los tecnicos no lograron comunicarla por escritorio remoto), todas las demás trabajan con escritorio remoto.

Lo que necesito hacer es grabar un archivo de auditoria con toda la mayor información posible (usuario de windows que accedió, ip desde donde accedió, etc, etc) para agregarle a la ya auditoria que realizo cada vez que dan de baja o modifican algun dato desde el sistema (clientes, remitos, facturas, etc).

El desarrollo está hecho en PowerCobol 8, si alguien tiene alguna "soga" que me tire, lo agradeceré.

Saludos.

Fito...

Hola Fito

En un sistema de facturación estoy intentando implementar algo similar. En mi caso particular, cree un archivo llamado Eventos, donde guardo Usuario, Host, Fecha, Hora, tipo de evento, descripción. De momento tengo una rutina donde que copio y pego en cada situación que deseo que quede registrada (registro de pagos, emisión de factura, anulación de un recibo, etc).
Por ejemplo, al final del algoritmo donde guardo la generación de una orden de pago, pego esto
Código COBOL:
  1.  REGISTRA-EVENTO.
  2.      OPEN I-O EVENTOS.
  3.      INITIALIZE REG-EVENTOS.
  4.      MOVE WX-ID-USR     TO EV-USUARIO.
  5.      MOVE WX-HOST-USR   TO EV-HOST.
  6.      MOVE FUNCTION CURRENT-DATE TO WK-FECHA-ENTRADA.
  7.      MOVE WK-FECHA TO EV-FECHA.
  8.      ACCEPT EV-HORA FROM TIME.
  9.      IF REGISTRO-NUEVO THEN
  10.                          MOVE "ALTA" TO EV-EVENTO
  11.                          STRING "Nueva orden de pago N° " ID-OPAGO DELIMITED BY SIZE
  12.                            INTO EV-DESCRIBE
  13.                          END-STRING
  14.        ELSE
  15.           MOVE "EDIT" TO EV-EVENTO
  16.           STRING "Edita orden de pago N° " ID-OPAGO DELIMITED BY SIZE
  17.             INTO EV-DESCRIBE
  18.           END-STRING
  19.      END-IF.
  20.      WRITE REG-EVENTOS INVALID KEY
  21.            CONTINUE
  22.      END-WRITE.
  23.      CLOSE EVENTOS.
En algún momento quiero desarrollarlo en una DLL, por el momento no me resulta tan incómodo copiar, pegar y editar la descripción.
De esa manera puedo ver que acciones llevaron a cabo los usuarios.
Saludos

Lascu

Fito 24 de junio de 2019 23:23

Hola Marcelo:

Gracias por contestar.

Yo tambien estoy haciendo eso, la rutina la tengo en un cbl que llamo con un call con parámetros desde donde quiera controlar. La pregunta en realidad era cómo obtengo el usuario de windows, la ip de la máquina donde está trabajando, etc.

Un abrazo.

Fito...

Lascu 25 de junio de 2019 00:42

Fito

Cuando un usuario se loguea a la aplicación, guardo el nombre de la pc desde donde se conecta mediante la función WINAPI "GetComputerNameA", tendría que revisar mejor si alguna de las funciones no devuelve el valor de la IP.
He visto que programadores de fox utilizan WMI para obtener la IP, pero desconozco como implementarlo en powercobol.

Un abrazo

Lascu
Saludos

JCantero 26 de junio de 2019 17:23

El Usuario lo tienes fácil.

En RM/Cobol existe una rutina C$getsysinfo que en el registro, aparte de numerosa información devuelve el nombre de usuario. Debe de haber algo parecido en Powercobol.

Si asi no fuera, en rmcobol tambien hay una rutina que devuelve el valor de una variable de entorno donde esta el usuario que esta ejecutando. Esa variable es USERNAME

Y si no pues, a pelo.....

Call "system" using "cmd /c echo %username% > fichero.log " y a leer el .log

Para hacer esto último mas completo en vez de fichero.log que sea un numero aleatorio para que no tengas conflicto.

Para saber la IP yo utilizo netstat -n que nos dice todas las conexiones abiertas. Si os conectais con el puerto estandard 3389

Call "system" using "cmd /c netstat -n | find ":3389 " y a leer el .log

TCP 192.168.17.22:3389 192.168.64.01:64683 ESTABLISHED
TCP 192.168.17.22:3389 192.168.64.22:64603 ESTABLISHED

aparecerá una linea para cada conexión, en este ejemplo hay dos usuarios desde las IPs 192.168.64.01 y 192.168.64.22 conectados con terminal server al 192.168.17.22

---------- Post añadido : 17:23 ---------- Post anterior : 17:05 ----------

-----------------------

Dependiendo de la version windows server que tengas instalado puedes activar la auditoria del sistema y se hace sola.

Windows Server 2008 Terminal Services Log


La franja horaria es GMT +2. Ahora son las 22:57.

Powered by: vBulletin, Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.