FTP como um trabalho batch
Para além de executar o cliente de FTP interativamente, também pode executá-lo no modo não assistido. Estão incluídos dois exemplos deste método nesta seção: um exemplo simples e um exemplo complexo.
FTP Batch: Um exemplo simples
Segue-se um exemplo simples da transferência de um arquivo batch que envolve a transferência com êxito de um arquivo de um sistema remoto.
Os componentes são os seguintes:
- Um programa de CL
- Um arquivo de input ou comandos de FTP
- Um arquivo de output ou mensagens de FTP
O Programa de CL
************************************************************ ITSOLIB1/QCLSRC BATCHFTP: ---------------------- PGM OVRDBF FILE(INPUT) TOFILE(ITSOLIB1/QCLSRC) MBR(FTPCMDS) OVRDBF FILE(OUTPUT) TOFILE(ITSOLIB1/QCLSRC) MBR(OUT) FTP RMTSYS(SYSxxx) ENDPGM ************************************************************
O programa BATCHFTP substitui o parâmetro INPUT para o arquivo físico origem ITSOLIB1/QCLSRC MBR(FTPCMDS). O output é enviado para MBR(OUT).
O Arquivo de Comandos de Input
************************************************************ ITSOLIB1/QCLSRC FTPCMDS: --------------------- ITSO ITSO CD ITSOLIB1 SYSCMD CHGCURLIB ITSOLIB2 GET QCLSRC.BATCHFTP QCLSRC.BATCHFTP (REPLACE QUIT ************************************************************
Os subcomandos de FTP obrigatórios estão apresentados no arquivo FTPCMDS.
O Arquivo de Mensagens de Output
************************************************************ Output FTP Redirecionado para um Arquivo Input FTP do Arquivo Substituído Ligar ao nome sistema central SYSxxx no endereço x.xxx.xx.xxx utilizando porta 21. 220-QTCP em SYSxxx.sysnam123.ibm.com. 220 Ligação será fechada se inativa mais do que 5 minutos. Introduzir ID início sessão (itso): > ITSO ITSO 331 Introduzir senha. 230 ITSO iniciado . OS/400 é o sistema operacional remoto. A versão de TCP/IP é "V3R1M0". 250 A utilizar formato nomenclatura "0". 257 "QGPL" é a biblioteca atual. Introduzir um subcomando de FTP. > CD ITSOLIB1 Introduzir um subcomando de FTP. 250 Biblioteca atual alterada para ITSOLIB1. > SYSCMD CHGCURLIB ITSOLIB2 Introduzir um subcomando de FTP. > GET QCLSRC.BATCHFTP QCLSRC.BATCHFTP (REPLACE 200 Pedido subcomando PORT com êxito. 150 Obter membro BATCHFTP no arquivo QCLSRC da biblioteca ITSOLIB1. 250 Transferência arquivos concluída com êxito. 147 bytes transferidos em 0,487 segundos. Velocidade transferência 0,302 KB/seg. Introduzir um subcomando de FTP. > QUIT 221 Subcomando QUIT recebido. ************************************************************
É apresentado o arquivo de output. É essencial escrever um programa para processar este arquivo e visualizar uma mensagem de erro na QSYSOPR, caso existam mensagens de erro. As mensagens de erro de FTP têm números que começam por 4 ou 5.
FTP Batch: Um Exemplo Complexo
O exemplo seguinte mostra como obter arquivos de vários sistemas centrais remotos para um iSeries AS/400 central em modo batch:
O utilizador GIL no iSeries AS/400 NOMESIS03 pretende:
- Obter arquivos dos sistemas centrais NOMESISRS (RS/6000) e MVAX (VAX).
- Após receber o arquivo do NOMESISRS, o arquivo deverá ser transferido para o NOMESIS02 (outro iSeries AS/400) através de FTP.
- A partir daí, o arquivo deverá ser enviado através de SNA para o iSeries AS/400 NOMESIS14.
Criar um Programa de CL pata Iniciar o FTP
- Tal como já vimos no exemplo anterior, o FTP utiliza a estação de visualização para INPUT de comandos e OUTPUT de mensagens e esta situação tem de ser substituída pela utilização em modo batch. Utilizamos o comando OVRDBF para substituir estes arquivos pelos comandos a utilizar em modo batch:
OVRDBF FILE(INPUT) TOFILE(GERRYLIB/QCLSRC) MBR(FTPCMDS) OVRDBF FILE(OUTPUT) TOFILE(GERRYLIB/QCLSRC) MBR(FTPLOG)
- Um nome de sistema central ou um endereço de internet é um parâmetro obrigatório para o comando STRTCPFTP que é incluído no arquivo do programa de CL. No entanto, se um utilizador pretender especificar os sistemas remotos no arquivo de comandos de input em vez do arquivo do programa de CL, terá de ser especificado um nome de sistema central fictício para que comando STRTCPFTP satisfaça a sintaxe necessária. Este nome fictício pode ser um nome de sistema central inventado ou real. Se for um nome real, a primeira entrada do arquivo de comandos de input tem de ser um ID de utilizador e uma senha e a segunda entrada tem de ser o subcomando CLOSE. Se não for um nome de sistema central real, estas entradas não são necessárias e a primeira entrada deverá ser um subcomando OPEN para ligar ao sistema servidor pretendido.
FTP RMTSYS(LOOPBACK)
O FTP processa o arquivo de input e escreve mensagens para o arquivo de output (FTPLOG). - Após a aplicação de FTP terminar, elimine as substituições:
DLTOVR FILE(INPUT OUTPUT)
O programa de CL para o FTP batch será semelhante ao seguinte exemplo no sistema NOMESIS01:___________________________________________________________________________________ | | | Colunas . . . : 1 71 Ver GERRYLIB/QCLSRC | | SEU==> FTPBATCH | | FMT ** ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 | | *************** Início dos dados ************************************** | | 0001.00 PGM | | 0002.00 OVRDBF FILE(INPUT) TOFILE(GERRYLIB/QCLSRC) + | | 0003.00 MBR(FTPCMDS) | | 0004.00 OVRDBF FILE(OUTPUT) TOFILE(GERRYLIB/QCLSRC) + | | 0005.00 MBR(FTPLOG) | | 0006.00 FTP RMTSYS(LOOPBACK) /* (Programa de CL de FTP) */ | | 0007.00 DLTOVR FILE(INPUT OUTPUT) | | 0008.00 ENDPGM | | ****************** Fim dos dados ************************************** | | | | | | F3=Sair F5=Atualizar F9=Recuperar F10=Cursor F12=Cancelar | | F16=Repetir procura F24=Mais teclas | | (C) COPYRIGHT IBM CORP. 1981, 1994. | | | |___________________________________________________________________________________|
Criar o Arquivo Input FTP (FTCPDMS)
Este arquivo tem de conter todos os subcomandos do cliente de FTP necessários para ligar e iniciar sessão no servidor, preparar a configuração e executar as transferências de arquivos, fechar a ligação ao servidor e terminar a sessão do cliente. O exemplo a seguir mostra os subcomandos utilizados para transferir arquivos para dois sistemas remotos diferentes.
___________________________________________________________________________________ | | | Colunas . . . : 1 71 Ver GERRYLIB/QCLSRC | | SEU==> FTPCMDS | | FMT ** ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 | | *************** Início dos dados ************************************** | | 0001.00 gwil **** | | 0002.00 close | | 0003.00 open sysnamrs | | 0004.00 user root root | | 0005.00 ascii | | 0006.00 syscmd dltf file(gerrylib/rs6) | | 0007.00 get /Itsotest gerrylib/rs6.rs6 | | 0008.00 close | | 0009.00 open mvax | | 0010.00 user tester tester | | 0011.00 get screen1.file gerrylib/vax.vax (replace | | 0012.00 close | | 0013.00 open sysnam02 | | 0014.00 user gwil **** | | 0015.00 ebcdic | | 0016.00 put gerrylib/rs6.rs6 gerrylib/rs6.rs6 | | 0017.00 quote rcmd sndnetf file(gerrylib/rs6) tousrid((gwil sysnam14)) | | 0018.00 close | | 0019.00 quit | | ****************** Fim dos dados ************************************** | | F3=Sair F5=Atualizar F9=Recuperar F10=Cursor F12=Cancelar | | F16=Repetir procura F24=Mais teclas | | | |___________________________________________________________________________________|
Segue-se a explicação dos subcomandos do cliente de FTP mostrados acima. Os números de linha na tela correspondem aos números a seguir.
- 0001
- ID de utilizador e senha para a ligação fictícia no iSeries AS/400 cliente NOMESIS03.
- 0002
- Fechar ligação fictícia no iSeries AS/400 NOMESIS03.
- 0003
- Abrir ligação de controle ao RISC System/6000 NOMESISRS.
- 0004
- Subcomando USER com o ID de utilizador e senha para NOMESISRS.
Nota: Ao executar o FTP em modo batch, o subcomando USER tem de seguir o comando OPEN. Têm de ser fornecidos ambos os parâmetros ID de utilizador e senha para o subcomando USER. Este esquema é diferente quando se trabalha com o FTP interativamente online. Quando o FTP é executado interativamente online, o cliente inicia automaticamente um subcomando USER e pede-lhe que introduza um ID de início de sessão. Não existe subcomando USER automático quando o FTP é executado em modo batch.
- 0005
- Transferir dados ASCII (será convertido no iSeries AS/400 para/de EBCDIC).
- 0006
- Comando de CL a executar no iSeries AS/400 cliente: eliminar arquivo. Alternativa ao parâmetro (poderia ser utilizado REPLACE com a instrução seguinte).
- 0007
- Obter arquivo do sistema RISC System/6000
- 0008
- Fechar ligação de controle ao RISC System/6000 NOMESISRS.
- 0009
- Abrir ligação ao VAX MVAX.
- 0010
- Subcomando USER com o ID de utilizador e senha para MVAX.
- 0011
- Obter arquivo do VAX substituindo o arquivo do iSeries AS/400 existente.
- 0012
- Fechar ligação de controle ao VAX MVAX.
- 0013
- Abrir ligação de controle ao iSeries AS/400 NOMESISM02 remoto.
- 0014
- Subcomando USER com o ID de utilizador e senha para NOMESIS02.
- 0015
- Transferir dados EBCDIC (do mesmo modo que de iSeries AS/400 para iSeries AS/400).
- 0016
- Enviar arquivo do iSeries AS/400 para o iSeries AS/400 NOMESIS02 com TCP/IP.
- 0017
- Enviar este arquivo do iSeries AS/400 NOMESIS03 servidor para o iSeries AS/400 NOMESIS14 através da rede de SNA.
- 0018
- Fechar ligação de controle ao iSeries AS/400 NOMESIS02.
- 0019
- Terminar aplicação de FTP.
Criar Programa CL para Submeter o trabalho FTPBATCH
Para marcar as transferências de arquivos e executá-las sem assistência, crie um programa de CL que submeta o trabalho FTPBATCH. No exemplo seguinte, assume-se que as transferências de arquivos são executadas na próxima Sexta-feira, às 17:00 horas, no modo não assistido.
___________________________________________________________________________________ | | | Colunas . . . : 1 71 Ver GERRYLIB/QCLSRC | | SEU==> FTPSUBMIT | | FMT ** ...+... 1 ...+... 2 ...+... 3 ...+... 4 ...+... 5 ...+... 6 ...+... 7 | | *************** Início dos dados ************************************** | | 0001.00 PGM | | 0002.00 SBMJOB CMD(CALL PGM(GERRYLIB/FTPBATCH)) + | | 0003.00 JOB(FTPFRIDAY) OUTQ(QUSRSYS/GERRYQ) + | | 0004.00 SCDDATE(*FRI) SCDTIME(170000) /* FTP for + | | 0005.00 Sexta-feira, 5:00 da tarde */ | | 0006.00 ENDPGM | | ****************** Fim dos dados ************************************** | | | | F3=Sair F5=Atualizar F9=Recuperar F10=Cursor F12=Cancelar | | F16=Repetir procura F24=Mais teclas | | (C) COPYRIGHT IBM CORP. 1981, 1994. | | | |___________________________________________________________________________________|
Procure quaisquer Erros no Arquivo Output FTP
Ao ser executado à hora marcada, o FTP cria os dados no membro de arquivo FTPLOG mostrado em cima. Os dados no membro de arquivo FTPLOG correspondem a instruções originais encontradas em ambos os exemplos.
___________________________________________________________________________________ | | | A ligar ao sist. central LOOPBACK no endereço 27.0.0.1 usando a porta 21.| | 220-QTCP no sistema central local. | | 220 A ligação será fechada se inativa durante mais de 5 minutos. | | Introduzir ID de início de sessão (gwil): | | | | >>>GWIL **** | | 331 Introduzir senha. | | 230 GWIL iniciou sessão. | | OS/400 é o sistema operacional remoto. A versão do TCP/IP é "V4R2M0". | | 250 A utilizar o formato de nomenclatura "0". | | 257 "QGPL" é a biblioteca actual. | | Introduzir um subcomando de FTP. | | | | > CLOSE | | 221 Subcomando QUIT recebido. | | Introduzir um subcomando de FTP. | | | | > OPEN NONMESISRS | | A ligar ao sist. central NOMESISRS no endereço 9.4.73.198 usando a porta 21. | | 220 Servidor de FTP nomesisrs.nomesis123.ibm.com (Versão 4.9 Qui, 2 de Setembro | | 20:35:07 CDT 1993) preparado. | | | | Introduzir um subcomando de FTP. | | | |___________________________________________________________________________________|
Output de FTP (FTPLOG) Após a Execução do Programa FTPBATCH (Parte 1)
___________________________________________________________________________________ | | | > Raiz de USER **** | | 331 Senha obrigatória para raiz | | 230 Raiz de utilizador com sessão iniciada. | | Tipo UNIX: Versão L8: BSD-44 | | Introduzir um subcomando de FTP. | | | | > ASCII | | 200 Tipo definido como A; formato definido como N. | | Introduzir um subcomando de FTP. | | | | > SYSCMD DLTF FILE(GERRYLIB/RS6) | | Introduzir um subcomando de FTP. | | | | > GET /Itsotest GERRYLIB/RS6/RS7 | | 200 Comando PORT executado com êxito | | 150 A abrir ligação de dados para /Itsotest (467 bytes). | | 226 Transferência concluída. | | 467 bytes transferidos em 2,845 segundos. Velocidade de transf. 0,167 KB/seg. | | Introduzir um subcomando de FTP. | | | |___________________________________________________________________________________|
Output de FTP (FTPLOG) após Executar o Programa FTPBATCH (Parte 2)
___________________________________________________________________________________ | | | > CLOSE | | 221 Adeus. | | Introduzir um subcomando de FTP. | | | | > OPEN MVAX | | A ligar ao sistema central mvax no endereço 9.4.6.252 usando a porta 21. | | 220 Serviço de FTP Preparado | | Introduzir um subcomando de FTP. | | | | > USER TESTE ****** | | 331 Nome de utilizador TESTE recebido, enviar palavra-passe. | | 230 TESTE com sessão iniciada, directório $DISK1:[TESTE] | | Introduzir um subcomando de FTP. | | | | GET SCREEN1.FILE GERRYLIB/VAX.VAX (REPLACE | | 200 Comando PORT com êxito. | | 125 Transf. ASCII iniciada para $DISK1:[TESTER SCREEN1.FILE;1(266586 bytes) | | 226 Transferência de ficheiros concluída com êxito. | | 265037 bytes transferidos em 8,635 segundos. Velocidade de transf 30,694 KB/seg.| | Introduzir um subcomando de FTP. | | | | > CLOSE | | 221 Adeus. | | Introduzir um subcomando de FTP. | | | | OPEN NOMESIS02 | | A ligar ao sistema central NOMESIS02 no endereço 9.4.73.250 usando a porta 21. | | 220-QTCP em NOMESIS02.nomesis123.ibm.com. | | 220 A ligação será fechada se inativa durante mais de 5 minutos. | | Introduzir um subcomando de FTP. | | | |___________________________________________________________________________________|
Output de FTP (FTPLOG) após Executar o Programa FTPBATCH (Parte 3)
___________________________________________________________________________________ | | | > USER GWIL **** | | 331 Introduzir senha. | | 230 GWIL iniciou sessão. | | OS/400 é o sistema operacional remoto. A versão do TCP/IP é "V4R2M0". | | 250 A utilizar o formato de nomenclatura "0". | | 257 "QGPL" é a biblioteca actual. | | Introduzir um subcomando de FTP. | | | | > EBCDIC | | 200 Tipo de representação é EBCDIC sem impressão. | | Introduzir um subcomando de FTP. | | | | > PUT GERRYLIB/RS6.RS6 GERRYLIB/RS6.RS6 | | 200 Pedido do subcomando PORT executado com êxito. | | 150 A enviar ficheiro para o membro RS6 do ficheiro RS6 na biblioteca GERRYLIB. | | 250 Transferência de ficheiros concluída com êxito. | | 467 bytes transferidos em 0,148 segundos. Velocidade de transf 3,146 KB/seg. | | Introduzir um subcomando de FTP. | | | | > RCMD SNDNETF FILE(GERRYLIB/RS6) TOUSRID((GERRYLIB SYSNAM14)) | | 250 Comando SNDNETF FILE(GERRYLIB/RS6) TOUSRID((GWIL SYSNAM14)) | | executado com êxito. | | Introduzir um subcomando de FTP. | | | |___________________________________________________________________________________|
___________________________________________________________________________________ | | | > CLOSE | | 221 Comando QUIT recebido. | | Introduzir um subcomando de FTP. | | > QUIT | | (Este comando termina a aplicação de FTP). | | | |___________________________________________________________________________________|
Output de FTP (FTPLOG) após Executar o Programa FTPBATCH (Parte 5)
Deverá verificar se existem erros, neste output, que possam ter ocorrido durante o processamento de FRP. Pode verificar visualmente ou executar um programa que testa códigos de resposta de erro. Os códigos de resposta de FTP de três dígitos começam por 4 ou 5. Tenha o cuidado de evitar mensagens como, por exemplo, '467 bytes transferidos...'.
Procedimento Exemplo: Um procedimento de REXX exemplo e um membro de arquivo físico exemplo são fornecidos como parte do produto TCP/IP. O arquivo QATMPINC da biblioteca QTCP inclui os seguintes dois membros:
- BATCHFTP, que contém o código origem de REXX para especificar os arquivos batch de input e output e iniciar o FTP.
- BFTPFILE, que contém os subcomandos e dados necessários para iniciar sessão e executar o FTP.