これを行うライブラリはたくさんあります。公式の OpenSSH Web サイトにも記載されているGanymed SSH-2をお勧めします。同じサイトで、Java に使用できる他のライブラリーも見つけることができます。
ls -r
これは、 Ganymed SSH-2 を使用して、SSH 経由で実行されるコマンドの例です。
import ch.ethz.ssh2.Connection;
import ch.ethz.ssh2.Session;
import ch.ethz.ssh2.StreamGobbler;
[...]
public static ArrayList<String> lsViaSSH(String hostname, String username, String password, String dir) {
ArrayList<String> ls = new ArrayList<String>();
try
{
Connection conn = new Connection(hostname);
conn.connect();
boolean isAuthenticated = conn.authenticateWithPassword(username, password);
if (isAuthenticated == false) {
return null;
}
Session sess = conn.openSession();
sess.execCommand("ls -r " + dir);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true)
{
String line = br.readLine();
if (line == null)
break;
ls.add(line);
}
sess.close();
conn.close();
}
catch (IOException e)
{
return null;
}
if(StringUtils.isEmpty(ls.get(0)))
return null;
return ls;
}
SSH 経由でコマンドを実行するために必要な機能はこれだけではありませんが、これが出発点として役立つことを願っています。