JVMからSSHのポート転送でJDBC接続する
はじめに
仕事上、windowsの端末からリモートのlinuxのDBにデータを送る必要があったのですが、 GUIでの手作業はしんどいので、簡単なツールを作ることにしました。
幸いなことにJVMが入っているので、JavaのSSHクライアントとJDBCを使ってやってみました。
検証
grimrose/ssh-port-forward-study
対象のサーバは、模擬的にDockerで作りました。
使用した言語は、慣れているgroovyと仕事で使ってるscala、ライブラリは、以下の通り。
- groovy
- scala
どちらのSSHクライアントもJSchをベースにしているのですが、Javaで書くよりだいぶ楽になっています。
SSHからリモートのコマンドやシェルスクリプトを動作させたり、実行結果の文字列やexit codeを受け取って更に次に繋げられるようになっていたり、 その他にもsftpやいろいろコマンドが用意されているみたいなので、デプロイツールとしてやミドルウェアの検証にも使えそうです。
おわりに
windowsという制約はちょっとしたツールを作るだけでもホントにしんどいので、JVMがあってよかったと思ってます。
JVMやその他の言語でもランタイムをwindowsで動かせるようにしている人たちに感謝しつつ、日々の業務を楽にしていきたいと思います。