Por que meu arquivo de saída do FTP está em branco?

4

No prompt de comando do Windows, tenho o FTPd em um servidor da Web do Windows. Eu posso get um arquivo, e eu posso ver uma listagem de diretório com dir , mas eu quero salvar essa lista localmente.

Eu tentei dir > c:\somefile.txt e o arquivo foi criado, mas está em branco . A mesma coisa se eu fizer ls > c:\somefile.txt .

O resultado é o mesmo quando eu FTP de uma caixa Linux.

O FTP envia de volta o seguinte:

200 PORT command successful
150 Opening ASCII mode data connection for /bin/ls
226 Transfer complete
    
por Nathan Long 17.06.2009 / 22:33

8 respostas

2

Isso provavelmente ocorre porque o FTP.exe assume o controle do shell. Portanto, os redirecionamentos que são tratados pelo cmd.exe não surtem efeito.

O que você pode fazer é usar a opção -s: filename e redirecionar toda a saída do ftp para um arquivo. Ele conterá mais do que você quer, mas você pode cuidar disso mais tarde.

Ou, talvez, procure por outros clientes ftp que tenham essa funcionalidade (não estou ciente de nenhum).

    
por 17.06.2009 / 23:12
2

A resposta de Igal Serban está correta. Tente isso,

ftp -s:ftp.txt > ftp.log 2>&1

onde ftp.txt é um script, apenas uma lista de comandos, por exemplo,

help
pwd
quit

ftp.log irá capturar a saída. Adicionando o 2>&1 significa que você captura tanto saída padrão (saída normal) quanto erro padrão (qualquer mensagem de erro do ftp.exe ).

    
por 16.07.2009 / 08:32
2

Você pode colocar a listagem dir em um arquivo local fazendo:

dir [remote-directory] [local-file]

No seu caso, o comando seria

dir . c:\somefile.txt

Ele não responde a pergunta do porquê, mas realiza o que você está tentando fazer.

    
por 16.07.2009 / 08:40
1

A maneira mais simples é abrir pasta do computador, onde você vê todas as suas unidades. Aqui você precisa criar um atalho para o servidor ftp. Para fazer isso, no espaço vazio na pasta do computador, clique direito e clique em "Adicionar um local de rede", clique sobre ele e siga o prompt para criar um atalho para o seu servidor FTP de rede. Se você tem senha para isso ou é anônimo, faça isso. Você pode dar um nome também. Ele aparecerá em Local da rede na pasta Computador.  Agora clique duas vezes. Para abrir > ver, ler ou reproduzir e editar uma pasta ou seu arquivo, é necessário arrastar > copiar ou movê-lo para a área de trabalho. Você pode movê-lo de volta quando terminar. É um pouco incômodo, mas está funcionando para mim.  Espero que ajude vocês!

    
por 03.02.2016 / 19:18
1

Adenda à resposta de Martin Bøgelund:

A pergunta por quê (que eu suponho que é "por que a tentativa original fez o que fez") é interessante, e simples quando você pensa da maneira certa: é a mesma sintaxe dir [remote-directory] [local-file] , onde o diretório remoto por acaso é > . O cliente ftp não é um shell. Comandos digitados não são comandos shell. Ele não tem operadores de redirecionamento e > não é um caractere especial.

Sim, você pode ter um diretório chamado > em seu servidor FTP, contanto que você não o esteja executando no Windows.

O ftp.exe encontrado no Windows é uma cópia de um ftp inicial do BSD. Não sabe sobre as restrições de nome de arquivo do Windows. Se você informar a get remotefile > , ele tentará salvar uma cópia do arquivo remoto como um arquivo local chamado > e falhará devido às limitações do sistema de arquivos local.

Um dos principais contribuintes para a confusão aqui é que o servidor FTP, recebendo um comando LIST com > como argumento, respondeu com um código de sucesso e um corpo de resposta vazio em vez de dizer "Nenhum tal arquivo". / p>     

por 03.02.2016 / 20:43
0

Isso não responde realmente à pergunta, mas você considerou escrever um script para fazer isso e, em seguida, redirecionar a saída de um script?

link

    
por 17.06.2009 / 23:14
0

provavelmente o processo do servidor ftp não tem o direito de escrever para c :. Tente c: \ somedir \ somefile.txt em vez disso

    
por 02.07.2009 / 07:57
0
#!/bin/bash -vx
ftp -in bahugunazxc.com>>END_SCRIPT
quote USER bipin
quote PASS acs123
bin
prompt off
cd wbc/webr >>>
ls
END_SCRIPT

Salve este arquivo. por exemplo eu salvei com o nome de dp.sh . Depois disso, execute o comando:

./dp.sh > ftp.log
    
por 15.04.2011 / 17:02

Tags