JAVA API 経由で Amazon EC2 端末に接続し、sudo 操作を実行したいと考えています。インターフェイスが非常にシンプルで使いやすいことがわかったため、SSHJ ライブラリを使用することになりました。良い点は、このライブラリを介して sudo 操作を実行できることです。サンプルコードは次のとおりです。
// 新しいセッションを開始する session = sshClient.startSession(); session.allocatePTY("vt220", 80,24,0,0,Collections.emptyMap());
Command cmd = null;
String response = null;
// your allocating a new session there
try (Session session = sshClient.startSession()) {
cmd = session.exec("sudo service riak start");
response = IOUtils.readFully(cmd.getInputStream()).toString();
cmd.join(timeout, timeUnit);
} finally {
if (cmd != null)
cmd.close();
}
ただし、返された応答には制御文字が含まれており、それらをプレーンテキストに変換したいと考えていました。
Starting riak: [60G[[0;32m OK [0;39