近期項目中需要把windows上的一個腳本上傳到linux的服務器上,於是上網搜了下方法,可以通過scp來做,代碼如下:
package com.infobird.scp;
import java.io.IOException;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
public class SCPUtil {
private Connection conn;
private String ip;
private String user;
private String password;
public SCPUtil(String ip, String user, String password) {
this.ip = ip;
this.user = user;
this.password = password;
}
private boolean login() throws IOException {
conn = new Connection(ip);
conn.connect();
return conn.authenticateWithPassword(user, password);
}
public int exec(String cmds) {
int ret = -1;
try {
if(login()) {
SCPClient scpClient = conn.createSCPClient();
//服務器端的文件下載到本地的目錄下
scpClient.get("/data/test_hbase.pig", "F:/log/");
//將本地文件上傳到服務器端的目錄下
scpClient.put("D:/Workspaces/others1/TaskPlatform/src/main/resources/TestTemplate.pig", "/data/");
} else {
System.out.println("登錄遠程機器失敗" + ip);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if(conn != null) {
conn.close();
}
}
return ret;
}
public static void main(String args[]) {
SCPUtil scp = new SCPUtil("10.122.**.**", "root", "******");
scp.exec(null);
}
}