http://www.teknodatips.com.ar Teknoda - Notas técnicas Tips de AS400 iseries System i Tip en detalle Nro. 11 (Lo nuevo, lo escondido, o simplemente lo de siempre pero bien explicado) "Tips en breve/tips en detalle" se envía con frecuencia variable y absolutamente sin cargo como un servicio a nuestros clientes AS/400. Contiene principalmente notas técnicas y no contiene mensajes publicitarios. Conteste este mail con asunto REMOVER si no desea recibir más esta publicación.. Si desea suscribir otra dirección de e-mail para que comience a recibir los Tips, envíe un mensaje desde esa dirección a letter400@teknoda.com, aclarando nombre, empresa y cargo del suscriptor. COMO AUTOMATIZAR TRANSFERENCIAS DE ARCHIVOS CON TCP/IP DESDE AS/400 Tema: Utilidad: Nivel: Versión: Comunicaciones, TCP/IP, File-Transfer Automatización de transferencias en forma batch. Avanzado Todas Lista de Tips publicados hasta la fecha : 1. Modificación de los parámetros por default que rigen en los comandos del OS/400 2. Restricción de comandos pesados a modalidad batch 3. Cómo generar un entorno de prueba para año 2000 4. Cómo salvar y restaurar spool 5. Cómo agregar pantallas de confirmación/validación para comandos delicados 6. Defragmentación del espacio en disco no utilizado : STRDSKRGZ, ENDDSKRGZ 7. Manipulación de bases de datos desde programas CL, a través de Query/400 8. Generación de spool AS/400 en formato PDF (Adobe Acrobat Reader) para almacenar en CD s 9. Cómo proteger columnas de un archivo físico o lógico 10. Cómo cambiar la pantalla de signon Temas de próximos tips: Auditoría sobre objetos en AS/400 Control de accesos sobre archivos en spool
Introducción El intercambio de grandes cantidades de datos entre computadoras siempre ha sido uno de los principales requerimientos dentro de cualquier departamento de tecnología informática. Debido a la generalización del uso de TCP/IP, la aplicación FTP (File Transfer Protocol) se ha convertido en uno de los servicios más utilizados para enviar, recibir y compartir archivos a través de redes. La aplicación FTP es una de las que integran la suite de aplicaciones TCP/IP, y por lo tanto, suele ser provista por el mismo proveedor del protocolo (ver notas finales). Consta de dos partes: el módulo cliente y el módulo servidor. Cada una de ellas tiene su propio conjunto de subcomandos. La acción se inicia a partir de subcomandos ingresados al cliente FTP, quien dispara los subcomandos necesarios del servidor FTP. El cliente FTP contempla subcomandos para establecer una conexión con un servidor FTP remoto, navegar bibliotecas y directorios, crear y suprimir archivos, y por supuesto, transferirlos. NOTA: Se considera cliente FTP al sistema que inicia la petición de transferencia independientemente de dónde residan los archivos a transferir y el sentido de la misma. Los subcomandos del cliente FTP pueden ingresarse uno por vez, cada vez que se requiera una operación (Modo manual), o incluírse dentro de un script FTP que se ejecutará batch bajo una planificación previamente definida (Modo automático). Si se utiliza la modalidad manual, el usuario debe realizar los siguientes pasos: Arrancar el cliente FTP, especificando la dirección IP del sistema remoto (o en su defecto el nombre del sistema). Ingresar un identificador de usuario y contraseña. Ejecutar la secuencia de subcomandos FTP necesarios (GET, PUT, etc.) Finalizar el cliente FTP. Cuando es necesario ejecutar transferencias masivas periódicamente, el ingreso manual de subcomandos del cliente FTP puede tornarse una tarea tediosa. Por lo tanto, es importante considerar la automatización del proceso desde un trabajo batch. También es aplicable la ejecución automática cuando la transferencia se invoca, por ejemplo, desde otra aplicación. En este tip, tratamos el caso de una transferencia iniciada por un cliente AS/400, desde o hacia otro sistema AS/400. Parte de lo aquí tratado es aplicable a la ejecución desatendida de transferencias, iniciadas por un AS/400 desde o hacia PC. En este caso, debe disponer de un FTP Server en la PC con la que se comunica. Ejemplo de implementación de FTP batch Modo automático Para llevar a cabo el proceso de automatización de FTP asumimos, en este caso, que un AS/400 es el sistema que está solicitando la transferencia de archivos (es decir, toma el rol de cliente FTP) hacia otro AS/400 que tiene instalada la porción servidor. Además del/los archivos a transferir, deben intervenir en el proceso los siguientes elementos:
Un archivo que contenga los subcomandos FTP (script) Un programa CL que iniciará el FTP y ejecutará los subcomandos del script. Un archivo vacío que almacenará los mensajes generados luego de la corrida del script. 1) Creación del Script de subcomandos FTP: La siguiente pantalla muestra como sería el script FTP, con las características de la transferencia que se desea realizar. Este debe estar almacenado como miembro fuente de tipo TXT dentro de un objeto *FILE PF-SRC: FTPTXT 0001.00 usuario contraseña 0002.00 get qgpl/prueba.prueba replace 0003.00 get qgpl/clientesx.clientes 0004.00 get qgpl/datosxxx.datos 0005.00 quit La sentencia 0001.00 debe contener el nombre del usuario y la contraseña del sistema remoto. Las sentencias que le siguen especifican los subcomandos FTP que bajan datos al cliente. Luego se finaliza la sesión FTP (subcomando quit). 2) Creación del Programa CL Deberá generarse también el código CL necesario para el arranque del FTP y la ejecución del script: CLFTP 0001.00 PGM 0002.00 OVRDBF FILE(INPUT) TOFILE(QGPL/QFTPSRC) MBR(FTPTXT) 0003.00 OVRDBF FILE(OUTPUT) TOFILE(QGPL/QFTPSRC) MBR(FTPLOG) 0004.00 STRTCPFTP RMTSYS( xxx.xxx.xxx.xxx ) 0005.00 DLTOVR FILE(INPUT) 0006.00 DLTOVR FILE(OUTPUT) 0007.00 ENDPGM La sentencia 0002.00 efectúa una alteración temporal del INPUT del FTP para que los subcomandos a ejecutar sean los del miembro FTPTXT mostrado en el paso anterior. En la sentencia que sigue, se redirecciona la salida de los mensajes del servidor FTP al miembro FTPLOG. Luego, el comando STRTCPFTP arranca el cliente FTP especificando la
dirección IP del sistema remoto. Este mandato es el que, en definitiva da origen a la ejecución del script FTP. Luego se eliminan las alteraciones temporales y finaliza el programa. 3) Programación de la transferencia Para que la ejecución del programa CL no dependa de una invocación manual, puede agregarse una entrada a la lista de trabajos planificados desde el comando WRKJOBSCDE, o dispararla desde otro proceso, etc. 4) Archivo con mensajes de ejecución del script Luego de la ejecución del programa CL, FTPLOG contendrá lo siguiente: FTPLOG 0001.00 Se ha redirigido la salida a un archivo. 0002.00 Lectura de entrada del archivo de la alteración temporal especificado. 0003.00 Conectando con el sistema principal remoto xxx.xxx.xxx.xxx utilizando el 0004.00 puerto 21. 0005.00 220-QTCP at AS400_s10. 0006.00 220 Connection will close if idle more than 60 minutes. 0007.00 Entre el ID de inicio de sesión (teknet): 0008.00 331 Enter password. 0009.00 230 TEKNET logged on. 0010.00 OS/400 is the remote operating system. The TCP/IP version is "V4R4M0". 0011.00 250 Now using naming format "0". 0012.00 257 "QGPL" es la biblioteca actual. 0013.00 Entre un submandato FTP. 0014.00 > get qgpl/prueba.prueba 0015.00 227 Entering Passive Mode (xxx,xxx,xxx,xxx,19,189). 0016.00 150 Retrieving member PRUEBA in file PRUEBA in library QGPL. 0017.00 250 File transfer completed successfully. 0018.00 33 bytes transferidos en 1.826 segundos. Velocidad de transferencia 0019.00 KB/seg. 0020.00 Entre un submandato FTP. 0021.00 > get qgpl/clientesx.clientes 0022.00 250 Now using naming format "0". 0023.00 257 "QGPL" es la biblioteca actual. 0024.00 227 Entering Passive Mode (xxx,xxx,xxx,xxx,19,190). 0025.00 150 Retrieving member CLIENTES in file CLIENTESX in library QGPL. 0026.00 250 File transfer completed successfully. 0027.00 15 bytes transferidos en 1.696 segundos. Velocidad de transferencia 0028.00 KB/seg. 0029.00 Entre un submandato FTP. 0030.00 > get qgpl/datosxxx.datos 0031.00 227 Entering Passive Mode (xxx,xxx,xxx,xxx,19,191). 0032.00 150 Retrieving member DATOS in file DATOSXXX in library QGPL. 0033.00 250 File transfer completed successfully. 0034.00 15 bytes transferidos en 1.772 segundos. Velocidad de transferencia 0035.00 KB/seg. 0036.00 Entre un submandato FTP. 0037.00 > quit 0038.00 221 QUIT subcommand received.
Si el miembro FTPLOG no existe, es creado en forma automática; en caso contrario, el output generado por cada corrida del programa CL se agrega a continuación de las entradas producidas por la corrida previa. Es aconsejable eliminar este miembro luego de cada corrida. Para tener en cuenta... El TCP/IP en AS/400 incluye tanto el módulo cliente como el servidor de FTP. En PC, no siempre se dispone del módulo servidor. Por ejemplo, CA/400 no ofrece FTP Server, pero sí lo ofrece Reflection, o Windows NT. Observar en el log generado luego de la corrida de un script, que si existiesen errores, el proceso no se detiene y aparecerán mensajes de error como consecuencia de errores anteriores (Ej: si el usuario o la contraseña son incorrectos, se mostrará un mensaje de error para esta sentencia y, en el ejemplo, para los gets que siguen hasta el quit que finaliza el script). FTP puede procesar datos almacenados en el IFS (Integrated File System). FTP puede utilizarse solamente para la transferencia de archivos físicos, lógicos o de salvar. Para transferir otro tipo de objetos, un programa por ejemplo, deberá salvarse previamente en un archivo de salvar y enviar este último vía FTP. En el sistema destino, deberá restaurarse el objeto salvado. Al menos que se esté usando FTP anónimo, un identificador de usuario y su password siempre son requeridos. Para implementar protecciones sobre las posibilidades del FTP, es posible agregar exit programs sobre los exits points provistos por OS/400. En el caso de transferencias desde AS/400 hacia PC, se podrá aplicar la misma técnica desarrollada anteriormente, teniendo en cuenta que la PC debe tener instalado un servidor FTP. http://www.teknodatips.com.ar Copyright 2000 Teknoda S.A. - AS/400 y OS/400 son marcas registradas de IBM. Dudas o consultas a nsalmun@teknoda.com