java 远程连接linux_JAVA远程连接linux服务器读取文件(JSch)

import com.jcraft.jsch.*; import java.awt.*; import javax.swing.*; import java.io.*; public class ScpFrom{   public static void main(String[] arg){     if(arg.length!=2){       System.err.println("usage: java ScpFrom user@remotehost:file1 file2");       System.exit(-1);     }           FileOutputStream fos=null;     try{       String user=arg[0].substring(0, arg[0].indexOf('@'));       arg[0]=arg[0].substring(arg[0].indexOf('@')+1);       String host=arg[0].substring(0, arg[0].indexOf(':'));       String rfile=arg[0].substring(arg[0].indexOf(':')+1);       String lfile=arg[1];       String prefix=null;       if(new File(lfile).isDirectory()){         prefix=lfile+File.separator;       }       JSch jsch=new JSch();       Session session=jsch.getSession(user, host, 22);       // username and password will be given via UserInfo interface.       UserInfo ui=new MyUserInfo();       session.setUserInfo(ui);       session.connect();       // exec 'scp -f rfile' remotely       String command="scp -f "+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();       byte[] buf=new byte[1024];       // send '\0'       buf[0]=0; out.write(buf, 0, 1); out.flush();       while(true){ int c=checkAck(in);         if(c!='C'){  break; }         // read '0644 '         in.read(buf, 0, 5);         long filesize=0L;         while(true){           if(in.read(buf, 0, 1)<0){             // error             break;            }           if(buf[0]==' ')break;           filesize=filesize*10L+(long)(buf[0]-'0');         }         String file=null;         for(int i=0;;i++){           in.read(buf, i, 1);           if(buf[i]==(byte)0x0a){             file=new String(buf, 0, i);             break;    }         } //System.out.println("filesize="+filesize+", file="+file);         // send '\0'         buf[0]=0; out.write(buf, 0, 1); out.flush();         // read a content of lfile         fos=new FileOutputStream(prefix==null ? lfile : prefix+file);         int foo;         while(true){           if(buf.length

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值