Una vez ubicados los archivos necesarios en un recurso de red donde tengan acceso las máquinas del dominio, procedemos a crear la directiva.
Abrimos el administrador de directivas de grupo y creamos o actualizamos la directiva. Para ello vamos a configuración del equipo, directivas, configuración de software, instalación de software, nuevo paquete y buscamos el msi en la ruta que corresponda.
Una vez grabada la vinculamos a la unidad organizativa que corresponda y esperamos a que se despliegue por nuestra red.
La culpa fue del spectrum
La culpa fue del spectrum
miércoles, 1 de mayo de 2013
viernes, 1 de marzo de 2013
Java en un dominio windows. Obtener el msi de java
En esta serie de entradas voy a describir como distribuir java en una red windows con un controlador de dominio y su posterior configuración centralizada.
El escenario será el siguiente, un controlador de dominio W2008R2 y clientes windows XP y 7 de 32bits.
Obtener el msi
Para instalar java en un dominio windows formado por clientes, windows xp y 7 lo primero que tenemos que obtener es el archivo msi.
Este archivo desgraciadamente no se puede obtener directamente de la web oficial del producto. Oracle no lo pone fácil, desconozco el motivo, pero seguro que tienen uno.
Para obtener el msi tendremos que instalarlo en un pc y después buscar en la carpeta C:\Users\usuario\AppData\LocalLow\Sun\Java\jre1.7.0_**\ si tienes un W7 y C:\Documents and Settings\usuario\Datos de programa\Sun\Java\jre1.7.0_**\ si es un XP.
Dentro tenemos un msi y un cab que tendremos que copiar a nuestro recurso compartido preparado para la distribución de la instalación.
El escenario será el siguiente, un controlador de dominio W2008R2 y clientes windows XP y 7 de 32bits.
Obtener el msi
Para instalar java en un dominio windows formado por clientes, windows xp y 7 lo primero que tenemos que obtener es el archivo msi.
Este archivo desgraciadamente no se puede obtener directamente de la web oficial del producto. Oracle no lo pone fácil, desconozco el motivo, pero seguro que tienen uno.
Para obtener el msi tendremos que instalarlo en un pc y después buscar en la carpeta C:\Users\usuario\AppData\LocalLow\Sun\Java\jre1.7.0_**\ si tienes un W7 y C:\Documents and Settings\usuario\Datos de programa\Sun\Java\jre1.7.0_**\ si es un XP.
Dentro tenemos un msi y un cab que tendremos que copiar a nuestro recurso compartido preparado para la distribución de la instalación.
viernes, 15 de febrero de 2013
Wireshark remoto
En ocasiones queremos chequear el tráfico de red de un pc cliente con windows usando wireshark.
Tenemos la opción de tener instalado wireshark en el pc, sentarnos delante de él, arrancarlo y trabajar. También la opción de instalar wireshark en una máquina puente que pueda controlar todo el trafico entre la wan y la lan, pero eso no siempre es posible.
Y por último tenemos la opción de conectarnos desde nuestro pc y conectar nuestro wireshark a la tarjeta de red del pc que queremos controlar.
Para hacer esto tenemos que instalar WinPcap en el pc que queremos controlar. WinPcap se instala conjuntamente con wireshark si no existe ya en el sistema, ya que lo necesita para funcionar.
Al instalar WinPcap en el pc se crea un servicio en windows que se llama Remote Packet Capture Protocol v.0 (experimental), el servicio esta en estado manual y parado.
Para comenzar a capturar paquetes de esta máquina desde nuestro wireshark tendríamos que arrancar este servicio y después conectarnos.
Mi primera prueba fue arrancar el servicio e intentar conectarme, pero no conseguía validarme. La solución que encontré fue arrancar el servicio sin necesidad de autenticación, escribiendo rpcapd -n en una ventana de comandos.
Para hacer esto remotamente utilice psexec de sysinternals, el cual te permite abrir una sesión de consola de forma remota de una forma muy fácil.
Con un usuario con privilegios para acceder como administrador al pc cliente tecleas psexec \\maquina cmd.Y cuando conectes escribes C:\Archiv~1\Winpcap\rpcapd -n
Ahora desde nuestra máquina nos vamos a Capture, Interfaces y añadimos la interfaz remota.
Pulsamos en añadir y en la siguiente ventana ponemos la ip de la máquina y el puerto al que queremos conectarnos que será el 2002, y que no queremos autenticación.
Pulsamos ok y ya tenemos creada una nueva interfaz de red en nuestro wireshark.
La marcamos para activarla.
Y ya lo tenemos todo, ahora ya podemos analizar el trafico de un cliente remoto con si estuviéramos sentados delante de ella.
Tenemos la opción de tener instalado wireshark en el pc, sentarnos delante de él, arrancarlo y trabajar. También la opción de instalar wireshark en una máquina puente que pueda controlar todo el trafico entre la wan y la lan, pero eso no siempre es posible.
Y por último tenemos la opción de conectarnos desde nuestro pc y conectar nuestro wireshark a la tarjeta de red del pc que queremos controlar.
Para hacer esto tenemos que instalar WinPcap en el pc que queremos controlar. WinPcap se instala conjuntamente con wireshark si no existe ya en el sistema, ya que lo necesita para funcionar.
Al instalar WinPcap en el pc se crea un servicio en windows que se llama Remote Packet Capture Protocol v.0 (experimental), el servicio esta en estado manual y parado.
Para comenzar a capturar paquetes de esta máquina desde nuestro wireshark tendríamos que arrancar este servicio y después conectarnos.
Mi primera prueba fue arrancar el servicio e intentar conectarme, pero no conseguía validarme. La solución que encontré fue arrancar el servicio sin necesidad de autenticación, escribiendo rpcapd -n en una ventana de comandos.
Para hacer esto remotamente utilice psexec de sysinternals, el cual te permite abrir una sesión de consola de forma remota de una forma muy fácil.
Con un usuario con privilegios para acceder como administrador al pc cliente tecleas psexec \\maquina cmd.Y cuando conectes escribes C:\Archiv~1\Winpcap\rpcapd -n
Ahora desde nuestra máquina nos vamos a Capture, Interfaces y añadimos la interfaz remota.
Pulsamos en añadir y en la siguiente ventana ponemos la ip de la máquina y el puerto al que queremos conectarnos que será el 2002, y que no queremos autenticación.
Pulsamos ok y ya tenemos creada una nueva interfaz de red en nuestro wireshark.
La marcamos para activarla.
Y ya lo tenemos todo, ahora ya podemos analizar el trafico de un cliente remoto con si estuviéramos sentados delante de ella.
jueves, 27 de septiembre de 2012
Directorio de enlace y llamada al módulo desde el RPGLE
Directorio de Enlace
Los directorios de enlace sirven para agrupar módulos o programas de servicio con la ventaja de que a la hora crear el programa no sea necesario indicar uno por uno los módulos o programas de servicio que forman el programa.
Ahora continuando con el ejemplo veremos como creamos un directorio de enlace para nuestro programa de servicio.
Primero escribe WRKBNDDIR *ALL verás que te aparecen varios Directorios de Enlace, si nunca nadie los ha creado en tu máquina, solo verás los del sistema dentro de la biblioteca QSYS.
Ahora tecleamos CRTBNDDIR y pulsamos F4, escribimos nombre para el directorio de enlace, biblioteca donde queremos ubicarlo y una descripción que nos sirva para saber que agrupa.
CRTBNDDIR BNDDIR(PRUEBAS/FUNCIONES) TEXT('PGM DE SERVICIO')
Una vez creado añadiremos todos los programas de servicio que tengamos creados o creemos en un futuro. Para hacer esto utilizaremos WRKBNDDIRE
Tecleamos WRKBNDDIRE BNDDIR(PRUEBAS/FUNCIONES)
Directorio de Enlace: FUNCIONES Biblioteca: PRUEBAS
Teclee opciones, pulse Intro.
1=Añadir 4=Eliminar
--------Creación---------
Opc Objeto Tipo Biblioteca Fecha Hora
No hay ningún programa de servicio, ni tampoco ningún módulo asociado a este directorio de enlace.
Para añadirlo hacemos lo siguiente, pulsamos 1, objeto FUNFECHA, tipo *SRVPGM, biblioteca donde tenemos el programa de servicio.
Teclee opciones, pulse Intro.
1=Añadir 4=Eliminar
--------Creación---------
Opc Objeto Tipo Biblioteca Fecha Hora
1 FUNFECHA *SRVPGM PRUEBAS
Al pulsar intro ya veremos lo siguiente
Teclee opciones, pulse Intro.
1=Añadir 4=Eliminar
--------Creación---------
Opc Objeto Tipo Biblioteca Fecha Hora
FUNFECHA *SRVPGM PRUEBAS 15/09/12 16:22:20
Bien ya tenemos un directorio de enlace llamado FUNCIONES donde iremos añadiendo todos los programas de servicio que realicemos.
Uso desde un RPGLE o SQLRPGLE
Ahora ya solo nos queda ver como se le dice al programa, que vamos a compilar con la opción 14 (CRTBNDRPG), que enlace con los módulos del programa de servicio.
En la hoja H añadimos estas dos líneas
H BNDDIR('*LIBL/FUNCIONES')
H DFTACTGRP(*NO) ACTGRP(*CALLER)
En la primera indicamos que busque el directorio de enlace que hemos creado para nuestros programas de servicio.
En la segunda le indicamos que el programa no se ejecuta en el grupo de activación por omisión DFTACTGRP(*NO), esto es necesario para poder usar el directorio de enlace. Con ACTGRP le indicamos el grupo de activación que vamos a usar en mi caso siempre es *CALLER ya que siempre me interesa que se ejecuten en el grupo de activación del programa llamador.
En la hoja D definimos el procedimiento.
D FUNDMYAISO PR 8P 0
D 6P 0
También definimos las dos variables que vamos a usar.
D FECHA8 S 8P 0
D FECHA6 S 6P 0 INZ(010112)
Ahora dentro del código del programa lo usamos de la siguiente forma.
FECHA8=FUNDMYAISO(FECHA6);
Si todo es correcto FECHA8 contendrá el valor 20120101.
viernes, 20 de julio de 2012
Crear un programa de servicio (ILERPG)
Crear un programa de servicio
Un programa de servicio es un programa que agrupa funciones que vamos a llamar desde distintos programas de forma dinámica como si fueran una función del sistema del tipo %CHAR, etc...
Para crear un programa de servicio utilizaremos el mandato CRTSRVPGM, que a continuación vamos a ver en detalle.
Parámetro SRVPGM, aquí ponemos el nombre de nuestro programa de servicio, en este caso vamos a llamar PRUEBA.
Parámetro MODULE, aquí el nombre del módulo, o módulos que van a formar el programa de servicio. En este caso FUNDMYAISO.
Parámetro EXPORT *SRCFILE tal como viene por defecto
Parámetro SRCFILE (BIBLIOTECA/QSRVSRC) siendo biblioteca la biblioteca donde guardes tus fuentes y QSRVSRC el archivo que el sistema propone para guardar los fuentes del enlazador. Ambos se pueden cambiar al gusto del programador.
Parámetro SRCMBR *SRVPGM tal como viene por defecto.
Parámetro TEXT texto para identificar que hace este programa de servicio.
Si ahora pulsamos intro nos dará un error, si indagamos en la causa nos encontraremos con que el miembro prueba no existe el archivo QSRVSRC.
Esto quiere decir que cuando hemos indicado *SRVPGM en el parámetro SRCMBR le estábamos indicando que existe un miembro llamado como el programa, donde hemos guardado la información de enlace para el programa de servicio. Esto se llama Fuente del enlazador.
Crear un miembro Fuente del Enlazador
Un fuente de enlazador contiene la lista de los procedimientos exportados de un programa de servicio, cada programa de servicio debe de tener el suyo.
Para este caso nuestro miembro enlazador se llamará PRUEBA y sera del tipo BND.
Son miembros que no se compilan y que se limitan a contener los módulos exportados de cada programa siguiendo la siguiente estructura
STRPGMEXP PGMLVL(*CURRENT) SIGNATURE('PRUEBA')
EXPORT SYMBOL(FUNDMYAISO)
ENDPGMEXP
Aquí iremos añadiendo lineas EXPORT por cada módulo que añadamos al programa de servicio, antes lógicamente de hacer el CRTSRVPGM.
Para no tener problemas a la hora de modificar el programa de servicio es recomendable respetar el orden, si añado un nuevo módulo siempre se debe hacer por el final.
Ahora si ejecutamos CRTSRVPGM pulsamos F4 y lo cumplimentamos de esta forma.
Para no tener problemas a la hora de modificar el programa de servicio es recomendable respetar el orden, si añado un nuevo módulo siempre se debe hacer por el final.
Creamos el programa de servicio (ahora si)
Ahora si ejecutamos CRTSRVPGM pulsamos F4 y lo cumplimentamos de esta forma.
Crear Programa de Servicio (CRTSRVPGM)
Teclee elecciones, pulse Intro.
Programa de servicio . . . . . . PRUEBA Nombre
Biblioteca . . . . . . . . . . PRUEBA Nombre, *CURLIB
Módulo . . . . . . . . . . . . . FUNDMYAISO Nombre, genérico*, *SRVPGM...
Biblioteca . . . . . . . . . . PRUEBA Nombre, *LIBL, *CURLIB...
+ para más valores
Exportar . . . . . . . . . . . . *SRCFILE *SRCFILE, *ALL
Exportar archivo fuente . . . . QSRVSRC Nombre, QSRVSRC
Biblioteca . . . . . . . . . . PRUEBA Nombre, *LIBL, *CURLIB
Exportar miembro fuente . . . . *SRVPGM Nombre, *SRVPGM
Texto descriptivo . . . . . . . PRUEBA PGM DE SERVICIO
Pulsamos intro y ahora si nos debe de crear el programa de servicio en la biblioteca PRUEBA, formado por un solo módulo que se llama FUNDMYAISO.
Teclee elecciones, pulse Intro.
Programa de servicio . . . . . . PRUEBA Nombre
Biblioteca . . . . . . . . . . PRUEBA Nombre, *CURLIB
Módulo . . . . . . . . . . . . . FUNDMYAISO Nombre, genérico*, *SRVPGM...
Biblioteca . . . . . . . . . . PRUEBA Nombre, *LIBL, *CURLIB...
+ para más valores
Exportar . . . . . . . . . . . . *SRCFILE *SRCFILE, *ALL
Exportar archivo fuente . . . . QSRVSRC Nombre, QSRVSRC
Biblioteca . . . . . . . . . . PRUEBA Nombre, *LIBL, *CURLIB
Exportar miembro fuente . . . . *SRVPGM Nombre, *SRVPGM
Texto descriptivo . . . . . . . PRUEBA PGM DE SERVICIO
Pulsamos intro y ahora si nos debe de crear el programa de servicio en la biblioteca PRUEBA, formado por un solo módulo que se llama FUNDMYAISO.
Con WRKSRVPGM podemos trabajar con todos los programas de servicio.
Solo añadir que al ser un programa de servicio cuando modifiquemos el módulo FUNDMYAISO, lo compilaremos como módulo y después haremos un UPDSRVPGM del programa PRUEBA para actualizar el programa de servicio. Todos los programas que usen ese FUNDMYAISO empezarán a usar la nueva versión con los cambios.
En la próxima entrada veremos como podemos usar un programa de servicio desde cualquier programa ile compilado con la opción 14 del PDM es decir con CRTBNDRPG.
sábado, 31 de marzo de 2012
Crear y usar procedimientos (funciones) en ILERPG
Hace ya mucho que el ILE apareció, casi tanto como años llevo programando en RPG y ya son algunos.
Aunque siempre he tenido interés por utilizar las ventajas del ILE, he de reconocer que he tenido varios problemas para aprovecharlos, uno de ellos es la utilización de programas de servicio. Puede costar hacerse con su funcionamiento, aquí intentare explicar como podemos crear funciones que iremos añadiendo a un programa de servicio y después usaremos desde nuestros programas como si fueran funciones que ya incorpora el lenguaje, por ejemplo %char, %len, etc...
En esta entrada voy a ir construyendo un pequeño módulo que transforme una fecha recibida en un campo numérico de formato día, mes, año (010212) a un formato *ISO año, mes, día. (20120201).
Definición de la hoja H.
En la hoja H además de las definiciones que se utilicen normalmente hay que añadir NOMAIN
Hoja D
Aquí primero definimos el prototipo de la función.
D FUNDMYAISO PR 8P 0
6P 0
Después definimos el comienzo del procedimiento (función).
D FUNDMYASIO B
Ahora la interfaz de entrada del procedimiento, aquí definimos los parámetros de entrada si los tiene.
D FUNDMYAISO PI 8P 0
eFECHA6 6P 0
eFECHA6 6P 0
Aquí defino la variable donde voy a guardar el valor que devuelvo en la función.
D FECHA8 S 8P 0
Código en FREE RPG, si alguien esta en una versión que permite usarlo, que lo use, es maravilloso.
/FREE
FECHA8=%DEC('20'+%SUBST(%EDITC(eFECHA6:'X'):5:2)+
%SUBST(%EDITC(eFECHA6:'X'):3:2)+
%SUBST(%EDITC(eFECHA6:'X'):1:2):8:0);
RETURN FECHA8;
/END-FREE
Definimos el final del procedimiento (función) todo el código deber de ir antes de esta línea.
P E
P E
Este código es muy mejorable, faltan por controlar opciones, pero nos sirve perfectamente para explicar lo que quiero.
Salvamos el fuente y compilamos con la opción 15 (CRTRPGMOD) del PDM, para crear el módulo ILE.
Si nos compila de forma correcta tendremos un objeto que se llamará FUNDMYAISO del tipo *MODULE.
En la próxima entrada crearemos el programa de servicio que contiene este módulo.
viernes, 29 de julio de 2011
Acceder al AS400 desde Libre Office usando JDBC. (parte 2)
Vamos a continuar con la segunda parte donde vamos a configurar una conexión.
Abrimos una nueva base de datos de libreoffice
Y elegimos conectar con una base de datos existente (JDBC)
En la siguiente pantalla introducimos la ip de nuestro AS400 y la clase que tenemos que usar dejándolo tal como esta aquí.
Ahora el usuario para conectarnos, aquí como medida de seguridad es interesante usar un usuario sin capacidad de conectarse de forma interactiva.
Le marcamos la opción de que requiere contraseña y pinchamos en conexión de prueba para que nos solicite contraseña y comprobemos que se conecta.
Aquí ahora nos saldrán las bibliotecas que por defecto se cargan en el perfil de usuario que usamos para conectarlos. A partir de ahí en consultas podrías crearte con los asistentes las consultas que necesitaras. Yo prefiero utilizar directamente el editor sql para crear la consulta y salvarla tal como se puede ver en la siguiente imagen.
La consulta la salvas con el nombre que consideres apropiado por ejemplo pedidos del cliente fulano.
Salvas la base de datos de libreoffice.
Después enlazas una hoja de cálculo con la base de datos, abres la hoja de cálculo y pulsas F4
Ahora te aparecerán todas las bases de datos de libreoffice que tengas y tendrar que elegir la que quieres y dentro de ella la consulta que quieres. Como se pude ver en nuestro ejemplo sería i5, consultas, consulta1
Una vez eliges la consulta te pedirá usuario y contraseña (el mismo que hemos usado antes) y te mostrará los registros, pulsas sobre el botón datos en texto y te pasará los datos a la hoja de cálculo.
Si no te aparece la base de datos que grabaste cuando pulsas F4, revisa la ubicación que le diste al grabar y añádela desde opciones, libreoffice base, base de datos.
Todo esto se puede aplicar tanto a windows (xp y 7) como a linux (debian, ubuntu, opensuse, fedora...)
Bueno, creo que ya hemos terminado, espero que os sirva de utilidad y para demostrar el potencial del software libre.
Abrimos una nueva base de datos de libreoffice
Y elegimos conectar con una base de datos existente (JDBC)
En la siguiente pantalla introducimos la ip de nuestro AS400 y la clase que tenemos que usar dejándolo tal como esta aquí.
Ahora el usuario para conectarnos, aquí como medida de seguridad es interesante usar un usuario sin capacidad de conectarse de forma interactiva.
Le marcamos la opción de que requiere contraseña y pinchamos en conexión de prueba para que nos solicite contraseña y comprobemos que se conecta.
Si la conexión no es correcta no veremos esta ventana, tendremos que revisar contraseña, y dirección ip del servidor.
Si todo es correcto seguiremos pulsando siguiente hasta completar el proceso y ver una ventana como esta.
Salvas la base de datos de libreoffice.
Después enlazas una hoja de cálculo con la base de datos, abres la hoja de cálculo y pulsas F4
Ahora te aparecerán todas las bases de datos de libreoffice que tengas y tendrar que elegir la que quieres y dentro de ella la consulta que quieres. Como se pude ver en nuestro ejemplo sería i5, consultas, consulta1
Una vez eliges la consulta te pedirá usuario y contraseña (el mismo que hemos usado antes) y te mostrará los registros, pulsas sobre el botón datos en texto y te pasará los datos a la hoja de cálculo.
Si no te aparece la base de datos que grabaste cuando pulsas F4, revisa la ubicación que le diste al grabar y añádela desde opciones, libreoffice base, base de datos.
Todo esto se puede aplicar tanto a windows (xp y 7) como a linux (debian, ubuntu, opensuse, fedora...)
Bueno, creo que ya hemos terminado, espero que os sirva de utilidad y para demostrar el potencial del software libre.
Suscribirse a:
Entradas (Atom)
Conduce entre la niebla
La culpa fue del spectrum






