Mandar TXT via FTP

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Mandar TXT via FTP

Mensagem por Alexandre Silva »

Meu cliente precisa mandar um arquivo txt pequeno,para o FTP de uma empresa diariamente..
tenho o nome de usuario e a senha..
Voces tem Alguma programa ou mesmo uma bat que eu posso utilizar, se voce e-mail usario o blat. mas é FTP

Obrigado
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Mandar TXT via FTP

Mensagem por sygecom »

Alexandre,
Por que você não tenta fazer um sisteminha em xHarbour para fazer esse trabalho, veja no link abaixo como é facil.
viewtopic.php?f=4&t=7968&p=44588&hilit=ftp#p44588
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Re: Mandar TXT via FTP

Mensagem por Dudu_XBase »



________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Re: Mandar TXT via FTP

Mensagem por Alexandre Silva »

Valeu
Vou fazer essa ftp -s scritp.txt e chamar no sistema

Fiquei com uma duvida:
Nao tem como, mandar para uma pasta especifica no servidor ?
Quando fizer o comando PUT nomedoarquivoquevai em que pasta vai cair ??
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Mandar TXT via FTP

Mensagem por asimoes »

Quando fizer o comando PUT nomedoarquivoquevai em que pasta vai cair ??
Olá,

Você tem que ter um servidor de ftp ativo e ter permissão para gravar na pasta destino.

Basicamente você vai precisar de um software servidor de ftp tipo ZFTPServer e provavelmente de uma conta em algum servidor de dns tipo dyndns.org

Há muito tempo atrás eu fiz isso.

Mas a melhor opção é transmitir os arquivos via email.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Mandar TXT via FTP

Mensagem por asimoes »

Alexandre,

Eu fiz este programa uns 5 anos atrás para fazer o que você tá querendo.

ftp.dbf

Código: Selecionar todos

Structure for database: D:\CDX\DOMINOS\GERE\FTP.DBF
Number of data records:       1
Date of last update   : 11/04/07
Code Page             : 0
Field  Field Name  Type       Width    Dec    Index  Collate
    1  HOST        Character     50                  
    2  USUARIO     Character     20                  
    3  SENHA       Character     15                  
    4  PORTA       Character      5                  
    5  PASTA       Character     10                  
    6  DIRFTP      Character     50                  
** Total **                     151

Código: Selecionar todos

Exemplo:

HOST     : seudns.ddns.com.br
USUARIO: convidado (definido no seu servidor de ftp)
SENHA   : convidado (definido no seu servidor de ftp)
PORTA   : 6112 (definida no servidor e no seu roteador)
PASTA   : exe  (pasta onde serão gravados os arquivos - servidor)
DIRFTP  : D:\EMPRESA\00012\DOC\ (pasta onde estão os arquivos a serem transmitidos)
COMFTP.PRG

Código: Selecionar todos

#include "inkey.ch"
#include "visual2.ch"
#include "ctscan.ch"
#include "Setcurs.ch"
#include "Error.ch"
#include "Achoice.ch"
#include "FileIO.ch"
#include "common.ch"

SET SCOREBOARD OFF
SET DELETED    ON
SET SAFETY     OFF
SET DATE       BRITISH
SET ESCAPE     ON
SET CENTURY    ON
SET DELIMITERS TO
SET CURSOR     OFF
SET EXCLUSIVE  OFF
SET WRAP       ON
SET INTENSITY  ON
SET EPOCH      TO 1964

REQUEST DBFCDX
RDDSETDEFAULT("DBFCDX")

PUBLIC cErro

PUBLIC cDirSys:=""

CLS

EGAPALETTE("GR",43)
EGAPALETTE("BG",9)  //9
EGAPALETTE("R+",36)
EGAPALETTE("R*",36)
EGAPALETTE("B+",11)
EGAPALETTE("G+",18)
EGAPALETTE("B",9)

SETBLINK(.F.)

VL850()

FreeTSlice(20)
ScrInicial := WIN(00,00,23,79," "+BLISERNUM()+" - ENVIO DE ARQUIVOS POR FTP ",WT_AZUL1CINZA,WD_AZUL1CINZA,.F.)
CLEARWIN(24,00,24,79,"B/W*")
aBtn := NewButton()
AddButton(aBtn,03,01,18,"&Enviar","Iniciar o Envio de Arquivos",.T.,{|| Enviar()})

SELECT 1
DO WHILE !NETUSE("FTP",.T.,0)
ENDDO
SELECT FTP
DBGOTOP()

lEnvio   :=.F.
lContinua:=.T.
WHILE .T.
   nOpcao := ProcButton(aBtn)
   IF !lContinua
      EXIT
   ENDIF
   IF lEnvio
      MsgBox3D1({"",;
                 " ARQUIVOS ENVIADOS COM SUCESSO",;
                 "",;
                 ""},;
                 "ATENۂO")        // SEGUNDO PARAMETRO (TITULO)
   ELSE
      MsgBox3D1({"",;
                 "OS ARQUIVOS NÇO FORAM ENVIADOS",;
                 "",;
                 "1 - VERIFIQUE SE Hµ CONEXÇO COM A INTERNET",;
                 "",;
                 "2 - VERIFIQUE SE O MODEM ESTµ LIGADO      ",;
                 "",;
                 "3 - VERIFIQUE SE Hµ ARQUIVOS PARA ENVIO   ",;
                 "",;
                 "4 - ENTRE EM CONTATO COM O SUPORTE        "},;
                 "ATENۂO")        // SEGUNDO PARAMETRO (TITULO)
      IF ALERTA("TENTAR NOVAMENTE O ENVIO ?",42) == 1
         KEYBOARD CHR(13)
         LOOP
      ELSE
         EXIT
      ENDIF
   ENDIF
ENDDO
CLOSE ALL
CLS
@23,00
QUIT

FUNCTION ENVIAR
IF LASTKEY() = 27
   lContinua:=.F.
   RETURN NIL
ENDIF
@05,01 SAY "Verificando Arquivos" COLOR "N/W"
aArq:={}
cFile:=FTP->DirFTP+"*.*" //FILESEEK("..\ENVIADO\*.*")
DO WHILE !EMPTY(cFile)
   AADD(aArq,cFile)
   cFile:=FILESEEK()
ENDDO
IF LEN(aArq) > 0
   @06,01 SAY "Gerando Script FTP" COLOR "N/W"
   ScriptFTP("*.doc")
   IF FILE("ENVIA.FTP")
      @07,01 SAY "Verificando ConexÆo" COLOR "N/W"
      SWPRUNCMD("ftp -n -i -s:envia.ftp > envio.ftp",0)
   ENDIF
   lEnvio:=CHKFTP()
   @09,01 SAY IIF(lEnvio,"Arquivos Enviados Com Sucesso","Arquivos NÆo Foram Enviados! ") COLOR "N/W"
   FILEDELETE("ENVIA.FTP")
   FILEDELETE("ENVIO.FTP")
ELSE
   ALERTA("NÇO Hµ ARQUIVOS PARA SEREM ENVIADOS!",2)
ENDIF
RETURN

FUNCTION CHKFTP
LOCAL lEnvio:=.F., v_Erro:=""
IF FILE("ENVIO.FTP")
   v_Erro:=MEMOREAD("ENVIO.FTP")
   IF AT("Goodbye",v_Erro) > 0
      lEnvio:=.T.
   ENDIF
ENDIF
RETURN lEnvio

FUNCTION CHKENVIO
LOCAL lEnvio:=.T., dDataFile
IF FILE("ENVIO.FTP")
   dDataFile:=FILEDATE("ENVIO.FTP")
   aRet := FSEARCH("ENVIO.FTP","Goodbye")
   IF LEN(aRet) > 0
      nHANDLE:=FOPEN("ENVIO.FTP")
      IF FERROR() = 0
         FSEEK(nHANDLE,aRet[1])
         cVar=FREADSTR(nHANDLE,7)
         IF !cVar $ "Goodbye"
            lEnvio := .F.
         ENDIF
      ELSE
         lEnvio := .F.
      ENDIF
      FCLOSE(nHANDLE)
   ELSE
      lEnvio := .F.
   ENDIF
ELSE
   lEnvio := .F.
ENDIF
RETURN lEnvio

FUNCTION SCRIPTFTP(cArquivos)
   DEFAULT cArquivos TO ""
   //SELECT 1
   //DO WHILE !NETUSE("FTP",.T.,0)
   //ENDDO
   //SELECT FTP
   //DBGOTOP()
   IF FILE("ENVIA.FTP")
      FILEDELETE("ENVIA.FTP")
   ENDIF
   SET DEVICE TO PRINTER
   SET PRINT ON
   SET PRINTER TO ENVIA.FTP
   SETPRC(0,0)
   nLin:=0
   @nLin,000 SAY "open "+LOWER(RTRIM(FTP->Host))+" "+RTRIM(FTP->Porta)
   nLin++
   @nLin,000 SAY "user "+LOWER(RTRIM(FTP->Usuario))+" "+LOWER(RTRIM(FTP->Senha))
   nLin++
   IF !EMPTY(FTP->Pasta)
      @nLin,000 SAY "cd "+LOWER(RTRIM(FTP->Pasta))
      nLin++
   ENDIF
   @nLin,000 SAY "mput "+LOWER(RTRIM(FTP->DirFTP))+cArquivos
   IF cArquivos=".txt"
      nLin++
      @nLin,000 SAY "mput "+LOWER(RTRIM(FTP->DirFTP))+cArquivos
   ENDIF
   nLin++
   @nLin,000 SAY "bye"
   SET PRINT OFF
   SET PRINTER TO
   SET DEVICE TO SCREEN
   //CLOSE FTP
RETURN NIL

FUNCTION ALERTA(cMensagem,nSituacao,cMen1,cMen2,cMen3,cMen4,cMen5)
LOCAL nOpcao:=1, nFoco:=1
DEFAULT nSituacao TO 1
DO CASE
CASE nSituacao = 1
   nOpcao := MsgBox2(cMensagem)
CASE nSituacao = 2
   DO CASE
   CASE PCOUNT() = 2
      MsgBox1(cMensagem)
   CASE PCOUNT() = 4
      MsgBox1({cMensagem,;
                        cMen1,;
                        cMen2})
   CASE PCOUNT() = 5
      MsgBox1({cMensagem,;
                        cMen1,;
                        cMen2,;
                        cMen3})
   CASE PCOUNT() = 6
      MsgBox1({cMensagem,;
                        cMen1,;
                        cMen2,;
                        cMen3,;
                        cMen4})
   CASE PCOUNT() = 7
      MsgBox1({cMensagem,;
                        cMen1,;
                        cMen2,;
                        cMen3,;
                        cMen4,;
                        cMen5})
   ENDCASE
CASE STR(nSituacao,2) $ "31,32,41,42"
   IF SUBST(STR(nSituacao,2),1,1) = "3"
      cBotao1:="Autoriza"
      cBotao2:="Cancela"
      nFoco  := VAL(SUBST(STR(nSituacao,2),2,1))
   ENDIF
   IF SUBST(STR(nSituacao,2),1,1) = "4"
      cBotao1:="Sim"
      cBotao2:="NÆo"
      nFoco  := VAL(SUBST(STR(nSituacao,2),2,1))
   ENDIF
   DO CASE
   CASE PCOUNT() = 2
      nOpcao := MsgBox2({cMensagem,;
                         cMen1},"Aten‡Æo",,cBotao1,cBotao2,nFoco,,WT_AZUL2BRANCO,WD_AZUL2BRANCO)
   CASE PCOUNT() = 3
      nOpcao := MsgBox2({cMensagem,;
                         cMen1    ,;
                         cMen2},"Aten‡Æo",,cBotao1,cBotao2,nFoco,,WT_AZUL2BRANCO,WD_AZUL2BRANCO)
   CASE PCOUNT() = 4
      nOpcao := MsgBox2({cMensagem,;
                         cMen1    ,;
                         cMen2    ,;
                         cMen3},"Aten‡Æo",,cBotao1,cBotao2,nFoco,,WT_AZUL2BRANCO,WD_AZUL2BRANCO)
   CASE PCOUNT() = 5
      nOpcao := MsgBox2({cMensagem,;
                         cMen1    ,;
                         cMen2    ,;
                         cMen3    ,;
                         cMen4},"Aten‡Æo",,cBotao1,cBotao2,nFoco,,WT_AZUL2BRANCO,WD_AZUL2BRANCO)

   CASE PCOUNT() = 6
      nOpcao := MsgBox2({cMensagem,;
                         cMen1    ,;
                         cMen2    ,;
                         cMen3    ,;
                         cMen4    ,;
                         cMen5},"Aten‡Æo",,cBotao1,cBotao2,nFoco,,WT_AZUL2BRANCO,WD_AZUL2BRANCO)
   ENDCASE
CASE nSituacao = 5
   nOpcao := MsgBox2(cMensagem,,,,,2)
ENDCASE
RETURN (nOpcao)


FUNCTION DWNMSG(cMsg,cCor)
IF PCOUNT() > 1
   @ 24,00 SAY PADC(cMsg,80) COLOR cCor        
ENDIF
RETURN NIL

FUNCTION NETUSE(cDatabase,lOpenMode,nSeconds,cDiretorio)
LOCAL lForever
DEFAULT nSeconds   TO 0  ,;
        lOpenMode  TO .F.,;
        cDiretorio TO ""
lForever := (nSeconds = 0)
DO WHILE (lForever .OR. nSeconds > 0)
   IF lOpenMode
      USE (cDirSys+cDatabase) EXCLUSIVE
   ELSE
      USE (cDirSys+cDatabase) SHARED // Shared
   ENDIF
   IF .NOT. NETERR()                    // USE succeeds
      RETURN (.T.)
   ENDIF
   INKEY(1)         // Wait 1 second
   nSeconds --
ENDDO
RETURN (.F.)        // USE fails
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Dudu_XBase
Membro Master
Membro Master
Mensagens: 1071
Registrado em: 25 Ago 2003 16:55

Re: Mandar TXT via FTP

Mensagem por Dudu_XBase »

Tarde...
dentro do script.txt adicione o comando cd <pasta> ai vc "inputa" o bixo onde se quisé....


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Responder