lunes, 17 de julio de 2017

FTP desde JCL

Muchas veces nos preguntamos cómo se crea un FTP desde cero, sin embargo no existe un manual o un estándar, que nos indique, como debe de ser generado.
Como estamos en el camino, los ayudaré dando la pauta con lo básico para que lo puedas crear. Antes de nada podemos decir de los FTP’S:
  •  File Transfer Protocol, es un protocolo con una arquitectura cliente – servidor que te permite transferir archivos entre tu servidor local y un servidor FTP.
  •  Debes de identificar que el FTP que quieras generar es cliente. (Si es así es porque tu deseas transferir archivos a un alojamiento, o a un directorio).
  • Que existen varias maneras de transferir ficheros desde el host por FTP, pero que aquí veremos el caso del PGM=FTP en un proceso batch (job) al que le pasaremos parámetros utilizando el PARM.
  •  Podemos utilizar el nombre del servidor o su dirección IP utilizando el puerto 21.

//FTPSON   JOB,'FTP CONSULTORIO',
//             CLASS=P,MSGCLASS=S,REGION=0M
//*
//PASO01   EXEC PGM=FTP,REGION=2048K,
//         COND=(4,LT),
//          PARM='(EXIT=08 TIMEOUT 20'
//SYSMDUMP   DD SYSOUT=*
//SYSPRINT   DD SYSOUT=*
//OUTPUT     DD SYSOUT=*
//INPUT      DD *
nombre.servidor ó DIRECCIÓN IP
Usuario Contraseña
CD /Directorio/destino
PUT 'FICHERO.DEL.HOST' fichero.txt
QUIT

Donde:
EXEC PGM=FTP: necesario para hacer un ftp
REGION=2048K es lo mínimo, se puede aumentar
EXIT=08 significa que en caso de error el job devolverá un return code 08, se puede indicar otro valor
timeout=20 significa que va a esperar 20 segundos a que se haga el envío y si tarda más dará error, se puede indicar otro valor

En la información del INPUT, vemos que tenemos mayúsculas y minúsculas. Para ello hemos tecleado CAPS OFF en la línea de comandos.

El nombre del servidor es el mismo que se utiliza en un software FTP como filezilla:

El usuario y contraseña será el mismo que tengamos configurado para el acceso a ese servidor.
La dirección de destino la indicamos con el comando CD (change directory):

El fichero de nuestro host (el fichero local) se indica entre comillas simples, y el fichero destino no lleva comillas.
PUT 'FICHERO.DEL.HOST' fichero.txt
El comando PUT copia un fichero del host local al servidor destino.
El comando QUIT provoca la desconexión del servidor y finaliza la sesión FTP.

También se puede indicar el nombre del servidor en el PARM:
PARM='nombre.servidor (EXIT=08 TIMEOUT 20'

PARM='direcciónIP (EXIT=08 TIMEOUT 20'


Ambas formas las hemos probado y funcionan correctamente :-)


Otras formas de hacer un FTP:
//FTP00001 EXEC PGM = IKJEFT01, DYNAMNBR = 50
//OUT DD SYSOUT = *
//AMSDUMP DD SYSOUT = *
//SYSTSPRT DD SYSOUT = *
//SYSIN DD DUMMY
//SYSPRINT DD DUMMY
//OUTPUT DD SYSOUT = *
//SYSTSIN DD *
FTP (EXIT
Dirección IP
Usuario
Contraseña
Pwd
Ascii
Cd /Directorio/destino
Pwd
PUT 'FICHERO.DEL.HOST' fichero.txt
QUIT

Otra opción es utilizar el NETRC para especificar en ese fichero los datos del login (servidor, usuario y contraseña) de forma que así no queden visibles en el job. Por ejemplo:
machine nombre.servidor.com login usuario password contraseña


//FTPSON   JOB,'FTP CONSULTORIO',
//             CLASS=P,MSGCLASS=S,REGION=0M
//*
//PASO01   EXEC PGM=FTP,REGION=2048K,
//         COND=(4,LT),
//          PARM='(EXIT=08 TIMEOUT 20'
//SYSMDUMP   DD SYSOUT=*
//SYSPRINT   DD SYSOUT=*
//NETRC      DD DSN=FICHEROHLQ.NETRC,DISP=SHR
//OUTPUT     DD SYSOUT=*
//INPUT      DD *
CD /Directorio/destino
PUT 'FICHERO.DEL.HOST' fichero.txt
QUIT

Podéis encontrar mucha más información en la web de IBM en pdf.


Espero que este artículo, os haya servido, me dio mucho gusto volver a publicar, y espero ya no tardar tanto :D



2 comentarios:

joel dijo...

muy útil, gracias !

ROBY dijo...

Buenas TARDES, ESTOY EN ZOS y en el jcl cuando ingreso el nombre del servidor no me funciona (dice servidor desconocido) pero si pongo la IP si funciona. La interrogante es porque con el nombre no funciona y con a ip si.