はじめに
事前に以下のライブラリを用意します。
- JSch
- http://www.jcraft.com/jsch/
- ※"jsch-0.1.54.jar"のリンクからダウンロード
実装例
サンプルでは、動作確認しやすいようにmainメソッドで実行できるようにしてあります。
SSHTest.java
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.SftpException;
import java.io.BufferedInputStream;
import java.io.ByteArrayOutputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
/**
*
* @author tool-taro.com
*/
public class SSHTest {
public static void main(String[] args) throws JSchException, SftpException, FileNotFoundException, IOException {
//サーバ
String host = "ホスト名";
//ポート
int port = 22;
//ユーザ
String user = "ユーザ";
//パスワード
String password = "パスワード";
//コマンド
String command = "date";
JSch jsch;
Session session = null;
ChannelExec channel = null;
BufferedInputStream bin = null;
try {
//接続
jsch = new JSch();
session = jsch.getSession(user, host, port);
//known_hostsのチェックをスキップ
session.setConfig("StrictHostKeyChecking", "no");
session.setPassword(password);
session.connect();
channel = (ChannelExec) session.openChannel("exec");
channel.setCommand(command);
channel.connect();
//コマンド実行
bin = new BufferedInputStream(channel.getInputStream());
ByteArrayOutputStream bout = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
int length;
while (true) {
length = bin.read(buf);
if (length == -1) {
break;
}
bout.write(buf, 0, length);
}
//標準出力
System.out.format("実行結果=%1$s", new String(bout.toByteArray(), StandardCharsets.UTF_8));
}
finally {
if (bin != null) {
try {
bin.close();
}
catch (IOException e) {
}
}
if (channel != null) {
try {
channel.disconnect();
}
catch (Exception e) {
}
}
if (session != null) {
try {
session.disconnect();
}
catch (Exception e) {
}
}
}
}
}
動作確認
$ javac SSHTest.java
$ java SSHTest
$ 実行結果=Mon Feb 8 01:26:47 JST 2016
環境
-
開発
- Windows 10 Pro
- JDK 1.8.0_112
- NetBeans IDE 8.2
-
動作検証
- CentOS Linux release 7.2
- JDK 1.8.0_112
Webツールも公開しています。
Web便利ツール@ツールタロウ