30 agosto, 2013
FTP. Automatizar tranferencias en iSeries
Cuando tenemos tranferencias de archivos repetitivas mediante FTP, existe en el iSeries una manera bastante sencilla de automatizarlas de manera que haciendo una simple llamada a un programa CL podemos realizar la transferencia (o cualquier otra instrucción).
Para ello debemos definir 2 miembros de archivo de texto que utilizaremos, uno como entrada de mandatos a realizar, y un segundo como fichero de salida donde se archivarán todos los mensajes que el sistema vaya dejando conforme ejecuta las instrucciones indicadas.
Pero veamoslo más claro con un ejemplo.
Imaginemos que todos los días queremos enviar un fichero a un sistema remoto. en este caso es otro iSeries, pero no tiene porqué ser así. Es equivalente para cualquier servidor FTP.
Pues bien, crearemos, dentro de un archivo fuente del iSeries un miembro del tipo TXT donde indicaremos paso a paso que queremos que el servidor vaya ejecutando, por ejemplo en miembro INFTP del archivo QTXTFTP….
open sistema_remoto user nombre password bin quote rcmd clrsavf file(csqvr/jbc) put csqvr/jbc csqvr/jbc quit
Lo primero que debemos hacer es conectarnos al sistema remoto mediante la instrucción open seguida del nombre o la ip del sistema, y seguidamente debemos indicar el usuario y la password con la que conectarnos al sistema con la instrucción user.
Una vez conectados ya podemos indicarle todas las instrucciones que deseemos que realice, en este caso, queremos que cambie a transferencias binarias ya que el destino es otro iSeries mediante la instrucción bin, luego le indicamos con la palabra clave quote que queremos ejecutar un mandato del sistema que en este caso es que borre el archivo en cuestión del sistema destino. A partir de ahí enviamos el archivo con un put y hacemos un quit para finalizar. No entraré en detalles de las instrucciones FTP, ya que estamos hablando de como automatizarlas.
Una vez creado el fichero de entrada, hacemos lo mismo con el de salida, por ejemplo OUTFTP, pero este lo dejamos en blanco ya que aquí es el servidor FTP el que escribe los resultados.
Bien, pues ya sólo nos queda decir al FTP que ejecute el fichero INFTP y deje el resultado en OUTFTP.
Para ello basta con cambiar mediante los parametros OVRDBF el archivo INPUT y OUTPUT del trabajo FTP y ejecutar el mandato FTP indicando un servidor cualquiera, ya que la primera instrucción cambia la conexión al sistema remoto.
OVRDBF FILE(INPUT) TOFILE(CSQVRSRC/QFTPTXT) MBR(INFTP) OVRDBF FILE(OUTPUT) TOFILE(CSQVRSRC/QFTPTXT) MBR(OUTFTP) FTP RMTSYS(Sistema)
Con estas 3 instrucciones le decimos al sistema que utilice el miembro INFTP del archivo QFTPTXT de la biblioteca CSQVRSRC como entrada y el miembro OUTFTP del mismo archivo como salida y que ejecute el mandato FTP.
El resultado de estas instrucciones es el envío del fichero jbc de la biblioteca csqvr de un sistema a otro y en el miembro OUTFTP nos dejará algo similar a esto…
Se ha redirigido la salida a un archivo. Lectura de entrada del archivo de la alteración temporal especificado. Conectando con el sistema principal sistema en la dirección 111.111.111.111 220-QTCP at sistema. 220 Connection will close if idle more than 5 minutes. Entre el ID de inicio de sesión (user): 331 Enter password. 530 Log on attempt by user OPEN rejected. Entre un submandato FTP. > user usuario ******** 331 Enter password. 230 usuario logged on. OS/400 is the remote operating system. The TCP/IP version is "V7R1M0". 250 Now using naming format "0". 257 "QGPL" is current library. Entre un submandato FTP. > bin 200 Representation type is binary IMAGE. Entre un submandato FTP. > quote rcmd clrsavf file(csqvr/jbc) 250 Command clrsavf file(csqvr/jbc) successful. Entre un submandato FTP. > put csqvr/jbc csqvr/jbc 229 Entering Extended Passive Mode (|||32927|). 150 Sending file to member JBC in file JBC in library CSQVR. 226 File transfer completed successfully. 573408 bytes transferidos en 1,981 segundos. Velocidad de transferencia Entre un submandato FTP. > quit 221 QUIT subcommand received.
no me funciono
Hola, si quieres explicarme que problema te da tal vez pueda ayudarte. A mi me funciona perfectamente. Tengo varios procesos de carga y descarga automatizados.
hay que quita la primera linea del archivo de texto