仕事で必要になったので。
ファイル連携をscpでやりたい、って言われても・・・
こっちはもうマウントを想定したつくりにしちゃってたんだけど。。
めんどくさっ。
で。いろいろ見たところ、commons vfsプロジェクトがそれをできるらしいけど、
http://commons.apache.org/vfs/
バグやらなんやらがあるだとかないだとかで、なんとなく却下。
で、まさにコレ、というやり方を実施している方がいて
http://syo.cocolog-nifty.com/freely/2007/11/javascp_57b2.html
下の方にに書いてるソースも、ここに書いてることと同じ。
ちなみにjarは↓からダウンロード。
http://www.ganymed.ethz.ch/ssh2/
じゃ、ソースをでろでろっと書く。
####### ここから #######
import java.io.IOException;
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.SCPClient;
/**
* javaでSCP送受信するクラス
*
* @author smd
*/
public class TestSCP {
/**
* 空コンストラクタ
*/
public TestSCP() {
}
/**
* お約束のmainメソッド
public static void main(String[] args) {*
* @param args
*/
// 接続情報を用意
String host = "XXX.XXX.XXX.XXX";
String name = "username";
String pass = "userpass";
// インスタンス作成 (インスタンスにする必要ないけどね^^;)
TestSCP testSCP = new TestSCP();
try {
// SCP処理実行
testSCP.doProc(host, name, pass);
}
catch (IOException e) {
// 例外処理は全て IOException らしいよ。
e.printStackTrace();
}
}
/**
* SCPの送受信を実行するメソッド
*
* @param host 接続先IP
* @param name 接続ユーザ
* @param pass パスワード
* @throws IOException
*/
public void doProc(String host, String name, String pass) throws IOException {
// SCP用のコネクション確立
Connection connection = new Connection(host);
connection.connect();
// 認証
connection.authenticateWithPassword(name, pass);
// 送受信を実施するインスタンス作成
SCPClient scp = connection.createSCPClient();
// リモート→ローカル
scp.get("/tmp/hoge.txt", "C:/tmp/");
// ローカル→リモート
scp.put("C:/tmp/fuga.txt", "/tmp/");
// コネクションの切断
connection.close();
}
}
####### ここまで #######
つーか、こういうソースを書くときってameba面倒だな。
カイゼンしてくれよ、カイゼン。