Conexao SFTP

5 respostas
V

Boa tarde pessoal, estou desenvolvendo um aplicativo para transferir alguns dados de um servidor para outro.
Vamos a Situação, aqui são enviados arquivos XML via página, esses arquivos ficam em um servidor linux, preciso listas os arquivos que estão em uma pasta e mostra-lo em uma tabela para que o usuario possa escolher qual ele vai transferir, a transefrencia vai ser para um servidor Windows, mas preciso que seja via SFTP por via FTP não é permitido o acesso.
Alguem tem algumas sugestões???

5 Respostas

M

Boa tarde!

Já utilizei essa biblioteca para fazer o que precisa: http://www.jcraft.com/jsch/

Att.

V

molmedo:
Boa tarde!

Já utilizei essa biblioteca para fazer o que precisa: http://www.jcraft.com/jsch/

Att.

Obrigado Molmedo, eu tentei usar essa biblioteca mas acabei me perdendo rsrs…
poderia de dar alguma ajuda de como consigo listar os nomes dos arquivos de uma pasta? :roll:

M

Conseguiu efetuar com sucesso a conexão?

Chegou a ver o código de exemplo (http://www.jcraft.com/jsch/examples/Sftp.java)?

Nesse código, tem o seguinte trecho:

if(cmd.equals("ls") || cmd.equals("dir")){
	  String path=".";
	  if(cmds.size()==2) path=(String)cmds.elementAt(1);
	  try{
	    java.util.Vector vv=c.ls(path);
	    if(vv!=null){
	      for(int ii=0; ii<vv.size(); ii++){
//		out.println(vv.elementAt(ii).toString());

                Object obj=vv.elementAt(ii);
                if(obj instanceof com.jcraft.jsch.ChannelSftp.LsEntry){
                  out.println(((com.jcraft.jsch.ChannelSftp.LsEntry)obj).getLongname());
                }

	      }
	    }
	  }
	  catch(SftpException e){
	    System.out.println(e.toString());
	  }
	  continue;
	}

Esse código lista todos os arquivos disponíveis no nível que está.

Qual é a sua dúvida? Está dando algum erro?

V

Bem, alterei o codigo de maneira diferente e consegui mostrar os dados.
Outra duvida, tem como eu passar o arquivo do Debian pro Windows?

V

Resolvi o problema,

fiz algumas classes.

 Conectar ao servidor

public boolean conectaservidor(String user, String host, String port) {

boolean b = false;

try {

jsch = new JSch();

session = jsch.getSession(user, host, port);

ui = new MyUserInfo();

session.setUserInfo(ui);

session.connect();

channel = session.openChannel(sftp);

channel.connect();

c = (ChannelSftp) channel;

b = true;

} catch (Exception ex) {

JOptionPane.showMessageDialog(null, ex);

}

return b;

}
 Desconectar do servidor

public boolean desconectaservidor() {

boolean b = false;

try {

c.disconnect();

channel.disconnect();

session.disconnect();

b = true;

} catch (Exception ex) {

System.out.println(ex);

}

return b;

}
 Essa parte uso para alimentar a tabela

int i = c.ls(dir).toArray().length;

String s = “”;

Object[] arquivo = new Object[1];

for (int cc = 0; cc < i; cc++) {

s = c.ls(dir).get(cc).toString();

s = s.substring(56, s.length());

arquivo = new Object[i];

if (s.contains(".xml")) {

arquivo[0] = s;

// System.out.println(s);

Tabela.addRow(arquivo);

}
Classe para mover o arquivo do servidor pro pc

public boolean moveXML(String arqOld, String arqNew) {

boolean b = false;

try {

OutputStream output = new FileOutputStream(new File(destino + arqNew));

c.get(dir + arqOld, output);

output.close();

} catch (Exception e) {

System.out.println(e);

}
return b;
}
 Após mover uso essa classe pra apagar o arquivo do servidor

public void apagaXML(String arq) {

try {

c.rm(dir + arq);

//String arq2 = arq.replaceAll(".xml", “”);

<a href="//c.rename">//c.rename</a>(dir + arq, dir + arq2);

} catch (Exception ex) {

System.out.println(ex);

}

}

PS: todas essas classes eu criei junto com o frame principal pois elas trabalham com muitas variaveis e como não estava com muito tempo pra desenvolver algo mais completo fiz tudo junto pois dai não preciso ficar usando o return dos valores e tratando eles… fiz assim por preguiça mesmo :oops: mas não recomendo rsrsrs…
Muito obrigado pela ajuda e agora que esta funcionando e com mais tempo vou estruturar melhor o projeto :wink:

Quem quiser ajudar eu no The Dark Slide é só clicar no link… ajuda eu ae :oops:
http://vwdarkside.com/en/jedi/vinicius-michelan-251769

Criado 18 de julho de 2011
Ultima resposta 22 de jul. de 2011
Respostas 5
Participantes 2