Comando FTP ls - Retorna o arquivo vazio

2

Estou tentando recuperar uma lista de arquivos de um servidor FTP remoto usando o comando ls. Ao executar ls sozinho na linha de comando, ele lista os arquivos. Ao adicionar um nome de arquivo ao comando, ele retorna um arquivo vazio.

Meu código funciona perfeitamente em vários outros servidores ftp (provavelmente configuração de servidor diferente). Não tenho certeza do que está errado.

ftp> Packet tracing On .
ftp> trace on
Connected to ************.
OPEN ************
220 ************ FTP server ready.
User (*****************): 
331 Password required for ********.
230 User ********* logged in.  Access restrictions apply.
ftp> CD incoming
250 CWD command successful.
ftp> Local directory now C:\csrkb\etl\files\incoming\TASK0460\txt\FTP_OBJ_LIST.
ftp> LCD C:\csrkb\etl\files\incoming\TASK0460\txt\FTP_OBJ_LIST
ftp> ls - FTP_OBJECT_LIST.TXT
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
226 Transfer complete.
ftp> BYE
221-You have transferred 0 bytes in 0 files.
221-Total traffic for this session was 12603 bytes in 2 transfers.
221-Thank you for using the FTP service on ftp-out.
221 Goodbye.
    
por Gary 01.06.2011 / 15:02

2 respostas

1

Por que você está usando o painel depois de ls? O servidor remoto está retornando uma lista vazia. Eu procuraria nos logs do servidor FTP. Faça também uma captura de rede com o Wireshark. Se você tiver um firewall L7, faça uma captura no servidor e compare as duas capturas.

    
por 01.06.2011 / 15:40
2

Os comandos ls e dir no ftp destinam-se a ter um diretório remoto como um primeiro parâmetro, não um nome de arquivo - fazer isso com um nome de arquivo pode ou não funcionar, dependendo do servidor ftp. A sintaxe é:

ls [remote-dir] [local-file]
  • Se nenhum parâmetro for passado, o diretório atual será listado.
  • Se um parâmetro for passado, ele será considerado um diretório e será listado
  • Se o segundo parâmetro for passado, será um arquivo local e a saída será enviada para isso.
  • Se o segundo parâmetro for omitido ou for um hífen, a saída será enviada para o terminal

Ter um hífen imediatamente após a parte 'ls' com algo a seguir não é um comando válido, portanto, quem sabe o que ele fará. Como está especificando um nome de arquivo como o primeiro parâmetro. Deve ser apenas um nome de diretório remoto.

    
por 01.06.2011 / 16:41

Tags