Golangの勉強でsshのラッパーコマンド『lssh』というのを作ってみた
Pocket

最近ちょこちょこGOを勉強するようにしてたのだが、せっかくなので何か作ってみようと考えた。
で、なんかないかなと考えたところ、結構前にPythonでsshのラッパー書いてたのを思い出した。今回はそれをGolangで書き直してみた。sshのラッパーなので、基本Linux/Mac OS Xでしか動かない(Windowsは対象外)になってる。

 https://github.com/blacknon/lssh

 

作り直しなので前作ったPythonのラッパーと基本は変更せず、「~/.lssh.conf」というtomlファイルにログイン情報を記述してコマンドを実行するだけにした。
(オプションとかちゃんと作りたいけど、まだ出来てない。設定ファイルくらいは「-f」オプションで指定させられるようにしたい。)

コマンドを実行すると以下のようにサーバ情報をリストにしてくれるので、ログインしたいサーバをカーソルキーで選択してEnterかスペースでログインさせる。
一応、pecoっぽい簡易的なフィルター機能はつけたので、サーバ数が多いときはそれで台数を絞る(全列を対象にフィルターされる)。

Sponsored Links

設定ファイルでlogを有効にすることで、(scriptコマンドではあるけど)TeraTermのログっぽいターミナルログを記録する。
フォーマットは指定できないけど、一応タイムスタンプを付与するようにしている。

 

「/etc/passwd」やsshdのauthorized_keysと組み合わせることで、ssh接続と同時に立ち上がるようにすることで踏み台としても利用できるようになっている。
(なお、SELinuxが有効になっている場合だと/etc/passwdに記述しての実行はうまくいかないかも…)

 

まだエラー処理などが不十分だったりオプションついてなかったりするので、ちょこちょこ更新してこうと思う。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*