「Groovyを使って、SSH接続してみる」
最近、Groovyにハマっている。Groovyとは何かというのは、Wikipediaを見たり、Googleで検索すれば出てくるから割愛。
Groovyの名前は知っていたけど、あまり気にしてなかった。でも使ってみたらかなり良くて、もっと早く試しておけば良かったとちょっと後悔。
必要なもの
Groovyのインストール方法は省略。Windowsであればインストーラがあるし、Linuxであっても圧縮ファイルを展開して、環境変数とパスを設定するだけなので、それほど難しくないです。
重要なのは、二つ目のライブラリ。DLしたら、圧縮ファイルの中に入っているライブラリを、GROOVY_HOME/libの下にコピーする。これで準備完了。
サンプルソース
import ch.ethz.ssh2.Connection import ch.ethz.ssh2.StreamGobbler import ch.ethz.ssh2.SCPClient def hostname = "192.168.0.2" def username = "username" def password = "password " def conn = new Connection(hostname) conn.connect() conn.authenticateWithPassword(username, password) def sess = conn.openSession() sess.execCommand("uname -a && date && uptime && who") def stdout = new StreamGobbler(sess.getStdout()) new BufferedReader(new InputStreamReader(stdout)).eachLine { line -> println line } sess.close() conn.close()
感想
このサンプルは、元々Ganymed SSH2 for Javaに添付されているJavaのコードをGroovyに置き換えた物です。せっかくGroovyで書くのだから、よりGroovyらしさを心掛けました。
ここでは"uname -a && date && uptime && who"をリモートコマンドとして実行し、結果を標準出力に表示します。
Ganymed SSH2 for Javaは、他にも公開鍵による接続、SCPによるファイルのやりとりなども出来ますので、JavaのコードからSSH接続したい場合には、中々良い感じです。
Groovyは、ライブラリの使い方を試すという目的であれば、非常に完結に書くことが出来ます。Javaをメインで使っている人は、Groovyは知っておいても損は無いです。あるいはJRubyでも同様のことは出来ると思いますから、そちらで試してみても良いかもしれません。
Javaのライブラリを、Javaで書くよりも簡潔に書くというのは、試してみると結構やみつきになります。
参考
内容とは直接関係ないけど、以下の本も中々面白かったです。Groovyについての特集もあります。
- 作者: 沖林正紀
- 出版社/メーカー: 技術評論社
- 発売日: 2007/10/11
- メディア: 大型本
- クリック: 18回
- この商品を含むブログ (7件) を見る