Pessoal, tenho uma aplicação que faz o envio de arquivo via FTP sem problemas, só que tenho a seguinte duvida:
Após enviar o arquivo FTP quero executar um comando dentro do diretório onde está o arquivo. Para isto eu executo o seguinte método:
public static void executaComando(String comando)
throws Exception{
Process processo = Runtime.getRuntime().exec(comando);
processo.exitValue();
}
Só que este método está executando localmente e não no servidor onde se econtra o arquivo que foi movido por FTP. Alguem poderia me dar uma dica de como fazer isto?
Este é meu método que faz a movimentação do arquivo por FTP.
Via ftp não existe (não que eu saiba). Você pode fazer um script no servidor que leia o diretório e veja se o arquivo terminou o upload e executar o comando. Ou conectar por ssh em java. Bom, eu aconselho a primeira opção.
V
ViniGodoy
O protocolo FTP não suporta o envio de um comando para o servidor. O que você quer, por FTP, não é possível.
Talvez seja possível se você tiver algum acesso, como SSH, à máquina servidora.
A
anderson.bonavides
Este é o comando que estou querendo executar:
put <Parametro 1> tllib01 <Parametro 2>
E
entanglement
Existem alguns comandos que se podem executar em um cliente FTP. Entretanto, o comando “put” normalmente não precisa de nenhum parâmetro (sem ser o nome do arquivo origem e do destino) se você simplesmente usar o FTPClient; se estiver precisando de algum parâmetro, aí você precisa ver que raios de parâmetros são esses, e ver quais são os comandos do FTPClient que podem ser necessários para enviá-los.
Por exemplo, se você precisa setar alguma opção como binária (que normalmente é o caso para transmitir arquivos, senão eles costumam chegar corrompidos) você deve usar alguma opção como “FTP.FTP_BINARY_FILE_TYPE”.
Para mandar comandos, use sendCommand ( http://commons.apache.org/net/api/org/apache/commons/net/ftp/FTP.html#sendCommand(java.lang.String) ) http://commons.apache.org/net/api/org/apache/commons/net/ftp/FTPClient.html
A
anderson.bonavides
Obrigado entanglement, vou dar uma olhada em tudo com calma.
Grato!
A
anderson.bonavides
Esse seria o comandando correto a ser enviado pelo sendCommand(“put 03112010 tllib01(03112010)”);
E
entanglement
O primeiro é o nome do arquivo-origem (“03112010”) e o segundo, o nome do arquivo-destino (“tllib01(03112010)”), pelo que imagino.
Esse nome é bem curioso, parece que você está fazendo FTP para algum sistema operacional esquisito . Que sistema operacional está usando nomes de arquivos com parênteses?
Ou é um Unix ou Windows mesmo (onde o “(” é um caracter válido para nomes de arquivos, embora seja pouco usado porque parece uma pontuação)?
Você teria de usar o método “put” mesmo, já que sendCommand serve apenas para alguns comandos especiais que são dependentes do FTP server.
Esse cara é executado do próprio cliente FTP e retorna um boolean caso a operação seja executada com sucesso.
Da uma olhada melhor na API e ve se te ajuda