Pessoal , olha so … eu estava querendo fazer upload de arquivos com ftp com ssh…
já pesquisei algo sobre isso, mas ate agora nao vi nenhum codigo em que pudesse me inspirar…
alguem sabe se aqui no guj ja existe algum topico com isso , ou ate mesmo de outros sites , com codigo java…
ajuda ae !!!
Tem como explicar melhor como será a aplicação?
biozit
Abril 17, 2007, 4:00pm
#5
o jsch é muito bom…ja usei…funciona bem…mas nu entendi o esquema do ftp…ja fiz acesso a ssh com ele
na verdade faco upload de imagens para um diretorio no servidor, gravando referencia do caminho da imagem no banco… porem tenho que usar ssh (pedido pelo chefe) para fazer a transferencia desses arquivos para o servidor ( de forma segura)…
nunca usei o ssh , to usando FTPClient no codigo,…
nao sei nem por onde comecar…
entenderam amigos?
biozit
Abril 17, 2007, 4:48pm
#7
Alguem sabe algum tutorial em portugues de ssh com java
Se não me engano você precisa do SFTP. E para isso basta usar a biblioteca Jsch que já foi indicado pelo pessoal acima. Junto com a distribuição do Jsch tem uma pasta com exemplos.
bem … eu comecei a usar com o exemplo do scpto, porem alguns erros acontecem, tipo … channel broken… e as vezes ele entra num if do código que fecha a minha aplicacao , nao to sabendo o porque de estar dando o erro… ja debuguei no netbeans… porem nao consigo entender o erro…
alguem que ja usou o ssh… ja viu esse erro de canal quebrado???
Gente preciso de ajuda !!! preciso de alguem q ja tenha feito algo com SSH pra me ajudar !!
Se for muito complicado, é melhor usar o utilitário de linha de comando.
Como é uma funcionalidade “marginal” de sua aplicação, não vale a pena ficar brigando “muito tempo” com isso.
Se for no Windows, use o “pscp” ou o “psftp” que vêm com o Putty ( http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html ).
Se for no Linux ou Unix, use o “scp” ou o “sftp” que vêm com o pacote do SSH (ou OpenSSH).
cara … nao entendi muito bem
mas tenho uma classe ScptoFtp que esta enviaando meu arquivo… da so uma olhada no meu codigo
import com.jcraft.jsch.*;
import java.awt.Image;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Locale;
import javax.imageio.IIOImage;
import javax.imageio.ImageIO;
import javax.imageio.ImageWriteParam;
import javax.imageio.ImageWriter;
import javax.imageio.plugins.jpeg.JPEGImageWriteParam;
import javax.imageio.stream.ImageOutputStream;
import javax.swing.JOptionPane;
/**
*
* @author renan
*/
public class ScpToFtp {
/** Creates a new instance of ScpToFtp */
public ScpToFtp(String fileNome,String usuario, String passwd,String fileNome2) throws Exception {
FileInputStream fis=null;
String lfile= fileNome;
String user=usuario;
final String senha = passwd;
String host="10.3.186.22";
String rfile=fileNome2;
//aqui ele abre a conexao
JSch jsch=new JSch();
Session session=jsch.getSession(user, host, 22);
// username and password will be given via UserInfo interface.
UserInfo ui=new UserInfo() {
public String getPassphrase() {
return null;
}
public String getPassword() {
return senha;
}
public boolean promptPassword(String string) {
return true;
}
public boolean promptPassphrase(String string) {
return true;
}
public boolean promptYesNo(String string) {
return true;
}
public void showMessage(String string) {
}
};
session.setUserInfo(ui);
session.connect();
// exec 'scp -t rfile' remotely
String command="scp -p -t "+rfile;
Channel channel=session.openChannel("exec");
((ChannelExec)channel).setCommand(command);
// get I/O streams for remote scp
OutputStream out=channel.getOutputStream();
InputStream in=channel.getInputStream();
channel.connect();
// send "C0644 filesize filename", where filename should not include '/'
long filesize=(new File(lfile)).length();
command="C0644 "+filesize+" ";
if(lfile.lastIndexOf('/')>0){
command+=lfile.substring(lfile.lastIndexOf('/')+1);
} else{
command+=lfile;
}
command+="\n";
out.write(command.getBytes());
out.flush();
// send a content of lfile - manadan o arquivo
fis=new FileInputStream(lfile);
byte[] buf=new byte[1024];
while(true){
int len=fis.read(buf, 0, buf.length);
if(len<=0) break;
out.write(buf, 0, len); //out.flush();
}
fis.close();
fis=null;
// send '\0'
buf[0]=0; out.write(buf, 0, 1);
out.flush();
out.close();
channel.disconnect();
session.disconnect();
}