Java 执行linux scp 远程取得文件和上传
发布时间:2023-03-27 14:12:18 所属栏目:教程 来源:
导读:import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
impor
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.logging.Level;
impor
import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.logging.Level; import java.util.logging.Logger; import ch.ethz.ssh2.Connection; import ch.ethz.ssh2.SCPClient; public class Scpclient { // public Scpclient(){} static private Scpclient instance; static synchronized public Scpclient getInstance(String IP,int port, String username,String passward) { if (instance == null) { instance = new Scpclient(IP,port,username,passward); } return instance; } public Scpclient(String IP,String username,String passward) { this.ip = IP; this.port = port; this.username = username; this.password = passward; } public void getFile(String remoteFile,String localTargetDirectory) { Connection conn = new Connection(ip,port); try { conn.connect(); boolean isAuthenticated = conn.authenticateWithPassword(username, password); if (isAuthenticated == false) { System.err.println("authentication Failed"); } SCPClient client = new SCPClient(conn); client.get(remoteFile,localTargetDirectory); conn.close(); } catch (IOException ex) { Logger.getLogger(SCPClient.class.getName()).log(Level.SEVERE,null,ex); } } public void putFile(String localFile,String remoteTargetDirectory) { Connection conn = new Connection(ip, password); if (isAuthenticated == false) { System.err.println("authentication Failed"); } SCPClient client = new SCPClient(conn); client.put(localFile,remoteTargetDirectory); conn.close(); } catch (IOException ex) { Logger.getLogger(SCPClient.class.getName()).log(Level.SEVERE,ex); } } public void putFile(String localFile,String remoteFileName,String remoteTargetDirectory,String mode) { Connection conn = new Connection(ip, password); if (isAuthenticated == false) { System.err.println("authentication Failed"); } SCPClient client = new SCPClient(conn); if((mode == null) || (mode.length() == 0)){ mode = "0600"; } client.put(localFile,remoteFileName,remoteTargetDirectory,mode); //重命名 ch.ethz.ssh2.Session sess = conn.openSession(); String tmpPathName = remoteTargetDirectory +File.separator+ remoteFileName; String newPathName = tmpPathName.substring(0,tmpPathName.lastIndexOf(".")); sess.execCommand("mv " + remoteFileName + " " + newPathName);//重命名回来 conn.close(); } catch (IOException ex) { Logger.getLogger(SCPClient.class.getName()).log(Level.SEVERE,ex); } } // public void putFile(String localFile,String remoteTargetDirectory) { // Connection conn = new Connection(ip,port); // try { // conn.connect(); // boolean isAuthenticated = conn.authenticateWithPassword(username, // password); // if (isAuthenticated == false) { // System.err.println("authentication Failed"); // } // SCPClient client = new SCPClient(conn); // client.put(getBytes(localFile),remoteTargetDirectory); // conn.close(); // } catch (IOException ex) { // Logger.getLogger(SCPClient.class.getName()).log(Level.SEVERE,ex); // } // } public static byte[] getBytes(String filePath) { byte[] buffer = null; try { File file = new File(filePath); FileInputStream fis = new FileInputStream(file); ByteArrayOutputStream byteArray = new ByteArrayOutputStream(1024*1024); byte[] b = new byte[1024*1024]; int i; while ((i = fis.read(b)) != -1) { byteArray.write(b,i); } fis.close(); byteArray.close(); buffer = byteArray.toByteArray(); } catch (FileNotFoundException e) { e.printstacktrace(); } catch (IOException e) { e.printstacktrace(); } return buffer; } private String ip; private int port; private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getpassword() { return password; } public void setPassword(String password) { this.password = password; } public int getPort() { return port; } public void setPort(int port) { this.port = port; } } 调用方法: Scpclient scp = Scpclient.getInstance(ip,uname,pwd); scp.putFile("本地文件路径",fileFeed.getName()+".tmp","推送文件,到服务器的目录路径",null); scp.getFile(remoteFile,localTargetDirectory); (编辑:汽车网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐